翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
を使用してログデータを Amazon S3 にエクスポートする AWS CLI
次の例では、エクスポートタスクを使用して、すべてのデータを my-log-group という名前の CloudWatch Logs ロググループから my-exported-logs という名前の Amazon S3 バケットにエクスポートします。この例では、「my-log-group」というロググループを作成済みであることを前提としています。
で暗号化された S3 バケットへのログデータのエクスポート AWS KMS がサポートされています。DSSE-KMS で暗号化されたバケットへのエクスポートはサポートされていません。
エクスポートの設定方法の詳細は、エクスポート先の Amazon S3 バケットがエクスポート対象のログと同じアカウントにあるか、別のアカウントにあるかによって異なります。
同一アカウントへのエクスポート
Amazon S3 バケットがエクスポート対象のログと同じアカウントにある場合は、このセクションの手順を使用してください。
トピック
ステップ 1: S3 バケットを作成する。
CloudWatch Logs 専用に作成したバケットを使用することをお勧めします。ただし、既存のバケットを使用する場合は、ステップ 2 に進むことができます。
注記
S3 バケットは、エクスポートするログデータと同じリージョンに存在している必要があります。CloudWatch Logs は、別のリージョンの S3 バケットへのデータのエクスポートをサポートしていません。
を使用して S3 バケットを作成するには AWS CLI
コマンドプロンプトで、次の create-bucket コマンドを実行します。ここで、LocationConstraint はログデータをエクスポートするリージョンです。
aws s3api create-bucket --bucketmy-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 ユーザーガイド」の「権限設定を作成する」の手順に従ってください。
-
IAM 内で、ID プロバイダーによって管理されているユーザー:
ID フェデレーションのロールを作成します。詳細については「IAM ユーザーガイド」の「サードパーティー ID プロバイダー (フェデレーション) 用のロールを作成する」を参照してください。
-
IAM ユーザー:
-
ユーザーが担当できるロールを作成します。手順については「IAM ユーザーガイド」の「IAM ユーザーのロールの作成」を参照してください。
-
(お奨めできない方法) ポリシーをユーザーに直接アタッチするか、ユーザーをユーザーグループに追加します。詳細については「IAM ユーザーガイド」の「ユーザー (コンソール) へのアクセス権限の追加」を参照してください。
-
ステップ 3: S3 バケットのアクセス許可を設定する
すべての S3 バケットとオブジェクトは、デフォルト状態でプライベートに設定されます。バケットを作成したアカウント (リソース所有者) のみが、バケットとそれに含まれるオブジェクトにアクセスできます。ただし、リソース所有者は、アクセスポリシーを記述することで他のリソースおよびユーザーにアクセス権限を付与することができます。
重要
S3 バケットへのエクスポートをより安全にするために、ログデータを S3 バケットにエクスポートできるソースアカウントのリストの指定が必要になりました。
次の例では、aws:SourceAccount キー内のアカウント ID のリストにあるのは、ユーザーがログデータを S3 バケットにエクスポートできるアカウントです。aws:SourceArn キーは、アクションが実行される対象のリソースです。これを特定のロググループに制限することも、この例のようにワイルドカードを使用することもできます。
S3 バケットが作成されたアカウントのアカウント ID も含めることで、エクスポートを同じアカウント内で行えるようにすることをお勧めします。
S3 バケットでアクセス許可を設定するには
-
policy.jsonという名前のファイルを作成し、次のアクセスポリシーを追加します。このとき、my-exported-logsを S3 バケットの名前に変更し、Principalをログデータのエクスポート先のリージョンのエンドポイント (us-west-1など) に変更します。テキストエディタを使用してこのポリシーファイルを作成します。IAM コンソールを使用しないでください。 -
put-bucket-policy コマンドを使用して、バケットでアクセスポリシーとして先ほど追加したポリシーを設定します。このポリシーにより、CloudWatch Logs は 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 に置き換えます。
-
-
次のコマンドを入力します。
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 --bucketbucket-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 Logs は、別のリージョンの S3 バケットへのデータのエクスポートをサポートしていません。
を使用して S3 バケットを作成するには AWS CLI
コマンドプロンプトで、次の create-bucket コマンドを実行します。ここで、LocationConstraint はログデータをエクスポートするリージョンです。
aws s3api create-bucket --bucketmy-exported-logs--create-bucket-configuration LocationConstraint=us-east-2
以下は出力の例です。
{ "Location": "/my-exported-logs" }
ステップ 2: アクセス許可を設定する
まず、新しい IAM ポリシーを作成して、CloudWatch Logs が宛先 Amazon S3 s3:PutObject バケットに対するアクセス許可を持つようにする必要があります。
ステップ 5 でエクスポートタスクを作成するには、AmazonS3ReadOnlyAccess IAM ロールとその他の特定のアクセス許可でサインオンする必要があります。その他の必要なアクセス許可の一部を含むポリシーを作成できます。
作成するポリシーは、宛先バケットが AWS KMS 暗号化を使用するかどうかによって異なります。 AWS KMS 暗号化を使用しない場合は、次の内容のポリシーを作成します。
送信先バケットが AWS KMS 暗号化を使用している場合は、次の内容のポリシーを作成します。
ステップ 5 でエクスポートタスクを作成するには、AmazonS3ReadOnlyAccess IAM ロール、先ほど作成した IAM ポリシー、および次のアクセス許可でサインオンする必要があります。
-
logs:CreateExportTask -
logs:CancelExportTask -
logs:DescribeExportTasks -
logs:DescribeLogStreams -
logs:DescribeLogGroups
アクセス権限を付与するにはユーザー、グループ、またはロールにアクセス許可を追加します。
-
以下のユーザーとグループ AWS IAM Identity Center:
アクセス許可セットを作成します。「AWS IAM Identity Center ユーザーガイド」の「権限設定を作成する」の手順に従ってください。
-
IAM 内で、ID プロバイダーによって管理されているユーザー:
ID フェデレーションのロールを作成します。詳細については「IAM ユーザーガイド」の「サードパーティー ID プロバイダー (フェデレーション) 用のロールを作成する」を参照してください。
-
IAM ユーザー:
-
ユーザーが担当できるロールを作成します。手順については「IAM ユーザーガイド」の「IAM ユーザーのロールの作成」を参照してください。
-
(お奨めできない方法) ポリシーをユーザーに直接アタッチするか、ユーザーをユーザーグループに追加します。詳細については「IAM ユーザーガイド」の「ユーザー (コンソール) へのアクセス権限の追加」を参照してください。
-
ステップ 3: S3 バケットのアクセス許可を設定する
すべての S3 バケットとオブジェクトは、デフォルト状態でプライベートに設定されます。バケットを作成したアカウント (リソース所有者) のみが、バケットとそれに含まれるオブジェクトにアクセスできます。ただし、リソース所有者は、アクセスポリシーを記述することで他のリソースおよびユーザーにアクセス権限を付与することができます。
重要
S3 バケットへのエクスポートをより安全にするために、ログデータを S3 バケットにエクスポートできるソースアカウントのリストの指定が必要になりました。
次の例では、aws:SourceAccount キー内のアカウント ID のリストにあるのは、ユーザーがログデータを S3 バケットにエクスポートできるアカウントです。aws:SourceArn キーは、アクションが実行される対象のリソースです。これを特定のロググループに制限することも、この例のようにワイルドカードを使用することもできます。
S3 バケットが作成されたアカウントのアカウント ID も含めることで、エクスポートを同じアカウント内で行えるようにすることをお勧めします。
S3 バケットでアクセス許可を設定するには
-
policy.jsonという名前のファイルを作成し、次のアクセスポリシーを追加します。このとき、my-exported-logsを S3 バケットの名前に変更し、Principalをログデータのエクスポート先のリージョンのエンドポイント (us-west-1など) に変更します。テキストエディタを使用してこのポリシーファイルを作成します。IAM コンソールを使用しないでください。 -
put-bucket-policy コマンドを使用して、バケットでアクセスポリシーとして先ほど追加したポリシーを設定します。このポリシーにより、CloudWatch Logs は 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 に置き換えます。
-
-
次のコマンドを入力します。
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 --bucketbucket-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" }