gpt4 book ai didi

aws-sdk-go 在使用 kube2iam 时获取 NoCredentialProviders

转载 作者:行者123 更新时间:2023-12-01 04:40:47 30 4
gpt4 key购买 nike

我们正在使用 kube2iam在容器内传递 ec2 角色。有时我们会得到:

Error: Failed to list store contents: NoCredentialProviders: no valid providers in chain. Deprecated.
For verbose messaging see aws.Config.CredentialsChainVerboseErrors

但是如果我们重新启动容器 - 凭据会被获取。

kube2iam takes time 时,我们似乎遇到了问题传递凭据。

我确实找到了 this commit这使得超时时间更短。

所以问题是:
有没有办法在 aws-sdk-go 中引入类似于 AWS_METADATA_SERVICE_TIMEOUT 的延迟重试/ AWS_METADATA_SERVICE_NUM_ATTEMPTS ?

最佳答案

Go AWS SDK 没有 AWS_METADATA_SERVICE_TIMEOUT/AWS_METADATA_SERVICE_NUM_ATTEMPTS 的直接概念。 ,但它确实有类似的概念。

默认情况下,当 EC2Metadata类型已创建(由默认凭据链使用),a timeout override of 1 second is sethttp.Client .如果您的 kube2iam在该时间内未响应,凭证调用将失败。

您可以使用 EC2MetadataDisableTimeoutOverride 禁用此行为。您的 aws.Config 上的选项创建 session.Session 时.这样做时,超时将匹配 http.DefaultClient 的行为.

例子:

cfg := aws.NewConfig().
WithEC2MetadataDisableTimeoutOverride(true).
WithCredentialsChainVerboseErrors(true)

sess, _ := session.NewSession(cfg)

db := dynamodb.New(sess) // etc.

关于aws-sdk-go 在使用 kube2iam 时获取 NoCredentialProviders,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50415647/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com