我使用的是最新版本的s3cmd 1.5.2。根据这篇文章,1.5.0-alpha2支持IAM角色,所以我假设1.5.2也必须支持这一点。我在这篇文章中提到的s3cfg文件中添加了"security_token"。但是我仍然得到错误"error: S3错误:您提供的AWS Access Key Id在我们的记录中不存在"。是我做错了什么,还是这个版本不支持IAM角色?
我自己想出了答案。在深入研究s3cmd代码后,发现我们需要在s3cfg文件中添加"security_token",而不是像文章和其他来源中提到的那样添加"access_token"。如果您在与角色关联的集群上使用s3cmd,那么也不需要传递任何s3cfg文件。1.5.0-alpha2及以上版本均支持IAM Roles。
目前,建议使用AWS CLI (command line Interface)。
与任何使用AWS SDK的软件一样,如果Amazon EC2实例是带角色启动的,AWS CLI将自动使用基于角色的凭据。凭据也可以通过环境变量或配置文件指定。