📝
s3作成備忘録
🪣 S3 バケットの基本設定
1. バケットとは
- S3 バケットは、オブジェクト(ファイル)をキーで管理する階層構造を持たないデータストア。
- 見た目上フォルダがあるように見えるが、実際には「キー(例:
images/cat.png)」として管理されており、
「ディレクトリ」は プレフィックス(キーの一部)を利用した擬似的な構造。
2. バケットタイプ
| 種類 | 概要 | 備考 |
|---|---|---|
| 汎用 (General purpose) | 通常利用に最適。ほとんどのユースケースでこれを選択。 | ✅ 推奨 |
| ディレクトリ (Directory buckets) |
AWS の新機能(S3 Express One Zoneで、特定のリージョン内で低レイテンシを実現。 通常のバケットとは別物で制約も多い。 |
特殊用途のみ |
3. バケット名
- 作成後は変更不可。
- グローバルで一意である必要がある。
例:myapp-static-assets-prod - 命名規則
- 小文字英数字、ハイフン(
-)のみ - ピリオド(
.)は避ける(証明書検証などで問題になることがある)
- 小文字英数字、ハイフン(
4. アクセスコントロールリスト(ACL)
-
非推奨(無効推奨)。
AWS 公式でも、バケットポリシーと IAM ポリシーによる管理が推奨されている。 - 有効化すると他 AWS アカウントからもアクセス制御できるが、複雑になりやすく、誤設定のリスクあり。
- 必要がなければ 無効のままで OK。
5. パブリックアクセスブロック
-
「すべてのパブリックアクセスをブロック」 を有効にしておく。
→ 外部からの直接アクセスを防止できる。 - CloudFront など CDN 経由で配信したい場合は、
バケットポリシーで CloudFront OAI/OAC のみ許可 するように設定する。{ "Version": "2012-10-17", "Statement": [ { "Sid": "Statement", "Effect": "Allow", "Principal": { "Service": "cloudfront.amazonaws.com" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::<バケット名>/*", "Condition": { "StringEquals": { "AWS:SourceArn": "arn:aws:cloudfront::<AWSアカウントID>:distribution/<CloudFrontID>" } } } ] }
6. バージョニング
- 有効にすると、削除や上書きの際に古いバージョンを保持できる。
- ただし、ストレージコストが増加する。
- Git などで履歴管理している場合は無効でも OK。
7. デフォルトの暗号化設定
| 暗号化タイプ | 内容 | おすすめ度 |
|---|---|---|
| SSE-S3 | S3 が自動でキーを管理。設定が簡単で自動化に向いている。 | ✅ 推奨 |
| SSE-KMS | KMS で独自キーを管理。ガバナンス・監査用途に最適だが運用が複雑。 | 特殊用途のみ |
| SSE-C | クライアント側でキーを管理。一般利用では不要。 | 非推奨 |
- S3 のデフォルト暗号化タイプは「SSE-S3」で十分。
- KMS を使うとキー管理や権限設計が必要になるため、シンプルな構成では避けるのが無難。
8. バケットキー
- SSE-KMS 利用時に KMS キー呼び出しを最適化するための機能。
- SSE-S3 を使用する場合は 無効のままで OK。
9. 推奨構成まとめ
| 設定項目 | 推奨設定 | 理由 |
|---|---|---|
| バケットタイプ | 汎用 | 通常利用に最適 |
| ACL | 無効 | IAM/ポリシー管理推奨 |
| パブリックアクセス | 全てブロック | セキュリティ確保 |
| バージョニング | 任意(用途に応じて) | 誤削除防止や履歴保持に有効 |
| 暗号化 | SSE-S3 | 管理が簡単で安全 |
| バケットキー | 無効(SSE-S3 の場合) | SSE-S3 では不要 |
10. 補足
- 静的 Web サイトホスティングを行う場合は、別途「静的ホスティングを有効化」する設定が必要。
- CloudFront 経由でアクセス制御を行う場合は、OAI(Origin Access Identity)または
OAC(Origin Access Control)を使用して S3 を直接パブリックにしない構成が推奨。
Discussion