关于ruby AWS sdk、身份验证(auth)和Greengrass的问题。

0

【以下的问题经过翻译处理】 我试着按照使用Greengrass组件身份验证的文档操作,但遇到了一个令人困惑的问题。

据我所知,在Greengrass环境中,只要设置了自动环境变量,身份验证就会自动处理。

(具体而言是AWS_CONTAINER_AUTHORIZATION_TOKEN和AWS_CONTAINER_CREDENTIALS_FULL_URI)

当我使用一个虚拟测试的Ruby程序时,这确实可以工作,例如

wrapper = Aws::IAM::Client.new wrapper.get_user

但是当我把测试程序换成使用timestream插件的fluentd时,却遇到了身份验证错误,

失败清空缓存 buffer. retry_times=0 next_retry_time=2023-04-12 17:54:12 +0000 chunk="5f9274b9cd65f79f9897b62d5fca25ed" error_class=Aws::Errors::EndpointDiscoveryError error="Endpoint discovery failed for the operation or discovered endpoint is not working, request will keep failing until endpoint discovery succeeds or :endpoint option is provided."

这让我感到很困惑。为什么相同的Ruby AWS库在一个情况下可行,但在另一个情况下失败呢?

另外补充一点,操作系统是Ubuntu 20.04。

profile picture
专家
已提问 3 个月前11 查看次数
1 回答
0

【以下的回答经过翻译处理】 您遇到的错误与凭据无关,而是由于Timestream客户端无法确定要连接的终端点引起的。Timestream使用蜂窝架构,终端点是不固定的。AWS SDK实现了终端点发现模式,显然这在您的Greengrass组件内失败了。您应该验证与Greengrass TES角色相关联的权限是否允许“timestream:DescribeEndpoints”操作。

profile picture
专家
已回答 3 个月前

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

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

回答问题的准则