使用 IAM 配置文件创建实例后无法访问 s3 存储桶

Can't access s3 buckets after creating instance using IAM profile

我正在尝试从使用允许完全访问这些 s3 存储桶的 IAM 配置文件创建的实例访问一些 s3 存储桶。我能够使用 aws cli 执行所需的操作。但是,我的应用程序是用 Ruby 编写的,并使用了 fog gem。使用雾,我无法访问那些桶。我得到的只是拒绝访问。此外,我还抓取了所需的密钥: aws_access_key_id=`curl http://169.254.169.254/latest/meta-data/iam/security-credentials/${instance_profile} | grep AccessKeyId | cut -d':' -f2 | sed 's/[^0-9A-Z]*//g'` aws_secret_access_key=`curl http://169.254.169.254/latest/meta-data/iam/security-credentials/${instance_profile} | grep SecretAccessKey | cut -d':' -f2 | sed 's/[^0-9A-Za-z/+=]*//g'` 并尝试访问存储桶。再次,访问被拒绝。

有什么我应该遗漏的吗?

除了访问密钥和秘密访问密钥,实例元数据提供的临时凭证也有会话令牌 - 没有令牌,凭证无效。

当前版本的 fog / fog-aws 支持为您获取实例凭证,例如

storage = Fog::Storage::AWS.new(region: "eu-west-1", use_iam_profile:true)

这还将在凭据过期前重新获取凭据