我试图在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?
答案 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也非常好。