我正在尝试从应用IAM配置文件创建的实例访问某些s3存储桶,该配置文件允许完全访问这些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'`
并试图访问桶。再次,访问被拒绝。
有什么我应该错过的吗?
答案 0 :(得分:2)
除了访问密钥和秘密访问密钥之外,临时凭证(例如实例元数据提供的凭证)也具有会话令牌 - 没有令牌凭证无效。
当前版本的fog / fog-aws支持为您提取实例凭证,例如
storage = Fog::Storage::AWS.new(region: "eu-west-1", use_iam_profile:true)
这也会在凭据到期之前重新获取凭据