我正在尝试在我的应用程序中使用 aws-sdk-go。它在 EC2 实例上运行。现在在文档的配置凭证中,https://docs.aws.amazon.com/sdk-for-go/api/,它说它将查找*Environment Credentials - Set of environment variables that are useful when sub processes are created for specific roles.* Shared Credentials file (~/.aws/credentials) - This file stores your credentials based on a profile name and is useful for local development.*EC2 Instance Role Credentials - Use EC2 Instance Role to assign credentials to application running on an EC2 instance. This removes the need to manage credential files in production.`最好的顺序不是相反的顺序吗?但我的主要问题是我是否需要询问实例是否有角色,然后使用它来设置凭据(如果它有角色)?这是我不确定我需要做什么以及如何做的地方。我确实尝试了一个简单的测试来创建一个空配置,基本上只设置区域并在具有角色的实例上运行它,它似乎“有效”但在这种情况下,我不确定是否需要显式设置作用与否。awsSDK.Config{ Region: awsSDK.String(a.region), MaxRetries: awsSDK.Int(maxRetries), HTTPClient: http.DefaultClient,}我只想确认这样做是否正确。我的想法是我需要做类似下面的事情 role = use sdk call to get role on machine set awsSDK.Config { Credentials: credentials form of role, ... } issue service command with returned client.任何更多的文档/指针都会很棒!
2 回答
慕标琳琳
TA贡献1830条经验 获得超9个赞
我从未使用过 go SDK,但如果未从任何其他来源找到凭据,我使用的 AWS SDK 会自动使用 EC2 实例角色。
如果您使用这样的代码,SDK 将按以下顺序查找凭据:
在环境变量中。(不是 .NET SDK,如前所述。)
在中央凭证文件中(~/.aws/credentials 或 %USERPROFILE%.awscredentials)。
在现有默认的特定于 SDK 的配置文件中(如果存在)。如果您在进行这些更改之前一直在使用 SDK,就会出现这种情况。
对于 .NET SDK,在 SDK Store 中(如果存在)。
如果代码在 EC2 实例上运行,则通过 Amazon EC2 的 IAM 角色。在这种情况下,代码从实例元数据服务中获取临时安全凭证;凭据具有从与实例关联的角色派生的权限。
偶然的你
TA贡献1841条经验 获得超3个赞
在我的应用程序中,当我需要连接到 AWS 资源时,我倾向于使用具有特定预定义 IAM 角色的访问密钥和秘密密钥。假设我有这两个,我用来创建会话的代码是:
awsCredentials := credentials.NewStaticCredentials(awsAccessKeyID, awsSecretAccessKey, "") awsSession = session.Must(session.NewSession(&aws.Config{ Credentials: awsCredentials, Region: aws.String(awsRegion), }))
当我使用它时,这两个键通常被指定为环境变量(如果我部署到 docker 容器)。
- 2 回答
- 0 关注
- 138 浏览
添加回答
举报
0/150
提交
取消