我可以使用awscli在存储桶上添加/修改静态网站策略吗?

时间:2016-05-18 01:45:36

标签: amazon-web-services amazon-s3

我试图在S3中自动创建/上传网站到指定的存储桶。

比如说我有这个政策模板:

{
  "Version":"2012-10-17",
  "Statement":[{
    "Sid":"PublicReadGetObject",
        "Effect":"Allow",
      "Principal": "*",
      "Action":["s3:GetObject"],
      "Resource":["arn:aws:s3:::example-bucket/*"
      ]
    }
  ]
}

我使用以下方式创建存储桶:

aws s3api create-bucket --bucket $bucket --region eu-central-1 --create-bucket-configuration LocationConstraint=eu-central-1

如何从上面的json字符串中应用策略到此存储桶以及如何enable website hosting - 所有这些使用awscli而不是amazon gui?

2 个答案:

答案 0 :(得分:2)

如果有人对此方法感兴趣,我最终使用(现在)以下命令:

bucket=$1
region=$2

# Create bucket
aws s3api create-bucket --bucket $bucket --region $region --create-bucket-configuration LocationConstraint=$region

# Apply policy to allow get access to public
policy=$(cat /tmp/policy)
aws s3api put-bucket-policy --bucket $bucket --policy "$policy"

# Enable static hosting
aws s3 website s3://$bucket/ --index-document index.html

# Deploy app production distribution to new bucket
aws s3 cp dist/prod/ s3://$bucket --recursive

# See the results
open "http://$bucket.s3-website.$region.amazonaws.com"

但是我接受了另一个答案,因为对于更高级的要求,这可能变得非常复杂 - 与在python脚本中使用boto3相比,它容易接受不同的参数组合,例如跳过创建存储桶,从配置中读取默认区域等。

答案 1 :(得分:1)

请参阅\\下的命令:

aws s3api

对于自动化,我建议使用一种语言。 Python的boto3非常棒,Ruby和Java SDK也非常好。