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

3
我正在尝试使用允许对那些s3存储桶进行完全访问的IAM配置文件创建的实例来访问一些s3存储桶。我能够使用aws cli执行所需操作。然而,我的应用程序是用Ruby编写的,并使用fog gem。使用fog,我无法访问这些存储桶。我只得到了Access Denied。此外,我获取了所需的密钥: ``` 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 gem,尝试使用fog-aws gem。希望它能解决你的问题。 - cmthakur
谢谢@cmthakur,我会试一下。 - sameergautam
S3存储桶的访问权限是设置在IAM用户上还是存储桶本身?IAM用户和S3存储桶是否属于同一个AWS根账户? - Amit Kumar Gupta
@FrederickCheung,因为我能够使用aws cli列出存储桶,我认为它使用的是boto。如果我错了,请纠正我。 - sameergautam
@AmitKumarGupta,我已经为IAM用户设置了权限,而且该用户属于同一个根AWS账户。 - sameergautam
AWS CLI 是构建在 botocore 上的,而不是 boto。但是,boto 对于 IAM 角色和凭据具有完全支持。 - garnaat
1个回答

2
除了访问密钥和秘密访问密钥之外,像实例元数据提供的临时凭证也有一个会话令牌。如果没有该令牌,则凭证无效。
当前版本的fog / fog-aws支持为您获取实例凭证,例如:
storage = Fog::Storage::AWS.new(region: "eu-west-1", use_iam_profile:true)

在凭证过期之前,它还会重新获取凭证


谢谢@frederick,它起作用了。我甚至不需要提及地区。 - sameergautam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接