来自EC2的AWS S3 Bucket Access

hid*_*con 11 amazon-s3 amazon-ec2 amazon-web-services

我需要启动一个S3存储桶,以便我的EC2实例可以访问存储图像文件.EC2实例需要读/写权限.我不想让S3存储桶公开,我只希望EC2实例能够访问它.

另一个问题是我的EC2实例正在由OpsWorks管理,我可以根据负载/使用情况启动不同的实例.如果我通过IP限制它,我可能并不总是知道EC2实例具有的IP.我可以通过VPC限制吗?

我是否必须为静态网站托管启用我的S3存储桶?我是否需要公开存储桶中的所有文件以使其正常工作?

Mat*_*ser 12

您不需要将存储桶公开读取,也不需要将文件公共可读.桶和它的内容可以保密.

不要基于IP地址限制对存储桶的访问,而是根据EC2实例正在使用的IAM角色对其进行限制.

  1. 为EC2实例创建IAM EC2实例角色.
  2. 使用该角色运行EC2实例.
  3. 为此IAM角色提供访问S3存储桶的策略.

例如:

{
  "Version": "2012-10-17",
  "Statement":[{
    "Effect": "Allow",
    "Action": "s3:*",
    "Resource": ["arn:aws:s3:::my_bucket",
                 "arn:aws:s3:::my_bucket/*"]
    }
  ]
} 
Run Code Online (Sandbox Code Playgroud)
  1. 如果要限制对存储桶本身的访问,请尝试使用S3存储桶策略.

例如:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": ["arn:aws:iam::111122223333:role/my-ec2-role"]
      },
      "Action": "s3:*",
      "Resource": ["arn:aws:s3:::my_bucket",
                   "arn:aws:s3:::my_bucket/*"]
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

其他信息:http://blogs.aws.amazon.com/security/post/TxPOJBY6FE360K/IAM-policies-and-Bucket-Policies-and-ACLs-Oh-My-Controlling-Access-to-S3-Resourc


BMW*_*BMW 2

IAM 角色是适合您的解决方案。

您需要创建具有 s3 访问权限的角色,如果 ec2 实例在没有任何角色的情况下启动,则必须使用分配的角色重新构建它。

在此输入图像描述

请参阅:允许 AWS OpsWorks 代表您行事

  • 为什么必须终止 ec2 实例并附加角色?你不需要。您可以为 ec2 动态附加角色 (2认同)