S3の全設定を書きつくす!
この度S3バケットのあらゆる設定を設定・確認したので、備忘のために記します。ストレージにこれだけの設定が簡単にできるなんて便利ですね〜
「プロパティ」タブ
1) AWSリージョン
2) AWSリソースネーム (ARN)
3) バケットのバージョニング
有効、または無効、の確認ができます。
<CDK(TypeScript)での記述>
versioned: true,
4) タグ
5) 暗号化タイプ
AWS S3マネージドキーを使用したサーバー側の暗号化(SSE-S3)
<CDK(TypeScript)での記述>
encryption: s3.BucketEncryption.S3_MANAGED,
6) バケットキー:KMS暗号化を使用したオブジェクトの暗号化
有効、または無効、の確認ができます。
7) Intelligent-Tiering Archiveの設定
アーカイブレベルのストレージクラスに階層ダウンする設定
<CDK(TypeScript)での記述>
noncurrentVersionsToRetain: 123,
noncurrentVersionTransitions: [
{
storageClass: s3.StorageClass.GLACIER,
transitionAfter: Duration.days(30),
},
],
8) サーバーアクセスのログ記録
有効、または無効
9) AWS CloudTrailデータイベント
CloudTrailでS3バケットで発生したデータイベントをロギング
10) イベント通知
S3から、SNS、SQS、Lambda、EventBridgeに対して通知ができます。
11) Transfer Acceleration
高速化エンドポイントを使用してデータ転送を高速化する 有効/無効
12) オブジェクトロック
オブジェクトが一定期間または無期限に削除または上書きされるのを防ぐ。
有効/無効
有効の場合、ガバナンスモード/コンプラインアンスモード
<CDK(TypeScript)での記述>
objectLockEnabled: true,
objectLockDefaultRetention: s3.ObjectLockRetention.governance(cdk.Duration.days(7)),
13) リクエスタ支払い
データのアクセスにかかるコストを、バケット所有者ではなくてデータへのアクセス者が支払うことが出来るオプション
有効/無効
14) 静的ウェブサイトホスティング
S3 で静的ページを公開する設定
有効/無効
「アクセス許可」タブ
1) ブロックパブリックアクセス(バケット設定)
パブリックアクセスをすべてブロック
オン(デフォルト)
<CDK(TypeScript)での記述>
blockPublicAccess: s3.BlockPublicAccess.BLOCK_ALL,
2) バケットポリシー
JSON形式で記述
3) オブジェクト所有者
バケット所有者の強制
<JSON形式>
"Condition": {
"StringEquals": {
"s3:x-amz-acl": "bucket-owner-full-control"
}
4) アクセスコントロールリスト(ACL)
デフォルトでバケット所有者(自身のAWSアカウント)にのみアクセス許可設定されている。
プロジェクトによっては、権限制御をバケットポリシー、IAMポリシーで行うためACLを使わないこともあり。
5) Cross-Origin Resource Sharing (CORS)
特定のドメインにロードされたクライアントウェブアプリケーションが、異なるドメイン内のリソースと通信する方法を定義する。JSON形式で記述。
「管理」タブ
1) ライフサイクルルール
移行と有効期限切れのアクションを確認
最新バージョンのアクション
XX日・オブジェクトの有効期限切れ
<CDK(TypeScript)での記述>
expiration: cdk.Duration.days(180),
2) レプリケーションルール
サーバー側の暗号化、レプリカの所有権、レプリカの別のストレージクラスへの移行など、レプリケーション中にS3が適用するオプションを定義する。
3) インベントリ設定
S3に保管されたオブジェクトの一覧を定期的に出力してくれる機能
IAM Access Analyzer for S3 (左ペイン内)
S3のアクセスコントロールに問題がないか検知するための機能