コンソールを使用してログデータを Amazon S3 にエクスポートする
以下の例では、Amazon CloudWatch コンソールを使用して、my-log-group
という名前の Amazon CloudWatch Logs ロググループからすべてのデータを、my-exported-logs
という名前の Amazon S3 バケットにエクスポートします。
AWS KMS によって暗号化された S3 バケットへのログデータのエクスポートがサポートされています。
ステップ 1: Amazon S3 バケットを作成する
CloudWatch Logs 専用に作成したバケットを使用することをお勧めします。ただし、既存のバケットを使用する場合は、ステップ 2 に進むことができます。
S3 バケットは、エクスポートするログデータと同じリージョンに存在している必要があります。CloudWatch Logs は、別のリージョンの S3 バケットへのデータのエクスポートをサポートしていません。
S3 バケットを作成するには
Amazon S3 コンソール (https://console.aws.amazon.com/s3/
) を開きます。 -
必要に応じて、リージョンを変更します。ナビゲーションバーから、CloudWatch Logs があるリージョンを選択します。
-
[バケットの作成] を選択します。
-
[バケット名] にバケットの名前を入力します。
-
[Region (リージョン)] で、CloudWatch Logs データが存在するリージョンを選択します。
-
[Create] (作成) を選択します。
ステップ 2: Amazon S3 および CloudWatch Logs へのフルアクセス権を持つ IAM ユーザーを作成する
以下のステップで、必要なアクセス許可を持つ IAM ユーザーを作成します。
必要な IAM ユーザーを作成するには
IAM コンソール (https://console.aws.amazon.com/iam/
) を開きます。 -
[ユーザー]、[ユーザーの追加] を選択します。
-
ユーザー名 (例:
CWLExportUser
) を入力します。 -
[Programmatic access] (プログラムからのアクセス) と [AWS Management Console access] (コンソールへのアクセス) の両方を選択します。
-
[Autogenerated password] または [Custom password] を選択します。
-
[Next: Permissions] (次へ: 許可) を選択します。
-
[Attach existing policies directly (既存のポリシーを直接アタッチ)] を選択して、[
AmazonS3FullAccess
] および [CloudWatchLogsFullAccess
] ポリシーをユーザーにアタッチします。ポリシーを検索するには、検索ボックスを使用します。 -
[Next: Tags]、[Next: Review]、[Create user] の順に選択します。
ステップ 3: S3 バケットのアクセス許可を設定する
すべての S3 バケットとオブジェクトは、デフォルト状態でプライベートに設定されます。バケットを作成した AWS アカウント (リソース所有者) のみが、バケットとそれに含まれるオブジェクトにアクセスできます。ただし、リソース所有者は、アクセスポリシーを記述することで他のリソースおよびユーザーにアクセス権限を付与することができます。
ポリシーを設定する場合は、ランダムに生成された文字列をバケットのプレフィックスとして含めることをお勧めします。これにより、意図したログストリームのみがバケットにエクスポートされます。
S3 バケットへのエクスポートをより安全にするために、ログデータを S3 バケットにエクスポートできるソースアカウントのリストの指定が必要になりました。以下の例では、これらのアカウント ID のリストが、aws:SourceAccount
キーの中で指定されています。
S3 バケットが作成されたアカウントのアカウント ID も含めることで、エクスポートを同じアカウント内で行えるようにすることをお勧めします。
Amazon S3 バケットに対する権限を設定するには
-
Amazon S3 コンソールで、ステップ 1 で作成したバケットを選択します。
-
[Permissions (アクセス許可)]、[Add bucket policy (バケットポリシーの追加)] の順に選択します。
-
[Bucket Policy Editor] (バケットポリシーエディタ) で、以下のポリシーを追加します。
my-exported-logs
を S3 バケットの名前、random-string
をランダムに生成された文字列に変更します。[プリンシパル] に正しいリージョンエンドポイントを指定してください。-
{ "Version": "2012-10-17", "Statement": [ { "Action": "s3:GetBucketAcl", "Effect": "Allow", "Resource": "arn:aws:s3:::
my-exported-logs
", "Principal": { "Service": "logs.us-west-2
.amazonaws.com" } }, { "Action": "s3:PutObject" , "Effect": "Allow", "Resource": "arn:aws:s3:::my-exported-logs/random-string
/*", "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control", "aws:SourceAccount": [ "AccountId1
", "AccountId2
", ... ] } }, "Principal": { "Service": "logs.us-west-2
.amazonaws.com" } } ] }
-
-
[Save] を選択して、バケットに対するアクセスポリシーとして追加したポリシーを設定します。このポリシーにより、CloudWatch Logs は S3 バケットにログデータをエクスポートできるようになります。バケット所有者には、エクスポートされたすべてのオブジェクトに対する完全なアクセス権限があります。
警告 バケットにアタッチされているポリシーがすでに 1 つ以上ある場合は、そのポリシーに CloudWatch Logs アクセスのステートメントを追加します。バケットにアクセスするユーザーに適したアクセス許可であることを確認するために、アクセス許可の結果セットを評価することをお勧めします。
(オプション) ステップ 4: SSE-KMS で暗号化されたバケットへのエクスポート
このステップは、AWS KMS keys によるサーバー側の暗号化を使用する S3 バケットに対し、エクスポートを行う場合にのみ必要です。この暗号化は SSE−KMS と呼ばれます。
SSE-KMS で暗号化されたバケットにエクスポートするには
-
AWS KMS コンソール (https://console.aws.amazon.com/kms
) を開きます。 -
AWS リージョン を変更するには、ページの右上隅にあるリージョンセレクターを使用します。
-
左のナビゲーションバーで、[Customer managed keys] (カスタマーマネージドキー) を選択します。
[Create Key] (キーを作成) を選択します。
-
[キーの種類] で、[対称] を選択します。
-
[Key usage] (キーの使用) で、[Encrypt and decrypt] (暗号化および復号化) 、[Next] (次へ) の順に選択します。
-
[Add labels] (ラベルを追加) で、キーのエイリアスを入力し、オプションで説明またはタグを追加します。続いて、[Next] (次へ) を選択します。
-
[Key administrators] (キー管理者) で、このキーを管理できるユーザーを選択した後、[Next] (次へ) を選択します。
-
[Define key usage permissions] (キーの使用アクセス許可を定義) の設定は変更せずに、[Next] (次へ) を選択します。
-
設定した内容を確認し、[Finish] (終了) を選択します。
-
[Customer managed keys] (カスタマーマネージドキー) ページに戻り、この前に作成したキーの名前を選択します。
-
[Key policy] (キーポリシー) タブを表示し、次に [Switch to policy view] (ポリシービューへの切り替え) を選択します。
-
[Key policy] (キーポリシー) セクションで、[Edit] (編集) を選択します。
-
キーポリシーステートメントのリストに、次のステートメントを追加します。これを行う際、
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": "*" } ] } -
[Save changes] (変更の保存) をクリックします。
Amazon S3 コンソール (https://console.aws.amazon.com/s3/
) を開きます。 -
ステップ 1: S3 バケットを作成する。 で作成したバケットを検索し、その名前を選択します。
-
プロパティ タブを選択します。[Default Encryption] (デフォルトの暗号化) で、[Edit] (編集) を選択します。
-
[Server-side Encryption] (サーバー側の暗号化) で、[Enable] (有効化) を選択します。
-
暗号キーで、AWS Key Management Service キー (SSE−KMS) を選択します。
-
[Choose from your AWS KMS keys] (AWS KMS キーから選択する) を選択し、作成したキーを検索します。
-
[Bucket key] (バケットキー) で、[Enable] (有効化) を選択します。
-
[Save changes] (変更の保存) をクリックします。
ステップ 5: エクスポートタスクを作成する
このステップでは、ロググループからログをエクスポートするためのエクスポートタスクを作成します。
CloudWatch コンソールを使用して Amazon S3 にデータをエクスポートするには
-
ステップ 2: Amazon S3 および CloudWatch Logs へのフルアクセス権を持つ IAM ユーザーを作成するで作成した IAM ユーザーとしてサインインします。
CloudWatch コンソール (https://console.aws.amazon.com/cloudwatch/
) を開きます。 -
ナビゲーションペインで、[Log groups] (ロググループ) を選択します。
-
[ロググループ] 画面で、ロググループの名前を選択します。
-
[Actions (アクション)]、[Export data to Amazon S3 (データを Amazon S3 にエクスポート)] の順に選択します。
-
[Export data to Amazon S3 (データを Amazon S3 にエクスポート)] 画面の [Define data export (データエクスポートを定義)] で、[From (開始)] と [To (終了)] を使用してデータをエクスポートする時間の範囲を設定します。
-
ロググループに複数のログストリームがある場合は、特定のストリームのロググループデータを制限するログストリームプレフィックスを指定できます。[Advanced (詳細設定)] を選択して、[ストリームプレフィックス] にログストリームプレフィックスを入力します。
-
[Choose S3 bucket] (S3 バケットの選択) で、S3 バケットに関連付けられたアカウントを選択します。
-
[S3 bucket name] (S3 バケット名) で、 バケットを選択します。
-
[S3 バケットプレフィックス] にバケットポリシーで指定した、ランダムに生成された文字列を入力します。
-
[Export (エクスポート)] を選択して、ログデータを Amazon S3 にエクスポートします。
-
Amazon S3 にエクスポートしたログデータのステータスを表示するには、[Actions (アクション)]、[View all exports to Amazon S3 (Amazon S3 へのすべてのエクスポートを表示)] を選択します。