来自EC2的AWS S3 Bucket Access

时间:2015-12-03 04:03:10

标签: amazon-web-services amazon-s3 amazon-ec2

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

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

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

3 个答案:

答案 0 :(得分:9)

您不需要将存储桶公开读取,也不需要将文件公开读取。桶及其内容可以保密。

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

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

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

      {
        "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/*"]
          }
        ]
      }
      

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

答案 1 :(得分:1)

IAM角色是您的解决方案。

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

enter image description here

参考:Allowing AWS OpsWorks to Act on Your Behalf

答案 2 :(得分:1)

这可以非常简单地完成。 请执行以下步骤:

  • 在控制台上打开AWS EC2。
  • 选择实例并导航至操作。
  • 选择实例设置,然后选择“附加/替换IAM角色”
  • 创建一个新角色,并将S3FullAccess策略附加到该角色。

完成此操作后,连接到AWS实例,其余操作将通过以下CLI命令完成:

  • aws s3 cp文件位置/文件名s3:// bucketname

请注意...文件位置是指本地地址。而bucketname是您的存储桶的名称。 另请注意:如果您的实例和S3存储桶在同一帐户中,则可以这样做。 干杯。