应用程序可以通过多种方式发现 AWS 凭证。任何使用AWS SDK 的软件都会自动查找这些位置。这包括AWS Command-Line Interface (CLI),这是一个使用 AWS 开发工具包的 Python 应用程序。
你的粗体字是指下面的#3:
1.环境变量
SDK 将查找 AWS_ACCESS_KEY_ID 和 AWS_SECRET_ACCESS_KEY 环境变量。这是提供凭据的很棒方法,因为不会在 github 或其他存储库中意外包含凭据文件的危险。在 Windows 中,使用系统控制面板设置变量。在 Mac/Linux 中,只需 EXPORT 来自 shell 的变量。
凭据是在创建 IAM 用户 时提供的。您有责任将这些凭据放入环境变量中。
2。本地凭证文件
SDK 会查找本地配置文件,例如:
~/.aws/credentials
C:\users\awsuser\.aws\credentials
这些文件非常适合存储用户特定的凭据,实际上可以存储多个配置文件,每个配置文件都有自己的凭据。这对于在 Dev 和 Test 等不同环境之间切换很有用。
凭据是在创建 IAM 用户 时提供的。将这些凭据放入配置文件是您的责任。
3. Amazon EC2 实例上的 IAM 角色
IAM 角色可以在启动时与 Amazon EC2 实例相关联。然后将通过实例元数据服务通过 URL 自动提供临时凭证:
http://instance-data/latest/meta-data/iam/security-credentials/<role-name>/
这将返回包含 AWS 凭证的元数据,例如:
{
"Code" : "Success",
"LastUpdated" : "2015-08-27T05:09:23Z",
"Type" : "AWS-HMAC",
"AccessKeyId" : "ASIAI5OXLTT3D5NCV5MS",
"SecretAccessKey" : "sGoHyFaVLIsjm4WszUXJfyS1TVN6bAIWIrcFrRlt",
"Token" : "AQoDYXdzED4a4AP79/SbIPdV5N8k....lZwERog07b6rgU=",
"Expiration" : "2015-08-27T11:11:50Z"
}
这些凭证继承了启动实例时分配的 IAM 角色的权限。它们每 6 小时自动轮换一次(注意此示例中的 Expiration,大约在 LastUpdated 时间后 6 小时。
使用 AWS 开发工具包的应用程序将自动查看此 URL 以检索安全凭证。当然,它们只有在 Amazon EC2 实例上运行时才可用。
凭证提供者链
每个特定的 AWS 开发工具包(例如 Java、.Net、PHP)可能会在不同的位置寻找凭证。有关详细信息,请参阅相应的文档,例如: