Subscribed unsubscribe Subscribe Subscribe

S3のバケットの設定(静的サイト用)のベスト・プラクティスについて考えてみる

docs.aws.amazon.com

www.slideshare.net

バケット名

ドメイン名と同じにする

Permissions

  • ユーザーポリシー
Owner
↓
List, Upload/Delete, View Permissions, Edit Permissions

Log Delivery
↓
Upload/Delete, View Permissions

AWSアカウント毎の設定

  • バケットポリシー
{
  "Version":"2012-10-17",
  "Statement":[
    {
      "Sid":"AddPerm",
      "Effect":"Allow",
      "Principal": "*",
      "Action":["s3:GetObject"],
      "Resource":["arn:aws:s3:::{{バケット名}}/*"]
    }
  ]
}

※バージョニングを有効にする場合はs3:GetObjectVersionが必要です
IPアドレス制限したい場合

      "Condition": {
         "IpAddress": {"aws:SourceIp": "XX.XXX.XXX.X/XX"},
         "NotIpAddress": {"aws:SourceIp": "XX.XXX.XXX.XXX/XX"} 
      }

Static Website Hosting

  • Enable website hosting
Index Document:index.html
Error Document:404.html

Edit Redirection Rules:
↓
<RoutingRules>
  <RoutingRule>
  <Condition>
    <HttpErrorCodeReturnedEquals>404</HttpErrorCodeReturnedEquals >
  </Condition>
  <Redirect>
    <HostName>{{ホスト名}}</HostName>
    <ReplaceKeyWith>404.html</ReplaceKeyWith>
  </Redirect>
  </RoutingRule>
</RoutingRules>

Logging

Enabled
Target Bucket: {{ドメイン名}}
Target Prefix: logs/

※バケット作成時に有効にするだけでよい

Events

  • Lambda function
incoming web hookでSlackと連携する

Versioning

Enabled

Lifecycle

  • Action on Current Version
何も設定しない
  • Action on Previous Versions
Transition to the Standard - Infrequent Access Storage Class
30 Days after becoming a previous version
or
Permanently Delete  
3 Days after becoming a previous version

Cross-Region Replication

Do Not Enable Cross-Region Replication

Tags

Key: Name
Value: {{バケット名}}

Requester Pays

Disabled
※設定するとブラウザで静的サイトにアクセスすると403になります