当从一个使用TokenExchangeService的Greengrass组件调用boto3.client()时,boto3偶尔会引发CredentialRetrievalError异常。

0

【以下的问题经过翻译处理】 你好! 我碰到了一个问题,我使用Greengrass组件时启动后不久就会崩溃。该组件使用boto3连接S3,S3相关的权限在GreengrassV2TokenExchangeRole中。在组件的recipe中,指定了对TokenExchangeService的依赖:

  aws.greengrass.TokenExchangeService:
    VersionRequirement: '^2.0.0'
    DependencyType: HARD

代码的相关部分如下:

s3_connection_config = botocore.config.Config(
    retries = {
        'max_attempts': 10,
        'mode': 'standard'
   }
)
print("Creating boto3 S3 client...")
s3_client = boto3.client('s3', config=s3_connection_config)

使用s3_connection_config应用重试配置对调用boto3.client()时抛出的错误没有任何影响-脚本会崩溃并重新启动Greengrass组件,直到崩溃次数足够多才被认为系统错误。我们可以使用try-except创建自己的重试机制,但这是正确的方法吗?TokenExchangeService是否存在bug?

下面是日志:

2023-04-12T08:52:06.864Z [INFO] (Copier) FirmwareCourier: stdout. Creating boto3 S3 client.... {scriptName=services.FirmwareCourier.lifecycle.Run, serviceName=FirmwareCourier, currentState=RUNNING}
2023-04-12T08:52:11.668Z [WARN] (Copier) FirmwareCourier: stderr. Traceback (most recent call last):. {scriptName=services.FirmwareCourier.lifecycle.Run, serviceName=FirmwareCourier, currentState=RUNNING}
2023-04-12T08:52:11.669Z [WARN] (Copier) FirmwareCourier: stderr. File "/home/ggc_user/.local/lib/python3.9/site-packages/botocore/credentials.py", line 1985, in fetch_creds. {scriptName=
profile picture
专家
已提问 5 个月前6 查看次数
1 回答
0

【以下的回答经过翻译处理】 报告的错误是500错误。请打开greengrass日志文件查看问题(/greengrass/v2/logs/greengrass.log)。

如果偶尔出现问题,那么是的,您应该使用try-except重试。

profile picture
专家
已回答 5 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则