コンソールを使用してログデータを Amazon S3 にエクスポートする - Amazon CloudWatch Logs

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

コンソールを使用してログデータを Amazon S3 にエクスポートする

次の例では、Amazon CloudWatch コンソールを使用して、 という名前の Amazon CloudWatch Logs ロググループから という名前の Amazon S3 バケットmy-log-groupにすべてのデータをエクスポートしますmy-exported-logs

SSE-KMS によって暗号化された S3 バケットへのログデータのエクスポートは、サポートされています。DSSE-KMS で暗号化されたバケットへのエクスポートはサポートされていません。

エクスポートの設定方法の詳細は、エクスポート先の Amazon S3 バケットがエクスポート対象のログと同じアカウントにあるか、別のアカウントにあるかによって異なります。

同一アカウントへのエクスポート

Amazon S3 バケットがエクスポート対象のログと同じアカウントにある場合は、このセクションの手順を使用してください。

ステップ 1: Amazon S3 バケットを作成する

CloudWatch Logs 専用に作成されたバケットを使用することをお勧めします。ただし、既存のバケットを使用する場合は、ステップ 2 に進むことができます。

注記

S3 バケットは、エクスポートするログデータと同じリージョンに存在する必要があります。 CloudWatch Logs は、別のリージョンの S3 バケットへのデータのエクスポートをサポートしていません。

S3 バケットを作成するには
  1. https://console.aws.amazon.com/s3/でAmazon S3 コンソールを開きます。

  2. 必要に応じて、リージョンを変更します。ナビゲーションバーから、 CloudWatch ログが存在するリージョンを選択します。

  3. [バケットを作成] を選択します。

  4. [バケット名] にバケットの名前を入力します。

  5. リージョン で、 CloudWatch ログデータが存在するリージョンを選択します。

  6. [作成] を選択します。

ステップ 2: アクセス許可を設定する

ステップ 5 でエクスポートタスクを作成するには、AmazonS3ReadOnlyAccess IAM ロールと以下のアクセス許可でサインオンする必要があります。

  • logs:CreateExportTask

  • logs:CancelExportTask

  • logs:DescribeExportTasks

  • logs:DescribeLogStreams

  • logs:DescribeLogGroups

アクセス権限を付与するには、ユーザー、グループ、またはロールにアクセス許可を追加します。

ステップ 3: S3 バケットのアクセス許可を設定する

すべての S3 バケットとオブジェクトは、デフォルト状態でプライベートに設定されます。バケットを作成した AWS アカウント (リソース所有者) のみが、バケットとそれに含まれるオブジェクトにアクセスできます。ただし、リソース所有者は、アクセスポリシーを記述することで他のリソースおよびユーザーにアクセス権限を付与することができます。

ポリシーを設定する場合は、ランダムに生成された文字列をバケットのプレフィックスとして含めることをお勧めします。これにより、意図したログストリームのみがバケットにエクスポートされます。

重要

S3 バケットへのエクスポートをより安全にするために、ログデータを S3 バケットにエクスポートできるソースアカウントのリストの指定が必要になりました。

次の例では、aws:SourceAccount キー内のアカウント ID のリストは、ユーザーがログデータを S3 バケットにエクスポートできるアカウントになります。aws:SourceArn キーは、アクションが実行される対象のリソースです。これを特定のロググループに制限することも、この例のようにワイルドカードを使用することもできます。

S3 バケットが作成されたアカウントのアカウント ID も含めることで、エクスポートを同じアカウント内で行えるようにすることをお勧めします。

Amazon S3 バケットに対する権限を設定するには
  1. Amazon S3 コンソールで、ステップ 1 で作成したバケットを選択します。

  2. [Permissions (アクセス許可)]、[Add bucket policy (バケットポリシーの追加)] の順に選択します。

  3. [Bucket Policy Editor] (バケットポリシーエディタ) で、以下のポリシーを追加します。my-exported-logs を Amazon S3 バケットの名前に変更します。[プリンシパル] に us-west-1 などの正しいリージョンエンドポイントを指定してください。

    { "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:*", ... ] } } } ] }
  4. [Save] を選択して、バケットに対するアクセスポリシーとして追加したポリシーを設定します。このポリシーにより、 CloudWatch ログはログデータを S3 バケットにエクスポートできます。バケット所有者には、エクスポートされたすべてのオブジェクトに対する完全なアクセス権限があります。

    警告

    既存のバケットにすでに 1 つ以上のポリシーがアタッチされている場合は、そのポリシーへの CloudWatch ログアクセスのステートメントを追加します。バケットにアクセスするユーザーに適したアクセス許可であることを確認するために、アクセス許可の結果セットを評価することをお勧めします。

(オプション) ステップ 4: SSE-KMS で暗号化されたバケットへのエクスポート

このステップは、 でサーバー側の暗号化を使用する S3 バケットにエクスポートする場合にのみ必要です AWS KMS keys。この暗号化は SSE−KMS と呼ばれます。

SSE-KMS で暗号化されたバケットにエクスポートするには
  1. https://console.aws.amazon.com/kms で AWS KMS コンソールを開きます。

  2. を変更するには AWS リージョン、ページの右上隅にあるリージョンセレクターを使用します。

  3. 左のナビゲーションバーで、[Customer managed keys] (カスタマーマネージドキー) を選択します。

    [Create Key] (キーを作成) を選択します。

  4. [キーの種類] で、[対称] を選択します。

  5. [Key usage] (キーの使用) で、[Encrypt and decrypt] (暗号化および復号化) 、[Next] (次へ) の順に選択します。

  6. [Add labels] (ラベルを追加) で、キーのエイリアスを入力し、オプションで説明またはタグを追加します。次いで、[次へ] を選択します。

  7. [Key administrators] (キー管理者) で、このキーを管理できるユーザーを選択した後、[Next] (次へ) を選択します。

  8. [Define key usage permissions] (キーの使用アクセス許可を定義) の設定は変更せずに、[Next] (次へ) を選択します。

  9. 設定した内容を確認し、[Finish] (終了) を選択します。

  10. [Customer managed keys] (カスタマーマネージドキー) ページに戻り、この前に作成したキーの名前を選択します。

  11. [Key policy] (キーポリシー) タブを表示し、次に [Switch to policy view] (ポリシービューへの切り替え) を選択します。

  12. [Key policy] (キーポリシー) セクションで、[Edit] (編集) を選択します。

  13. キーポリシーステートメントのリストに、次のステートメントを追加します。これを行う際、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": "*" } ] }
  14. [変更の保存] をクリックします。

  15. https://console.aws.amazon.com/s3/でAmazon S3 コンソールを開きます。

  16. ステップ 1: S3 バケットを作成する。 で作成したバケットを検索し、その名前を選択します。

  17. プロパティ タブを選択します。[Default Encryption] (デフォルトの暗号化) で、[Edit] (編集) を選択します。

  18. [Server-side Encryption] (サーバー側の暗号化) で、[Enable] (有効化) を選択します。

  19. 暗号キーで、AWS Key Management Service キー (SSE−KMS) を選択します。

  20. AWS KMS キーから選択し、作成したキーを見つけます。

  21. [Bucket key] (バケットキー) で、[Enable] (有効化) を選択します。

  22. [変更の保存] をクリックします。

ステップ 5: エクスポートタスクを作成する

このステップでは、ロググループからログをエクスポートするためのエクスポートタスクを作成します。

CloudWatch コンソールを使用して Amazon S3 にデータをエクスポートするには
  1. ステップ 2: アクセス許可を設定する に記載されているように、十分なアクセス許可を使用してサインインします。

  2. https://console.aws.amazon.com/cloudwatch/ で CloudWatch コンソールを開きます。

  3. ナビゲーションペインで、[ロググループ] を選択します。

  4. [ロググループ] 画面で、ロググループの名前を選択します。

  5. [Actions (アクション)]、[Export data to Amazon S3 (データを Amazon S3 にエクスポート)] の順に選択します。

  6. [Export data to Amazon S3 (データを Amazon S3 にエクスポート)] 画面の [Define data export (データエクスポートを定義)] で、[From (開始)] と [To (終了)] を使用してデータをエクスポートする時間の範囲を設定します。

  7. ロググループに複数のログストリームがある場合は、特定のストリームのロググループデータを制限するログストリームプレフィックスを指定できます。[Advanced (詳細設定)] を選択して、[ストリームプレフィックス] にログストリームプレフィックスを入力します。

  8. [Choose S3 bucket] (S3 バケットの選択) で、S3 バケットに関連付けられたアカウントを選択します。

  9. [S3 bucket name] (S3 バケット名) で、 バケットを選択します。

  10. [S3 バケットプレフィックス] にバケットポリシーで指定した、ランダムに生成された文字列を入力します。

  11. [Export (エクスポート)] を選択して、ログデータを Amazon S3 にエクスポートします。

  12. Amazon S3 にエクスポートしたログデータのステータスを表示するには、[Actions (アクション)]、[View all exports to Amazon S3 (Amazon S3 へのすべてのエクスポートを表示)] を選択します。

クロスアカウントでのエクスポート

Amazon S3 バケットがエクスポート対象のログとは別のアカウントにある場合は、このセクションの手順を使用してください。

ステップ 1: Amazon S3 バケットを作成する

CloudWatch Logs 専用に作成されたバケットを使用することをお勧めします。ただし、既存のバケットを使用する場合は、ステップ 2 に進むことができます。

注記

S3 バケットは、エクスポートするログデータと同じリージョンに存在する必要があります。 CloudWatch Logs は、別のリージョンの S3 バケットへのデータのエクスポートをサポートしていません。

S3 バケットを作成するには
  1. https://console.aws.amazon.com/s3/でAmazon S3 コンソールを開きます。

  2. 必要に応じて、リージョンを変更します。ナビゲーションバーから、 CloudWatch ログが存在するリージョンを選択します。

  3. [バケットを作成] を選択します。

  4. [バケット名] にバケットの名前を入力します。

  5. リージョン で、 CloudWatch ログデータが存在するリージョンを選択します。

  6. [作成] を選択します。

ステップ 2: アクセス許可を設定する

まず、新しい IAM ポリシーを作成して、 CloudWatch ログが送信先アカウントの送信先 Amazon S3 バケットに対する アクセスs3:PutObject許可を持つようにする必要があります。

作成するポリシーは、レプリケート先バケットが AWS KMS 暗号化を使用するかどうかによって異なります。

Amazon S3 バケットにログをエクスポートする IAM ポリシーを作成するには
  1. IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。

  2. 左側のナビゲーションペインで、[ポリシー] を選択します。

  3. [ポリシーの作成] を選択します。

  4. [ポリシーエディター] セクションで、[JSON] を選択します。

  5. 送信先バケットが 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" } ] }
  6. [次へ] を選択します。

  7. ポリシー名を入力します。この名前を使用して、ポリシーを IAM ロールにアタッチします。

  8. 次に、[ポリシーの作成] を選択してポリシーを保存します。

ステップ 5 でエクスポートタスクを作成するために、AmazonS3ReadOnlyAccess IAM ロールでサインオンする必要があります。また、作成したばかりの IAM ポリシーと以下のアクセス許可でもサインオンする必要があります。

  • logs:CreateExportTask

  • logs:CancelExportTask

  • logs:DescribeExportTasks

  • logs:DescribeLogStreams

  • logs:DescribeLogGroups

アクセス権限を付与するには、ユーザー、グループ、またはロールにアクセス許可を追加します。

ステップ 3: S3 バケットのアクセス許可を設定する

すべての S3 バケットとオブジェクトは、デフォルト状態でプライベートに設定されます。バケットを作成した AWS アカウント (リソース所有者) のみが、バケットとそれに含まれるオブジェクトにアクセスできます。ただし、リソース所有者は、アクセスポリシーを記述することで他のリソースおよびユーザーにアクセス権限を付与することができます。

ポリシーを設定する場合は、ランダムに生成された文字列をバケットのプレフィックスとして含めることをお勧めします。これにより、意図したログストリームのみがバケットにエクスポートされます。

重要

S3 バケットへのエクスポートをより安全にするために、ログデータを S3 バケットにエクスポートできるソースアカウントのリストの指定が必要になりました。

次の例では、aws:SourceAccount キー内のアカウント ID のリストは、ユーザーがログデータを S3 バケットにエクスポートできるアカウントになります。aws:SourceArn キーは、アクションが実行される対象のリソースです。これを特定のロググループに制限することも、この例のようにワイルドカードを使用することもできます。

S3 バケットが作成されたアカウントのアカウント ID も含めることで、エクスポートを同じアカウント内で行えるようにすることをお勧めします。

Amazon S3 バケットに対する権限を設定するには
  1. Amazon S3 コンソールで、ステップ 1 で作成したバケットを選択します。

  2. [Permissions (アクセス許可)]、[Add bucket policy (バケットポリシーの追加)] の順に選択します。

  3. [Bucket Policy Editor] (バケットポリシーエディタ) で、以下のポリシーを追加します。my-exported-logs を Amazon S3 バケットの名前に変更します。[プリンシパル] に us-west-1 などの正しいリージョンエンドポイントを指定してください。

    { "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" } } } ] }
  4. [Save] を選択して、バケットに対するアクセスポリシーとして追加したポリシーを設定します。このポリシーにより、 CloudWatch ログはログデータを S3 バケットにエクスポートできます。バケット所有者には、エクスポートされたすべてのオブジェクトに対する完全なアクセス権限があります。

    警告

    既存のバケットにすでに 1 つ以上のポリシーがアタッチされている場合は、そのポリシーへの CloudWatch ログアクセスのステートメントを追加します。バケットにアクセスするユーザーに適したアクセス許可であることを確認するために、アクセス許可の結果セットを評価することをお勧めします。

(オプション) ステップ 4: SSE-KMS で暗号化されたバケットへのエクスポート

このステップは、 でサーバー側の暗号化を使用する S3 バケットにエクスポートする場合にのみ必要です AWS KMS keys。この暗号化は SSE−KMS と呼ばれます。

SSE-KMS で暗号化されたバケットにエクスポートするには
  1. https://console.aws.amazon.com/kms で AWS KMS コンソールを開きます。

  2. を変更するには AWS リージョン、ページの右上隅にあるリージョンセレクターを使用します。

  3. 左のナビゲーションバーで、[Customer managed keys] (カスタマーマネージドキー) を選択します。

    [Create Key] (キーを作成) を選択します。

  4. [キーの種類] で、[対称] を選択します。

  5. [Key usage] (キーの使用) で、[Encrypt and decrypt] (暗号化および復号化) 、[Next] (次へ) の順に選択します。

  6. [Add labels] (ラベルを追加) で、キーのエイリアスを入力し、オプションで説明またはタグを追加します。次いで、[次へ] を選択します。

  7. [Key administrators] (キー管理者) で、このキーを管理できるユーザーを選択した後、[Next] (次へ) を選択します。

  8. [Define key usage permissions] (キーの使用アクセス許可を定義) の設定は変更せずに、[Next] (次へ) を選択します。

  9. 設定した内容を確認し、[Finish] (終了) を選択します。

  10. [Customer managed keys] (カスタマーマネージドキー) ページに戻り、この前に作成したキーの名前を選択します。

  11. [Key policy] (キーポリシー) タブを表示し、次に [Switch to policy view] (ポリシービューへの切り替え) を選択します。

  12. [Key policy] (キーポリシー) セクションで、[Edit] (編集) を選択します。

  13. キーポリシーステートメントのリストに、次のステートメントを追加します。これを行う際、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" } ] }
  14. [変更の保存] をクリックします。

  15. https://console.aws.amazon.com/s3/でAmazon S3 コンソールを開きます。

  16. ステップ 1: S3 バケットを作成する。 で作成したバケットを検索し、その名前を選択します。

  17. プロパティ タブを選択します。[Default Encryption] (デフォルトの暗号化) で、[Edit] (編集) を選択します。

  18. [Server-side Encryption] (サーバー側の暗号化) で、[Enable] (有効化) を選択します。

  19. 暗号キーで、AWS Key Management Service キー (SSE−KMS) を選択します。

  20. AWS KMS キーから選択し、作成したキーを見つけます。

  21. [Bucket key] (バケットキー) で、[Enable] (有効化) を選択します。

  22. [変更の保存] をクリックします。

ステップ 5: エクスポートタスクを作成する

このステップでは、ロググループからログをエクスポートするためのエクスポートタスクを作成します。

CloudWatch コンソールを使用して Amazon S3 にデータをエクスポートするには
  1. ステップ 2: アクセス許可を設定する に記載されているように、十分なアクセス許可を使用してサインインします。

  2. https://console.aws.amazon.com/cloudwatch/ で CloudWatch コンソールを開きます。

  3. ナビゲーションペインで、[ロググループ] を選択します。

  4. [ロググループ] 画面で、ロググループの名前を選択します。

  5. [Actions (アクション)]、[Export data to Amazon S3 (データを Amazon S3 にエクスポート)] の順に選択します。

  6. [Export data to Amazon S3 (データを Amazon S3 にエクスポート)] 画面の [Define data export (データエクスポートを定義)] で、[From (開始)] と [To (終了)] を使用してデータをエクスポートする時間の範囲を設定します。

  7. ロググループに複数のログストリームがある場合は、特定のストリームのロググループデータを制限するログストリームプレフィックスを指定できます。[Advanced (詳細設定)] を選択して、[ストリームプレフィックス] にログストリームプレフィックスを入力します。

  8. [Choose S3 bucket] (S3 バケットの選択) で、S3 バケットに関連付けられたアカウントを選択します。

  9. [S3 bucket name] (S3 バケット名) で、 バケットを選択します。

  10. [S3 バケットプレフィックス] にバケットポリシーで指定した、ランダムに生成された文字列を入力します。

  11. [Export (エクスポート)] を選択して、ログデータを Amazon S3 にエクスポートします。

  12. Amazon S3 にエクスポートしたログデータのステータスを表示するには、[Actions (アクション)]、[View all exports to Amazon S3 (Amazon S3 へのすべてのエクスポートを表示)] を選択します。