(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【AWS】CLIを用いてCloudWatchLogsのログをS3にエクスポートする

スポンサーリンク

やりたいこと

AWSのCloudWatchLogsのロググループを指定し、S3にログ情報を退避する。

環境情報
  • aws-cli/2.15.5

やり方

以下のようにロググループとS3のバケットを指定し、ログの範囲をUNIX時間で与える。

$ aws logs create-export-task --task-name "test" --log-group-name "/aws/test/" --from 1746834146000 --to 1747698146000 --destination "s3-test" --destination-prefix "hoge"

すると標準出力にエクスポートを行うタスクIDが表示され

{
    "taskId": "xx-xx-xx-xx-xx"
}

一定時間待つとS3にログデータが格納されている。

$ aws s3 ls s3://s3-test --recursive
...      1414 hoge/xx-xx-xx-xx-xx/test.log/000000.gz
...         27 hoge/aws-logs-write-test

以下、補足です。

補足

エクスポートタスクの状況は以下のコマンドで確認ができます。

$ aws logs describe-export-tasks --task-id xx-xx-xx-xx-xx
{
    "exportTasks": [
        {
            "taskId": "xx-xx-xx-xx-xx",
            "taskName": "test",
            "logGroupName": "/aws/test/",
            "from": 1746834146000,
            "to": 1747698146000,
            "destination": "s3-test",
            "destinationPrefix": "hoge",
            "status": {
                "code": "COMPLETED",
                "message": "Completed successfully"
            },
            "executionInfo": {
                "creationTime": 1747698375972,
                "completionTime": 1747698377767
            }
        }
    ]
}

また、指定したS3に出力されていたファイルはデフォルトで配置される模様。指定した時間にログがない場合は同ファイルのみが出力されます。

$ aws s3 cp s3://s3-test/hoge/aws-logs-write-test -
Permission Check Successful

同作業の注意点として、S3側に事前に権限設定を追加しておかないといけない点です。S3のパーミッションにて"logs.amazonaws.com"からのPutObject権限がないと、権限エラーとなるので事前にバケット側に設定追加が必要となります。

以上、ご参考になれば幸いです。