S3のバケット作成
2022/04 の作業
Django の静的ファイルを S3 に配置する為にバケットを作成。
Django からバケットにファイルを追加する為のポリシーを持ったユーザの作成、そのファイルにパブリックからアクセスできる様にアクセス許可を設定。
バケットをとりあえず作成
「Amazon S3 - バケット」のページから、「バケットを作成」ボタンを押す。
表示された画面の「バケット名」を入力、「AWS リージョン」を選択、それと、後でも変更できるけど、「パブリックアクセスを全てブロック」のチェックをはずし、警告を恐れずにチェックを入れて、「バケットを作成」ボタンを押す。
すると、バケットが作成できる。

Django からバケットにファイルを追加する為の設定
・ポリシーの作成
・ポリシーを持ったユーザを作成
を行う。
ポリシーの作成
「IAM - アクセス管理 - ポリシー」のページの「ポリシーの作成」ボタンを押す。
ポリシーの作成画面の「JSON」タブを選択し、Django からアクセスできる様にポリシーを設定する。
( 以下は AWS のコンソールからもアクセスできる設定も追加している。 )
Resource は作成したバケットの arn とその下のパスを設定する。
API でアクセスするので、アクセスキーIDとシークレットアクセスキーを保存しておく。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"s3:GetBucketPublicAccessBlock",
"s3:GetBucketPolicyStatus",
"s3:PutObject",
"s3:GetObject",
"s3:ListBucket",
"s3:GetBucketAcl"
],
"Resource": [
"arn:aws:s3:::work-bucket",
"arn:aws:s3:::work-bucket/*"
]
},
{
"Sid": "VisualEditor1",
"Effect": "Allow",
"Action": [
"s3:ListAllMyBuckets",
"s3:ListAccessPoints"
],
"Resource": "*"
}
]
}
ポリシーを持ったユーザを作成
「IAM - アクセス管理 - ユーザ」のページの「ユーザを追加」ボタンを押して、バケットにアクセスするユーザを作成する。
「AWS 認証情報タイプを選択」 - 「アクセスキー - プログラムによるアクセス」のチェック、
「アクセス許可の設定」で「既存のポリシーを直接アタッチ」を選択して、先に作ったポリシーを選択して作成。
パブリックからバケットのファイルを参照する為の設定
作成したバケットを選択して、「アクセス許可」を押して、「バケットポリシー」「CORS」の設定を行う。
バケットポリシー
パブリックアクセスから参照だけできる様に許可を設定する。
「バケットポリシー」の「編集」ボタンをおして、「バケットポリシーを編集」へ行く。
表示された画面で、「ポリシー」に入力して、「変更の保存」を押す。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Statement1",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": [
"arn:aws:s3:::work-bucket",
"arn:aws:s3:::work-bucket/*"
]
}
]
}
Cross-Origin Resource Sharing (CORS)
CORS のアクセスを許可する。
「CORS」の「編集」ボタンをおして、「CORSを編集」へ行く。
表示された画面で入力して、「変更の保存」を押す。
[
{
"AllowedHeaders": [],
"AllowedMethods": [
"GET",
"HEAD"
],
"AllowedOrigins": [
"https://w1.massolezume.ga",
"http://127.0.0.1:8888",
"https://work-bucket.s3.amazonaws.com"
],
"ExposeHeaders": [
"Access-Control-Allow-Origin"
]
}
]
だいぶ忘れたところもあるが、だいたいこんな感じだったと思う。