Amazon S3 サーバーアクセスログを有効にします。
サーバーアクセスのログには、Amazon S3 バケットに対するリクエストの詳細が記録されます。サーバーアクセスのログは、多くのアプリケーションに役立ちます。例えば、アクセスのログ情報は、セキュリティやアクセスの監査に役立ちます。この情報は、顧客基盤の把握や Amazon S3 の請求の理解にもつながります。
デフォルトでは、Amazon S3 によってサーバーアクセスログは収集されません。ログ記録を有効にすると、Amazon S3 は、ソースバケットのアクセスログを選択された送信先バケット(ターゲットバケット) に配信します。ソースと送信先バケットの両方が同じ AWS リージョン にあり、同じ AWS アカウント が所有している必要があります。
アクセスログのレコードには、バケットに対するリクエストの詳細が取り込まれます。この情報には、リクエストタイプ、リクエストで指定したリソース、リクエストを処理した日時などが含まれます。ログ記録の基本の詳細については、サーバーアクセスログによるリクエストのログ記録 を参照してください。
重要
-
Amazon S3 バケットに対してサーバーアクセスログ記録を有効にしても追加料金はかかりません。ただし、システムが配信するいずれのログファイルの格納に対しても通常の料金がかかります (ログはいつでも削除できます)。ログファイルの配信にデータ転送料金はかかりません。ただし、ログファイルへのアクセスには通常のデータ転送料金がかかります。
-
送信先バケットでサーバーアクセスのログ記録が有効になっているべきではありません。ログの保存先のバケットとして、ソースバケットと同じリージョンにあるユーザー所有のバケットを指定できます。これにはソースバケット自体も含まれます。ただし、ソースバケットにログを配信すると、ログの無限ループが発生するため、お勧めしません。ログを管理しやすくするため、アクセスログは別のバケットに保存することをお勧めします。詳細については、「ログ配信を有効にするにはどうすればよいですか?」を参照してください。
-
S3 オブジェクトロックが有効になっている S3 バケットは、サーバーアクセスログの送信先バケットとして使用できません。送信先バケットにはデフォルト保持期間設定を指定できません。
-
送信先バケットでは [リクエスタ支払い] を有効にすることはできません。
-
送信先バケットでデフォルトのバケット暗号化を使用できるのは、256 ビットの高度暗号化標準 (AES-256) を使用する Amazon S3 マネージドキー S3 によるサーバー側の暗号化を使用する場合のみです。AWS Key Management Service (AWS KMS) キーを使用したデフォルトのサーバー側の暗号化 (SSE−KMS) はサポートされていません。
Amazon S3 コンソール、Amazon S3 API、AWS Command Line Interface (AWS CLI)、AWS SDK を使用して、サーバーアクセスのログ記録を有効または無効にできます。
ログ配信許可
Amazon S3 は特別なログ配信アカウントを使用してサーバーアクセスログを書き込みます。このような書き込みは、通常のアクセスコントロールの制約に従います。アクセスログを配信するには、ロギングサービスプリンシパル (logging.s3.amazonaws.com
) に送信先バケットへのアクセス権を付与する必要があります。
Amazon S3 にログ配信アクセス許可を付与するには、送信先バケットの S3 オブジェクト所有権の設定に応じて、バケットポリシーまたはバケットアクセスコントロールリスト (ACL) を使用できます。ただし、ACL の代わりにバケットポリシーを使用することをお勧めします。
S3 オブジェクト所有権のバケット所有者強制設定
送信先バケットが、オブジェクト所有権のバケット所有者強制設定を使用している場合、ACL は無効になり、アクセス許可への影響はなくなります。この場合は、送信先バケットのバケットポリシーを更新して、アクセスログ配信用のログ記録サービスプリンシパルへのアクセス権を付与する必要があります。S3 ログ配信グループへのアクセスを許可すると、バケット ACL を更新できません。また、送信先権限 (別名ターゲット権限) PutBucketLogging を設定に含めることもできません。
アクセスログ配信用の既存のバケット ACL をバケットポリシーに移行する方法については、「サーバーアクセスのログ記録用の S3 ログ配信グループへのアクセスを付与する」を参照してください。オブジェクトの所有権の詳細については、「オブジェクトの所有権の制御とバケットの ACL の無効化。」を参照してください。新しいバケットを作成するとき、ACL はデフォルトでは無効になっています。
バケットポリシーを使用したアクセスの付与
送信先バケットでバケットポリシーを使用してアクセスを許可するには、バケットポリシーを更新して、ログ記録サービスプリンシパルに s3:PutObject
アクセス許可を付与します。Amazon S3 コンソールを使用してサーバーアクセスのログ記録を有効にすると、コンソールは、送信先バケットのバケットポリシーを自動的に更新して、ログ記録サービスプリンシパルにこのようなアクセス許可を付与します。プログラムでサーバーアクセスのログ記録を有効にする場合、送信先バケットのバケットポリシーを手動で更新して、アクセスログ配信用のログ記録サービスプリンシパルへのアクセス権を付与する必要があります。
ログ記録サービスプリンシパルのリソースへのアクセスを制限するバケットポリシーの例については、「バケットポリシーを使用して、ロギングサービスプリンシパルに許可を付与」を参照してください。
バケット ACL を使用したアクセスの付与
代わりに、バケット ACL を使用して、アクセスログ配信のアクセスを許可できます。S3 ログ配信グループに WRITE
と READ_ACP
の許可を付与する許可エントリーをバケット ACL に追加します。ただし、バケット ACL を使用して S3 ログ配信グループへのアクセスを許可することはお勧めしません。詳細については、「オブジェクトの所有権の制御とバケットの ACL の無効化。」を参照してください。アクセスログ配信用の既存のバケット ACL をバケットポリシーに移行する方法については、「サーバーアクセスのログ記録用の S3 ログ配信グループへのアクセスを付与する」を参照してください。ログ記録サービスプリンシパルのリソースへのアクセスを制限する ACL の例については、「バケット ACL を使用して、ログ配信グループにアクセス許可を付与します。」を参照してください。
バケットポリシーを使用して、ロギングサービスプリンシパルに許可を付与
このバケットポリシーの例は、s3:PutObject
アクセス許可をログ記録サービスプリンシパル (logging.s3.amazonaws.com
) に付与します。このバケットポリシーを実行するには、
をユーザー自身の情報に置き換えます。次のポリシーでは、user input placeholders
はサーバーアクセスログが配信される送信先バケットで、amzn-s3-demo-destination-bucket
は送信元バケットです。amzn-s3-demo-source-bucket
は、ログオブジェクトに使用するオプションの送信先のプレフィックス (別称 ターゲットプレフィックス) です。EXAMPLE-LOGGING-PREFIX
は、AWS アカウント ソースバケットを所有するグループです。SOURCE-ACCOUNT-ID
注記
バケットポリシーに Deny
ステートメントがある場合は、それらが Amazon S3 からのアクセスログの配信を防止していないことを確認します。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "S3ServerAccessLogsPolicy", "Effect": "Allow", "Principal": { "Service": "logging.s3.amazonaws.com" }, "Action": [ "s3:PutObject" ], "Resource": "arn:aws:s3:::
amzn-s3-demo-destination-bucket
/EXAMPLE-LOGGING-PREFIX
*", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:s3:::amzn-s3-demo-source-bucket
" }, "StringEquals": { "aws:SourceAccount": "SOURCE-ACCOUNT-ID
" } } } ] }
バケット ACL を使用して、ログ配信グループにアクセス許可を付与します。
注記
セキュリティ上のベストプラクティスとして、Amazon S3 はすべての新しいバケットのアクセスコントロールリスト (ACL) をデフォルトで無効にします。Amazon S3 コンソールでの ACL アクセス権限の詳細については、「ACL の設定」を参照してください。
バケット ACL を使用してログ配信グループに許可を付与することはできますが、この方法はお勧めしません。ただし、送信先バケットが、オブジェクト所有権のバケット所有者強制設定を使用している場合、バケット ACL や オブジェクト ACL を設定することはできません。また、送信先権限 (別名ターゲット権限) PutBucketLogging を設定に含めることもできません。代わりに、ロギングサービスプリンシパル (logging.s3.amazonaws.com
) にアクセス許可を付与するために、バケットポリシーを使用する必要があります。詳細については、「ログ配信許可」を参照してください。
バケット ACL では、ログ配信グループは次の URL で示されます。
http://acs.amazonaws.com/groups/s3/LogDelivery
WRITE
と READ_ACP
(ACL 読み取り) アクセス許可を付与するには、送信先バケット ACL に次の権限を追加します。
<Grant> <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="Group"> <URI>http://acs.amazonaws.com/groups/s3/LogDelivery</URI> </Grantee> <Permission>WRITE</Permission> </Grant> <Grant> <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="Group"> <URI>http://acs.amazonaws.com/groups/s3/LogDelivery</URI> </Grantee> <Permission>READ_ACP</Permission> </Grant>
プログラムを使用して ACL アクセス権限を追加する例については、ACL の設定 を参照してください。
重要
バケットで AWS CloudFormation 使用して Amazon S3 サーバーアクセスロギングを有効にし、ACL を使用して S3 ログ配信グループへのアクセスを許可する場合は、CloudFormation テンプレートにも「AccessControl": "LogDeliveryWrite"
」を追加する必要があります。このようなアクセス許可はバケット ACL を作成することによってのみ付与できます。CloudFormation ではバケットのカスタム ACL を作成できないため、これを実行することは重要です。CloudFormation で使用できるのは既定 ACL のみです。
サーバーアクセスのログ記録を有効にします
Amazon S3 コンソール、Amazon S3 REST API、AWS SDK、AWS CLI を使用してサーバーアクセスのログ記録を有効にするには、次の手順を実行します。
AWS Management Console にサインインし、Amazon S3 コンソール (https://console.aws.amazon.com/s3/
) を開きます。 -
[バケット] リストで、サーバーアクセスログ記録を有効にするバケットの名前を選択します。
-
[プロパティ] を選択します。
-
[サーバーアクセスのログ記録] で、[編集] を選択します。
-
[Server access logging] (サーバーアクセスのログ記録) で[Enable] (有効) を選択します。
-
[送信先バケット] の下で、バケットとオプションのプレフィックスを指定します。プレフィックスを指定する場合は、ログを検出しやすくするために、プレフィックスの後にスラッシュ (
/
) を付けることをお勧めします。注記
スラッシュ (
/
) を使用したプレフィックスを指定すると、ログオブジェクトが見つけやすくなります。例えば、プレフィックスの値としてlogs/
を指定すると、次のとおり Amazon S3 で作成する各ログオブジェクトのキーの先頭にlogs/
というプレフィックスが付けられます。logs/2013-11-01-21-32-16-E568B2907131C0C0
プレフィックス値
logs
を指定すると、ログオブジェクトは次のように表示されます。logs2013-11-01-21-32-16-E568B2907131C0C0
-
[ログオブジェクトキーの形式] の下で、次を設定します。
-
日付ベース以外のパーティション分割を選択するには、[DestinationPrefix][YYYY]-[MM]-[DD]-[hh]-[mm]-[ss]-[UniqueString] を選択します。
-
日付ベースでパーティション分割するには、[DestinationPrefix][SourceAccountId]/[SourceRegion]/[SourceBucket]/[YYYY]/[MM]/[DD]/[YYYY]-[MM]-[DD]-[hh]-[mm]-[ss]-[UniqueString] を選択してから、[S3 イベント時刻] または [ログファイルの配信時刻] を選択します。
-
-
[Save changes] (変更の保存) をクリックします。
バケットでサーバーアクセスのログ記録を有効にすると、コンソールはソースバケットでのログ記録を有効にして、送信先バケットのバケットポリシーを更新し、ログ記録サービスプリンシパル (
logging.s3.amazonaws.com
) にs3:PutObject
アクセス許可を付与します。バケットポリシーの詳細については、バケットポリシーを使用して、ロギングサービスプリンシパルに許可を付与 を参照してください。ログは 送信先バケットで確認できます。サーバーアクセスのログ記録を有効にすると、ログがターゲットバケットに配信されるまでに数時間かかることがあります。ログ配信の方法と間隔の詳細については、ログを配信する方法 を参照してください。
詳細については、「S3 バケットのプロパティを表示するには」を参照してください。
ログ記録を有効にするには、PutBucketLogging リクエストを送信してソースバケットにログ記録の設定を追加します。リクエストでは、送信先バケット (別名 ターゲットバケット) を指定し、必要に応じて、すべてのログオブジェクトキーに使用するプレフィックスを指定します。
送信先バケットとして
を、プレフィックスとして amzn-s3-demo-destination-bucket
を指定する例は次のとおりです。logs/
<BucketLoggingStatus xmlns="http://doc.s3.amazonaws.com/2006-03-01"> <LoggingEnabled> <TargetBucket>
amzn-s3-demo-destination-bucket
</TargetBucket> <TargetPrefix>logs/
</TargetPrefix> </LoggingEnabled> </BucketLoggingStatus>
送信先バケットとして
を、プレフィックスとして amzn-s3-demo-destination-bucket
を、ログオブジェクトキーの形式として logs/
EventTime
を指定する例は次のとおりです。
<BucketLoggingStatus xmlns="http://doc.s3.amazonaws.com/2006-03-01"> <LoggingEnabled> <TargetBucket>
amzn-s3-demo-destination-bucket
</TargetBucket> <TargetPrefix>logs/
</TargetPrefix> <TargetObjectKeyFormat> <PartitionedPrefix> <PartitionDateSource>EventTime</PartitionDateSource> </PartitionedPrefix> </TargetObjectKeyFormat> </LoggingEnabled> </BucketLoggingStatus>
ログオブジェクトはログ配信アカウントが作成および所有し、バケット所有者はログオブジェクトへの完全な許可を付与されます。必要に応じて、送信先権限 (別名ターゲット権限) をして、他のユーザーがログにアクセスできるようにアクセス許可を付与できます。詳細については、「PutBucketLogging」を参照してください。
注記
送信先バケットが、オブジェクト所有権のバケット所有者強制設定を使用している場合、送信先権限を使用してその他のユーザーにアクセス許可を付与することはできません。その他のユーザーにアクセス許可を付与するには、送信先バケットのバケットポリシーを更新します。詳細については、「ログ配信許可」を参照してください。
バケットのログ記録設定を取得するには、GetBucketLogging API オペレーションを使用します。
ログ記録設定を削除するには、PutBucketLogging
リクエストで空の BucketLoggingStatus
を指定して送信します。
<BucketLoggingStatus xmlns="http://doc.s3.amazonaws.com/2006-03-01"> </BucketLoggingStatus>
バケットでログ記録を有効にするには、Amazon S3 API または AWS SDK ラッパーライブラリを使用できます。
バケットでログ記録を有効化する例は次のとおりです。ソースバケットと送信先 (ターゲット) バケットの 2 つのバケットを作成する必要があります。 この例ではまず、送信先バケットのバケット ACL を更新します。この例では、まず送信先バケットにログを書き込むために必要なアクセス許可をログ配信グループに付与して、次にソースバケットでのログ記録を有効にしています。
このような例では、オブジェクト所有権のバケット所有者の強制設定を使用する送信先バケットでは機能しません。
送信先 (ターゲット) バケットが、オブジェクト所有権にバケット所有者の強制設定を使用している場合、バケット ACL や オブジェクト ACL を設定することはできません。PutBucketLogging 設定には、送信先 (ターゲット) 権限を含めることもできません。ロギングサービスプリンシパル (logging.s3.amazonaws.com
) に許可を付与するために、バケットポリシーを使用する必要があります。詳細については、「ログ配信許可」を参照してください。
S3 バケットがある各 AWS リージョンに専用のログ記録バケットを作成することをお勧めします。その後、Amazon S3 アクセスログをその S3 バケットに配信します。詳細と例については、「AWS CLI リファレンス」の「put-bucket-logging
送信先 (ターゲット) バケットが、オブジェクト所有権にバケット所有者の強制設定を使用している場合、バケット ACL や オブジェクト ACL を設定することはできません。PutBucketLogging 設定には、送信先 (ターゲット) 権限を含めることもできません。ロギングサービスプリンシパル (logging.s3.amazonaws.com
) に許可を付与するために、バケットポリシーを使用する必要があります。詳細については、ログ配信許可 を参照してください。
例 − 2 つのリージョンの 5 つのバケットでアクセスログを有効にする
この例では、次の 5 つのバケットがあります。
-
amzn-s3-demo-source-bucket
-us-east-1 -
amzn-s3-demo-source-bucket1
-us-east-1 -
amzn-s3-demo-source-bucket2
-us-east-1 -
amzn-s3-demo-bucket1
-us-west-2 -
amzn-s3-demo-bucket2
-us-west-2
注記
次の手順の最後のステップでは、ログ記録バケットを作成して、そのバケットでサーバーアクセスのログ記録を有効にするために使用できる bash スクリプトの例が示されています。このようなスクリプトを使用するには、次の手順で説明されるとおり、policy.json
と logging.json
ファイルを作成する必要があります。
-
米国西部 (オレゴン) リージョンと米国東部 (バージニア北部) リージョンに 2 つのログ記録先バケットを作成して、次の名前を付けます。
-
amzn-s3-demo-destination-bucket
-logs-us-east-1 -
amzn-s3-demo-destination-bucket1
-logs-us-west-2
-
-
このステップの後半では、次のとおりサーバーアクセスのログ記録を有効にします。
-
は、プレフィックスamzn-s3-demo-source-bucket
-us-east-1
を使用して S3 バケットamzn-s3-demo-destination-bucket
-logs-us-east-1
にログを記録します。amzn-s3-demo-source-bucket
-us-east-1 -
は、プレフィックスamzn-s3-demo-source-bucket1
-us-east-1
を使用して S3 バケットamzn-s3-demo-destination-bucket
-logs-us-east-1
にログを記録します。amzn-s3-demo-source-bucket1
-us-east-1 -
は、プレフィックスamzn-s3-demo-source-bucket2
-us-east-1
を使用して S3 バケットamzn-s3-demo-destination-bucket
-logs-us-east-1
にログを記録します。amzn-s3-demo-source-bucket2
-us-east-1 -
は、プレフィックスamzn-s3-demo-bucket1
-us-west-2
を使用して S3 バケットamzn-s3-demo-destination-bucket1
-logs-us-west-2
にログを記録します。amzn-s3-demo-bucket1
-us-west-2 -
は、プレフィックスamzn-s3-demo-bucket2
-us-west-2
を使用して S3 バケットamzn-s3-demo-destination-bucket1
-logs-us-west-2
にログを記録します。amzn-s3-demo-bucket2
-us-west-2
-
-
バケット ACL またはバケットポリシーを使用して、サーバーアクセスのログ記録の配信の許可を付与します。
-
バケットポリシーの更新 (推奨) – ロギングサービスプリンシパルにアクセス許可を付与するには、次の
put-bucket-policy
コマンドを使用します。
を、宛先のバケットの名前に置き換えます。amzn-s3-demo-destination-bucket
-logsaws s3api put-bucket-policy --bucket
--policy file://policy.jsonamzn-s3-demo-destination-bucket
-logsPolicy.json
は、次のバケットポリシーを含む現在のフォルダ内の JSON ドキュメントです。このバケットポリシーを実行するには、
をユーザー自身の情報に置き換えます。次のポリシーでは、user input placeholders
はサーバーアクセスログが配信される送信先バケットであり、amzn-s3-demo-destination-bucket
-logs
はソースバケットです。amzn-s3-demo-source-bucket
は、ソースバケットを所有する AWS アカウント です。SOURCE-ACCOUNT-ID
{ "Version": "2012-10-17", "Statement": [ { "Sid": "S3ServerAccessLogsPolicy", "Effect": "Allow", "Principal": { "Service": "logging.s3.amazonaws.com" }, "Action": [ "s3:PutObject" ], "Resource": "arn:aws:s3:::
amzn-s3-demo-destination-bucket
-logs
/*", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:s3:::amzn-s3-demo-source-bucket
" }, "StringEquals": { "aws:SourceAccount": "SOURCE-ACCOUNT-ID
" } } } ] } -
バケット ACL の更新 – S3 ログ配信グループに許可を付与するには、次の
put-bucket-acl
コマンドを使用します。
は、送信先 (ターゲット) バケット名前に置き換えます。amzn-s3-demo-destination-bucket
-logsaws s3api put-bucket-acl --bucket
--grant-write URI=http://acs.amazonaws.com/groups/s3/LogDelivery --grant-read-acp URI=http://acs.amazonaws.com/groups/s3/LogDeliveryamzn-s3-demo-destination-bucket
-logs
-
-
次に、(次の 3 つの例のうちのいずれかに基づいた) ログ記録設定を含む
logging.json
ファイルを作成します。logging.json
ファイルを作成したら、次のput-bucket-logging
コマンドを使用してログ記録設定を適用できます。
は、送信先 (ターゲット) バケット名前に置き換えます。amzn-s3-demo-destination-bucket
-logsaws s3api put-bucket-logging --bucket
--bucket-logging-status file://logging.jsonamzn-s3-demo-destination-bucket
-logs注記
この
put-bucket-logging
コマンドを使用して各送信先バケットにログ記録設定を適用する代わりに、次のステップで提供される bash スクリプトのいずれかを使用できます。このようなスクリプトを使用するには、次の手順のとおり、policy.json
とlogging.json
ファイルを作成する必要があります。logging.json
ファイルは、ログ記録設定を含む現在のフォルダ内の JSON ドキュメントです。送信先バケットがオブジェクト所有権に対してバケット所有者の強制設定を使用している場合、ログ記録設定に送信先 (ターゲット) の権限を含めることはできません。詳細については、「ログ配信許可」を参照してください。例 — 送信先 (ターゲット) 権限なしの
logging.json
次の例の
logging.json
ファイルには、送信先 (ターゲット) 権限が含まれていません。そのため、オブジェクト所有権のバケット所有者の強制設定を使用する送信先 (ターゲット) バケットにこの設定を適用できます。{ "LoggingEnabled": { "TargetBucket": "
amzn-s3-demo-destination-bucket
-logs
", "TargetPrefix": "amzn-s3-demo-destination-bucket
/" } }例 — 送信先 (ターゲット) 権限のある
logging.json
次の例の
logging.json
ファイルには、送信先 (ターゲット) 権限が含まれています。送信先バケットが、オブジェクト所有権のバケット所有者の強制設定を使用している場合、PutBucketLogging 設定に送信先 (ターゲット) 権限を含めることはできません。詳細については、「ログ配信許可」を参照してください。
{ "LoggingEnabled": { "TargetBucket": "
amzn-s3-demo-destination-bucket
-logs
", "TargetPrefix": "amzn-s3-demo-destination-bucket
/", "TargetGrants": [ { "Grantee": { "Type": "AmazonCustomerByEmail", "EmailAddress": "user@example.com
" }, "Permission": "FULL_CONTROL" } ] } }例 – ログオブジェクトキーを S3 イベント時刻に設定した
logging.json
次の
logging.json
ファイルは、ログオブジェクトキーの形式を S3 イベント時刻に変更します。暗号化キーの使用の詳細については、「ログ配信を有効にするにはどうすればよいですか?」を参照してください。{ "LoggingEnabled": { "TargetBucket": "
amzn-s3-demo-destination-bucket
-logs
", "TargetPrefix": "amzn-s3-demo-destination-bucket
/", "TargetObjectKeyFormat": { "PartitionedPrefix": { "PartitionDateSource": "EventTime" } } } } -
アカウントのすべてのバケットに対するアクセスログを追加するには、次の bash スクリプトのいずれかを使用します。
は、送信先 (ターゲット) バケットの名前に置き換え、amzn-s3-demo-destination-bucket
-logs
はバケットが配置されているリージョンの名前に置き換えます。us-west-2
注記
これはすべてのバケットが同じリージョンにある場合にのみ機能します。複数のリージョンにバケットがある場合は、スクリプトを調整する必要があります。
例 — バケットポリシーによるアクセスを許可し、アカウントのバケットのロギングを追加します
loggingBucket='
amzn-s3-demo-destination-bucket
-logs
' region='us-west-2
' # Create the logging bucket. aws s3 mb s3://$loggingBucket --region $region aws s3api put-bucket-policy --bucket $loggingBucket --policy file://policy.json # List the buckets in this account. buckets="$(aws s3 ls | awk '{print $3}')" # Put a bucket logging configuration on each bucket. for bucket in $buckets do # This if statement excludes the logging bucket. if [ "$bucket" != "$loggingBucket" ] ; then continue; fi printf '{ "LoggingEnabled": { "TargetBucket": "%s", "TargetPrefix": "%s/" } }' "$loggingBucket" "$bucket" > logging.json aws s3api put-bucket-logging --bucket $bucket --bucket-logging-status file://logging.json echo "$bucket done" done rm logging.json echo "Complete"例 — バケット ACL でアクセス権を付与し、アカウントのバケットのロギングを追加します
loggingBucket='
amzn-s3-demo-destination-bucket
-logs
' region='us-west-2
' # Create the logging bucket. aws s3 mb s3://$loggingBucket --region $region aws s3api put-bucket-acl --bucket $loggingBucket --grant-write URI=http://acs.amazonaws.com/groups/s3/LogDelivery --grant-read-acp URI=http://acs.amazonaws.com/groups/s3/LogDelivery # List the buckets in this account. buckets="$(aws s3 ls | awk '{print $3}')" # Put a bucket logging configuration on each bucket. for bucket in $buckets do # This if statement excludes the logging bucket. if [ "$bucket" != "$loggingBucket" ] ; then continue; fi printf '{ "LoggingEnabled": { "TargetBucket": "%s", "TargetPrefix": "%s/" } }' "$loggingBucket" "$bucket" > logging.json aws s3api put-bucket-logging --bucket $bucket --bucket-logging-status file://logging.json echo "$bucket done" done rm logging.json echo "Complete"
サーバーアクセスログ設定の検証
サーバーアクセスロギングを有効にしたら、以下の手順を実行します。
-
送信先バケットにアクセスして、ログファイルが配信されていることを確認します。アクセスログが設定されると、Amazon S3 はすぐにリクエストのキャプチャとログ記録を開始します。ただし、ログが送信先バケットに送られるまでに数時間かかる場合があります。詳細については、バケットのログ記録ステータスの変更が有効になるまでには時間がかかるおよびベストエフォート型のサーバーログ配信を参照してください。
Amazon S3 リクエストメトリクスを使用し、これらのメトリックスに Amazon CloudWatch アラームを設定することで、ログ配信を自動的に検証することもできます。詳細については、「Amazon CloudWatch によるメトリクスのモニタリング」を参照してください。
-
ログファイルのコンテンツを開いて読み取ることができることを確認します。
サーバアクセスロギングのトラブルシューティング情報については、サーバーのアクセスログ記録のトラブルシューティング を参照してください。