我们希望在S3上存储一些数据,并且只允许EC2实例或具有特定IAM角色的特定用户访问它们.不幸的是,我们在这方面遇到了一些麻烦.
我们就像这样在桶上制定政策
{
"Version": "2012-10-17",
"Id": "SamplePolicy",
"Statement": [
{
"Sid": "Stmt1331136294179",
"Effect": "Deny",
"NotPrincipal": {
"AWS": [
"arn:aws:iam::our-account-number:user/the-user",
"arn:aws:iam::our-account-number:role/the-role"
]
},
"Action": "s3:*",
"Resource": "arn:aws:s3:::the-bucket/*"
},
{
"Sid": "Stmt1331136364169",
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::our-account-number:user/the-user",
"arn:aws:iam::our-account-number:role/the-role"
]
},
"Action": "s3:*",
"Resource": "arn:aws:s3:::the-bucket/*"
}
]}
Run Code Online (Sandbox Code Playgroud)
当我们使用用户密钥访问Bucket(使用boto)时,它可以在本地计算机或任何EC2实例中正常工作.
但是,当我们从Boto访问桶时,我们得到了
ClientError:调用GetObject操作时发生错误(AccessDenied):拒绝访问
我已经确认该实例具有正确的IAM角色
curl http://169.254.169.254/latest/meta-data/iam/info/
{
"Code" : "Success",
"LastUpdated" : "2015-10-22T09:09:31Z",
"InstanceProfileArn" : "our-account-number:instance-profile/the-role",
"InstanceProfileId" : "instance-rpofile-id"
}
Run Code Online (Sandbox Code Playgroud)
我还尝试从存储桶中删除该策略,这确实使其可以再次访问.任何想法如何处理这个?
我在这里分享的示例是我为调试而做的简化版本.在生产中,我们希望强制使用KMS加密对象,并在密钥上也有访问策略.我们非常喜欢这个解决方案,如果可以,我们更愿意保留它.
谢谢
我正在试验 dynamo db 和 lambda,但在以下流程中遇到了问题:
Lambda A 由放置到 S3 事件触发。它获取对象,一个音频文件,计算其持续时间并在 dynamoDB 中每 30 秒写入一条记录。
Lambda B 由 dynamoDB 触发,从 S3 下载文件并对 dynamo 行中定义的 30 秒记录进行操作。
我的问题是,当我运行这个流程时,函数 A 通过函数 B 写入发电机所需的所有行
配置
我已经确认的事情
有没有人遇到过类似的问题?知道接下来要检查什么吗?谢谢