我的应用程序是否需要请求 ec2 实例上的角色来配置会话或将其留空?

我正在尝试在我的应用程序中使用 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.

任何更多的文档/指针都会很棒!


蓝山帝景
浏览 116回答 2
2回答

慕标琳琳

我从未使用过 go SDK,但如果未从任何其他来源找到凭据,我使用的 AWS SDK 会自动使用 EC2 实例角色。如果您使用这样的代码,SDK 将按以下顺序查找凭据:在环境变量中。(不是 .NET SDK,如前所述。)在中央凭证文件中(~/.aws/credentials 或 %USERPROFILE%.awscredentials)。在现有默认的特定于 SDK 的配置文件中(如果存在)。如果您在进行这些更改之前一直在使用 SDK,就会出现这种情况。对于 .NET SDK,在 SDK Store 中(如果存在)。如果代码在 EC2 实例上运行,则通过 Amazon EC2 的 IAM 角色。在这种情况下,代码从实例元数据服务中获取临时安全凭证;凭据具有从与实例关联的角色派生的权限。

偶然的你

在我的应用程序中,当我需要连接到 AWS 资源时,我倾向于使用具有特定预定义 IAM 角色的访问密钥和秘密密钥。假设我有这两个,我用来创建会话的代码是:awsCredentials := credentials.NewStaticCredentials(awsAccessKeyID, awsSecretAccessKey, "") awsSession = session.Must(session.NewSession(&aws.Config{             Credentials: awsCredentials,             Region:      aws.String(awsRegion),         }))当我使用它时,这两个键通常被指定为环境变量(如果我部署到 docker 容器)。
打开App,查看更多内容
随时随地看视频慕课网APP