翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
を使用してログデータを Amazon S3 にエクスポートする AWS CLI
次の例では、エクスポートタスクを使用して、 という名前の CloudWatch ログロググループから という名前の Amazon S3 バケットmy-log-group
にすべてのデータをエクスポートしますmy-exported-logs
。この例では、「my-log-group
」というロググループを作成済みであることを前提としています。
で暗号化された S3 バケットへのログデータのエクスポート AWS KMS がサポートされています。DSSE-KMS で暗号化されたバケットへのエクスポートはサポートされていません。
エクスポートの設定方法の詳細は、エクスポート先の Amazon S3 バケットがエクスポート対象のログと同じアカウントにあるか、別のアカウントにあるかによって異なります。
同一アカウントへのエクスポート
Amazon S3 バケットがエクスポート対象のログと同じアカウントにある場合は、このセクションの手順を使用してください。
トピック
ステップ 1: S3 バケットを作成する。
CloudWatch Logs 専用に作成されたバケットを使用することをお勧めします。ただし、既存のバケットを使用する場合は、ステップ 2 に進むことができます。
注記
S3 バケットは、エクスポートするログデータと同じリージョンに存在する必要があります。 CloudWatch ログは、別のリージョンの S3 バケットへのデータのエクスポートをサポートしていません。
を使用して S3 バケットを作成するには AWS CLI
コマンドプロンプトで、次の create-bucket コマンドを実行します。ここで、LocationConstraint
はログデータをエクスポートするリージョンです。
aws s3api create-bucket --bucket
my-exported-logs
--create-bucket-configuration LocationConstraint=us-east-2
以下は出力例です。
{ "Location": "/
my-exported-logs
" }
ステップ 2: アクセス許可を設定する
ステップ 5 でエクスポートタスクを作成するには、 AmazonS3ReadOnlyAccess
IAM ロールと次のアクセス許可でサインオンする必要があります。
logs:CreateExportTask
logs:CancelExportTask
logs:DescribeExportTasks
logs:DescribeLogStreams
logs:DescribeLogGroups
アクセス権限を付与するには、ユーザー、グループ、またはロールにアクセス許可を追加します。
-
のユーザーとグループ AWS IAM Identity Center:
アクセス許可セットを作成します。「AWS IAM Identity Center ユーザーガイド」の「権限設定を作成する」の手順に従ってください。
-
ID プロバイダーIAMを介して で管理されるユーザー:
ID フェデレーションのロールを作成します。IAM ユーザーガイドの「サードパーティー ID プロバイダー (フェデレーション) のロールを作成する」の指示に従います。
-
IAM ユーザー:
-
ユーザーが担当できるロールを作成します。「 ユーザーガイド」のIAM「ユーザーのロールを作成する」の指示に従います。 IAM
-
(お奨めできない方法) ポリシーをユーザーに直接アタッチするか、ユーザーをユーザーグループに追加する。IAM ユーザーガイドの「ユーザー (コンソール) へのアクセス許可の追加」の指示に従います。
-
ステップ 3: S3 バケットのアクセス許可を設定する
すべての S3 バケットとオブジェクトは、デフォルト状態でプライベートに設定されます。バケットを作成したアカウント (リソース所有者) のみが、バケットとそれに含まれるオブジェクトにアクセスできます。ただし、リソース所有者は、アクセスポリシーを記述することで他のリソースおよびユーザーにアクセス権限を付与することができます。
重要
S3 バケットへのエクスポートをより安全にするために、ログデータを S3 バケットにエクスポートできるソースアカウントのリストの指定が必要になりました。
次の例では、 IDsaws:SourceAccount
キーのアカウントのリストは、ユーザーがログデータを S3 バケットにエクスポートできるアカウントになります。aws:SourceArn
キーは、アクションが実行される対象のリソースです。これを特定のロググループに制限することも、この例のようにワイルドカードを使用することもできます。
S3 バケットが作成されたアカウントのアカウント ID も含めることで、エクスポートを同じアカウント内で行えるようにすることをお勧めします。
S3 バケットでアクセス許可を設定するには
-
policy.json
という名前のファイルを作成し、次のアクセスポリシーを追加します。このとき、my-exported-logs
を S3 バケットの名前に変更し、Principal
をログデータのエクスポート先のリージョンのエンドポイント (us-west-1
など) に変更します。テキストエディタを使用してこのポリシーファイルを作成します。IAM コンソールは使用しないでください。{ "Version": "2012-10-17", "Statement": [ { "Action": "s3:GetBucketAcl", "Effect": "Allow", "Resource": "arn:aws:s3:::
my-exported-logs
", "Principal": { "Service": "logs.Region
.amazonaws.com" }, "Condition": { "StringEquals": { "aws:SourceAccount": [ "AccountId1", "AccountId2", ... ] }, "ArnLike": { "aws:SourceArn": [ "arn:aws:logs:Region
:AccountId1:log-group:*", "arn:aws:logs:Region
:AccountId2:log-group:*", ... ] } } }, { "Action": "s3:PutObject" , "Effect": "Allow", "Resource": "arn:aws:s3:::my-exported-logs
/*", "Principal": { "Service": "logs.Region
.amazonaws.com" }, "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control", "aws:SourceAccount": [ "AccountId1", "AccountId2", ... ] }, "ArnLike": { "aws:SourceArn": [ "arn:aws:logs:Region
:AccountId1:log-group:*", "arn:aws:logs:Region
:AccountId2:log-group:*", ... ] } } } ] } -
put-bucket-policy コマンドを使用して、バケットにアクセスポリシーとして追加したポリシーを設定します。このポリシーは、 CloudWatch ログがログデータを S3 バケットにエクスポートできるようにします。バケット所有者には、エクスポートされたすべてのオブジェクトに対する完全なアクセス権限があります。
aws s3api put-bucket-policy --bucket my-exported-logs --policy file://policy.json
警告
既存のバケットに既に 1 つ以上のポリシーがアタッチされている場合は、そのポリシーへの CloudWatch Logs アクセスのステートメントを追加します。バケットにアクセスするユーザーに適したアクセス許可であることを確認するために、アクセス許可の結果セットを評価することをお勧めします。
(オプション) ステップ 4: で暗号化されたバケットへのエクスポート SSEKMS
このステップは、 でサーバー側の暗号化を使用する S3 バケットにエクスポートする場合にのみ必要です AWS KMS keys。この暗号化は SSE- と呼ばれますKMS。
で暗号化されたバケットにエクスポートするには SSE-KMS
-
テキストエディタを使用して
key_policy.json
という名前のファイルを作成し、以下のアクセスポリシーを追加します。ポリシーを追加する際、以下の点を変更します。-
置換
Region
ログのリージョンを使用します。 -
置換
account-ARN
KMS キーを所有するARNアカウントの 。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Allow CWL Service Principal usage", "Effect": "Allow", "Principal": { "Service": "logs.
Region
.amazonaws.com" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "*" }, { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": "account-ARN
" }, "Action": [ "kms:GetKeyPolicy*", "kms:PutKeyPolicy*", "kms:DescribeKey*", "kms:CreateAlias*", "kms:ScheduleKeyDeletion*", "kms:Decrypt" ], "Resource": "*" } ] } -
-
次のコマンドを入力します。
aws kms create-key --policy file://key_policy.json
以下は、このコマンドに対する出力例です。
{ "KeyMetadata": { "AWSAccountId": "
account_id
", "KeyId": "key_id
", "Arn": "arn:aws:kms:us-east-2:account_id
:key/key_id
", "CreationDate": "time
", "Enabled": true, "Description": "", "KeyUsage": "ENCRYPT_DECRYPT", "KeyState": "Enabled", "Origin": "AWS_KMS", "KeyManager": "CUSTOMER", "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT", "KeySpec": "SYMMETRIC_DEFAULT", "EncryptionAlgorithms": [ "SYMMETRIC_DEFAULT" ], "MultiRegion": false } -
テキストエディタを使用して、
bucketencryption.json
という名前のファイルを作成し、次の内容を記述します。{ "Rules": [ { "ApplyServerSideEncryptionByDefault": { "SSEAlgorithm": "aws:kms", "KMSMasterKeyID": "{KMS Key ARN}" }, "BucketKeyEnabled": true } ] }
-
次のコマンドを入力し、置き換えます。
bucket-name
ログをエクスポートするバケットの名前。aws s3api put-bucket-encryption --bucket
bucket-name
--server-side-encryption-configuration file://bucketencryption.jsonコマンドがエラーを返さなければ、このプロセスは成功しています。
ステップ 5: エクスポートタスクを作成する
次の コマンドを使用してエクスポートタスクを作成します。作成すると、エクスポートするデータのサイズに応じて、エクスポートタスクに数秒から数時間かかる可能性があります。
を使用して Amazon S3 にデータをエクスポートするには AWS CLI
-
ステップ 2: アクセス許可を設定する に記載されているように、十分なアクセス許可を使用してサインインします。
-
コマンドプロンプトで、次のcreate-export-taskコマンドを使用してエクスポートタスクを作成します。
aws logs create-export-task --profile CWLExportUser --task-name "
my-log-group-09-10-2015
" --log-group-name "my-log-group
" --from1441490400000
--to1441494000000
--destination "my-exported-logs
" --destination-prefix "export-task-output
"以下は出力例です。
{ "taskId": "
cda45419-90ea-4db5-9833-aade86253e66
" }
クロスアカウントでのエクスポート
Amazon S3 バケットがエクスポート対象のログとは別のアカウントにある場合は、このセクションの手順を使用してください。
トピック
ステップ 1: S3 バケットを作成する。
CloudWatch Logs 専用に作成されたバケットを使用することをお勧めします。ただし、既存のバケットを使用する場合は、ステップ 2 に進むことができます。
注記
S3 バケットは、エクスポートするログデータと同じリージョンに存在する必要があります。 CloudWatch ログは、別のリージョンの S3 バケットへのデータのエクスポートをサポートしていません。
を使用して S3 バケットを作成するには AWS CLI
コマンドプロンプトで、次の create-bucket コマンドを実行します。ここで、LocationConstraint
はログデータをエクスポートするリージョンです。
aws s3api create-bucket --bucket
my-exported-logs
--create-bucket-configuration LocationConstraint=us-east-2
以下は出力例です。
{ "Location": "/
my-exported-logs
" }
ステップ 2: アクセス許可を設定する
まず、新しいIAMポリシーを作成して、 CloudWatch ログが送信先 Amazon S3 バケットのs3:PutObject
アクセス許可を持つようにする必要があります。
ステップ 5 でエクスポートタスクを作成するには、 AmazonS3ReadOnlyAccess
IAM ロールと特定の他のアクセス許可でサインオンする必要があります。その他の必要なアクセス許可の一部を含むポリシーを作成できます。
作成するポリシーは、送信先バケットが AWS KMS 暗号化を使用しているかどうかによって異なります。 AWS KMS 暗号化を使用しない場合は、次の内容のポリシーを作成します。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::
my-exported-logs
/*" } ] }
送信先バケットで AWS KMS 暗号化を使用している場合は、次の内容のポリシーを作成します。
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::
my-exported-logs
/*" }, { "Effect": "Allow", "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "ARN_OF_KMS_KEY
" } ] }
ステップ 5 でエクスポートタスクを作成するには、AmazonS3ReadOnlyAccess
IAMロール、先ほど作成したIAMポリシー、および次のアクセス許可を使用してサインインする必要があります。
logs:CreateExportTask
logs:CancelExportTask
logs:DescribeExportTasks
logs:DescribeLogStreams
logs:DescribeLogGroups
アクセス権限を付与するには、ユーザー、グループ、またはロールにアクセス許可を追加します。
-
のユーザーとグループ AWS IAM Identity Center:
アクセス許可セットを作成します。「AWS IAM Identity Center ユーザーガイド」の「権限設定を作成する」の手順に従ってください。
-
ID プロバイダーIAMを介して で管理されるユーザー:
ID フェデレーションのロールを作成します。IAM ユーザーガイドの「サードパーティー ID プロバイダー (フェデレーション) のロールを作成する」の指示に従います。
-
IAM ユーザー:
-
ユーザーが担当できるロールを作成します。「 ユーザーガイド」のIAM「ユーザーのロールを作成する」の指示に従います。 IAM
-
(お奨めできない方法) ポリシーをユーザーに直接アタッチするか、ユーザーをユーザーグループに追加する。IAM ユーザーガイドの「ユーザー (コンソール) へのアクセス許可の追加」の指示に従います。
-
ステップ 3: S3 バケットのアクセス許可を設定する
すべての S3 バケットとオブジェクトは、デフォルト状態でプライベートに設定されます。バケットを作成したアカウント (リソース所有者) のみが、バケットとそれに含まれるオブジェクトにアクセスできます。ただし、リソース所有者は、アクセスポリシーを記述することで他のリソースおよびユーザーにアクセス権限を付与することができます。
重要
S3 バケットへのエクスポートをより安全にするために、ログデータを S3 バケットにエクスポートできるソースアカウントのリストの指定が必要になりました。
次の例では、 IDsaws:SourceAccount
キーのアカウントのリストは、ユーザーがログデータを S3 バケットにエクスポートできるアカウントになります。aws:SourceArn
キーは、アクションが実行される対象のリソースです。これを特定のロググループに制限することも、この例のようにワイルドカードを使用することもできます。
S3 バケットが作成されたアカウントのアカウント ID も含めることで、エクスポートを同じアカウント内で行えるようにすることをお勧めします。
S3 バケットでアクセス許可を設定するには
-
policy.json
という名前のファイルを作成し、次のアクセスポリシーを追加します。このとき、my-exported-logs
を S3 バケットの名前に変更し、Principal
をログデータのエクスポート先のリージョンのエンドポイント (us-west-1
など) に変更します。テキストエディタを使用してこのポリシーファイルを作成します。IAM コンソールは使用しないでください。{ "Version": "2012-10-17", "Statement": [ { "Action": "s3:GetBucketAcl", "Effect": "Allow", "Resource": "arn:aws:s3:::
my-exported-logs
", "Principal": { "Service": "logs.Region
.amazonaws.com" }, "Condition": { "StringEquals": { "aws:SourceAccount": [ "AccountId1", "AccountId2", ... ] }, "ArnLike": { "aws:SourceArn": [ "arn:aws:logs:Region
:AccountId1:log-group:*", "arn:aws:logs:Region
:AccountId2:log-group:*", ... ] } } }, { "Action": "s3:PutObject" , "Effect": "Allow", "Resource": "arn:aws:s3:::my-exported-logs
/*", "Principal": { "Service": "logs.Region
.amazonaws.com" }, "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control", "aws:SourceAccount": [ "AccountId1", "AccountId2", ... ] }, "ArnLike": { "aws:SourceArn": [ "arn:aws:logs:Region
:AccountId1:log-group:*", "arn:aws:logs:Region
:AccountId2:log-group:*", ... ] } } }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::create_export_task_caller_account
:role/role_name
" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::my-exported-logs/*", "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control" } } } ] } -
put-bucket-policy コマンドを使用して、バケットにアクセスポリシーとして追加したポリシーを設定します。このポリシーは、 CloudWatch ログがログデータを S3 バケットにエクスポートできるようにします。バケット所有者には、エクスポートされたすべてのオブジェクトに対する完全なアクセス権限があります。
aws s3api put-bucket-policy --bucket my-exported-logs --policy file://policy.json
警告
既存のバケットに既に 1 つ以上のポリシーがアタッチされている場合は、そのポリシーへの CloudWatch Logs アクセスのステートメントを追加します。バケットにアクセスするユーザーに適したアクセス許可であることを確認するために、アクセス許可の結果セットを評価することをお勧めします。
(オプション) ステップ 4: SSE- で暗号化されたバケットへのエクスポートKMS
このステップは、 でサーバー側の暗号化を使用する S3 バケットにエクスポートする場合にのみ必要です AWS KMS keys。この暗号化は SSE- と呼ばれますKMS。
で暗号化されたバケットにエクスポートするには SSE-KMS
-
テキストエディタを使用して
key_policy.json
という名前のファイルを作成し、以下のアクセスポリシーを追加します。ポリシーを追加する際、以下の点を変更します。-
置換
Region
ログのリージョンを使用します。 -
置換
account-ARN
KMS キーを所有するARNアカウントの 。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Allow CWL Service Principal usage", "Effect": "Allow", "Principal": { "Service": "logs.
Region
.amazonaws.com" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "*" }, { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": "account-ARN
" }, "Action": [ "kms:GetKeyPolicy*", "kms:PutKeyPolicy*", "kms:DescribeKey*", "kms:CreateAlias*", "kms:ScheduleKeyDeletion*", "kms:Decrypt" ], "Resource": "*" }, { "Sid": "Enable IAM Role Permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::create_export_task_caller_account
:role/role_name
" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "ARN_OF_KMS_KEY
" } ] } -
-
次のコマンドを入力します。
aws kms create-key --policy file://key_policy.json
以下は、このコマンドに対する出力例です。
{ "KeyMetadata": { "AWSAccountId": "
account_id
", "KeyId": "key_id
", "Arn": "arn:aws:kms:us-east-2:account_id
:key/key_id
", "CreationDate": "time
", "Enabled": true, "Description": "", "KeyUsage": "ENCRYPT_DECRYPT", "KeyState": "Enabled", "Origin": "AWS_KMS", "KeyManager": "CUSTOMER", "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT", "KeySpec": "SYMMETRIC_DEFAULT", "EncryptionAlgorithms": [ "SYMMETRIC_DEFAULT" ], "MultiRegion": false } -
テキストエディタを使用して、
bucketencryption.json
という名前のファイルを作成し、次の内容を記述します。{ "Rules": [ { "ApplyServerSideEncryptionByDefault": { "SSEAlgorithm": "aws:kms", "KMSMasterKeyID": "{KMS Key ARN}" }, "BucketKeyEnabled": true } ] }
-
次のコマンドを入力し、置き換えます。
bucket-name
ログをエクスポートするバケットの名前。aws s3api put-bucket-encryption --bucket
bucket-name
--server-side-encryption-configuration file://bucketencryption.jsonコマンドがエラーを返さなければ、このプロセスは成功しています。
ステップ 5: エクスポートタスクを作成する
次の コマンドを使用してエクスポートタスクを作成します。作成すると、エクスポートするデータのサイズに応じて、エクスポートタスクに数秒から数時間かかる可能性があります。
を使用して Amazon S3 にデータをエクスポートするには AWS CLI
-
ステップ 2: アクセス許可を設定する に記載されているように、十分なアクセス許可を使用してサインインします。
-
コマンドプロンプトで、次のcreate-export-taskコマンドを使用してエクスポートタスクを作成します。
aws logs create-export-task --profile CWLExportUser --task-name "
my-log-group-09-10-2015
" --log-group-name "my-log-group
" --from1441490400000
--to1441494000000
--destination "my-exported-logs
" --destination-prefix "export-task-output
"以下は出力例です。
{ "taskId": "
cda45419-90ea-4db5-9833-aade86253e66
" }