※当記事は2015年にQiitaに投稿した記事を再編集したものです
前提
- aws-cliが入っていること
- IAMのパーミッションがいい感じに設定されていること
- Credentialがconfigureもしくは環境変数に設定されてること
※--profile
使ってもいいです - default region が ap-northeast-1 で設定してあること
※ 別にいいんだけど適宜いい感じに読み替えて下さい - Mac想定してるのでWindowsの人はEC2使うとかいい感じに読み替えるとかしてください
- loggingの設定はこの手順には含まれてません
手順
- バケットの作成
- コンテンツの設置
- Static Website Hostingを有効にする
- BucketPolicyを設定する
バケットの作成
$ BUCKET_NAME=backetnonamae
$ aws s3 mb s3://${BUCKET_NAME}
make_bucket: s3://backetnonamae/
コンテンツの設置
コンテンツはカレントディレクトリにあるものとして記載しています。
置いてあるファイルは/index.html
と/css/index.css
の2つです。
$ SC_DIR=$(pwd)
$ aws s3 sync ${SC_DIR}/ s3://${BUCKET_NAME}/
upload: css/index.css to s3://backetnonamae/css/index.css
upload: ./index.html to s3://backetnonamae/index.html
Static Website Hostingを有効にする
$ aws s3 website s3://${BUCKET_NAME} --index-document index.html
(なし)
BucketPolicyを設定する
このポリシーを適用することでアップロードしたファイルはすべてpublicになります。
ポリシー用のjson作成
$ PUBLIC_POLICY=public.json
$ cat << EOF > ${PUBLIC_POLICY}
{
"Version": "2012-10-17",
"Id": "PublicRead",
"Statement": [
{
"Sid": "ReadAccess",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::${BUCKET_NAME}/*"
}
]
}
EOF
{
"Version": "2012-10-17",
"Id": "PublicRead",
"Statement": [
{
"Sid": "ReadAccess",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::backetnonamae/*"
}
]
}
ポリシーの適用
$ aws s3api put-bucket-policy --bucket ${BUCKET_NAME} --policy file://${PUBLIC_POLICY}
(なし)
表示確認
$ open http://${BUCKET_NAME}.s3-website-ap-northeast-1.amazonaws.com
Trending
コメント