CloudWatch Logs サブスクリプションフィルターの使用 - Amazon CloudWatch Logs

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

CloudWatch Logs サブスクリプションフィルターの使用

サブスクリプションフィルターは、Kinesis データストリーム、Lambda、または Kinesis Data Firehose で使用できます。サブスクリプションフィルターを介して宛先サービスに送信されるログは、base64 でエンコードされ、gzip 形式で圧縮されます。

フィルターとパターン構文を使用してログデータを検索できます。

例 1: Kinesis データストリームのサブスクリプションフィルター

次の例では、サブスクリプションフィルターを AWS CloudTrail イベントを含むロググループに関連付けます。サブスクリプションフィルターは、「ルート AWS 」認証情報によって行われたすべてのログアクティビティを、「」と呼ばれる Kinesis Data Streams のストリームに配信しますRootAccess。 CloudWatch ログに AWS CloudTrail イベントを送信する方法の詳細については、「 AWS CloudTrail ユーザーガイド」の CloudWatch 「 ログへの CloudTrail イベントの送信」を参照してください。

注記

ストリームを作成する前に、生成するログデータのボリュームを計算します。このボリュームを処理するために十分なシャードで ストリームを作成するように注意してください。ストリームに十分なシャードがないと、ログストリームはスロットリングされます。ストリームボリューム制限に関する詳細は、「クォータと制限」を参照してください。

スロットリングされた成果物は、最大 24 時間再試行されます。24 時間が経過すると、失敗した成果物は破棄されます。

スロットリングのリスクを軽減するには、次のステップに従います。

  • CloudWatch メトリクスを使用してストリームをモニタリングします。これにより、スロットリングを特定し、必要に応じて構成を調整できます。例えば、 DeliveryThrottlingメトリクスを使用して、データをサブスクリプション送信先に転送するときに CloudWatch Logs がスロットリングされたログイベントの数を追跡できます。モニタリングの詳細については、「CloudWatch メトリクスによるモニタリング」をご参照ください。

  • Kinesis Data Streams のストリームにはオンデマンドキャパシティモードを使用します。オンデマンドモードは、ワークロードが増加または縮小すると、即座にワークロードに対応します。オンデマンドキャパシティモードの詳細については、「オンデマンドモード」を参照してください。

  • Kinesis Data Streams のストリームの容量と一致するように CloudWatch サブスクリプションフィルターパターンを制限します。ストリームに送信するデータが多すぎる場合、フィルターサイズを小さくするか、フィルター条件を調整する必要があります。

Kinesis データストリームのサブスクリプションフィルタを作成するには
  1. 次のコマンドを使用して送信先 ストリームを作成します。

    $ C:\> aws kinesis create-stream --stream-name "RootAccess" --shard-count 1
  2. ストリームが [アクティブ] になるまで待ちます (これには 1~2 分かかる可能性があります)。次の Kinesis Data Streams describe-stream コマンドを使用して、StreamDescription.StreamStatus プロパティを確認できます。さらに、後のステップで必要になるため、StreamDescription.StreamARN 値を書き留めます。

    aws kinesis describe-stream --stream-name "RootAccess"

    出力例を次に示します。

    { "StreamDescription": { "StreamStatus": "ACTIVE", "StreamName": "RootAccess", "StreamARN": "arn:aws:kinesis:us-east-1:123456789012:stream/RootAccess", "Shards": [ { "ShardId": "shardId-000000000000", "HashKeyRange": { "EndingHashKey": "340282366920938463463374607431768211455", "StartingHashKey": "0" }, "SequenceNumberRange": { "StartingSequenceNumber": "49551135218688818456679503831981458784591352702181572610" } } ] } }
  3. ストリームにデータを置くアクセス許可を CloudWatch Logs に付与する IAM ロールを作成します。まず、ファイル (~/TrustPolicyForCWL-Kinesis.json など) で信頼ポリシーを作成する必要があります。テキストエディタを使用してこのポリシーを作成します。IAM コンソールを使用してポリシーを作成しないでください。

    このポリシーには、「混乱した代理」のセキュリティ上の問題を防止するための aws:SourceArn グローバル条件コンテキストキーが含まれています。詳細については、「混乱した代理の防止」を参照してください。

    { "Statement": { "Effect": "Allow", "Principal": { "Service": "logs.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringLike": { "aws:SourceArn": "arn:aws:logs:region:123456789012:*" } } } }
  4. create-role コマンドを使用し、信頼ポリシーファイルを指定して IAM ロールを作成します。後のステップで必要になるため、返された Role.Arn 値も書き留めます。

    aws iam create-role --role-name CWLtoKinesisRole --assume-role-policy-document file://~/TrustPolicyForCWL-Kinesis.json

    次は出力の例です。

    { "Role": { "AssumeRolePolicyDocument": { "Statement": { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": "logs.amazonaws.com" }, "Condition": { "StringLike": { "aws:SourceArn": { "arn:aws:logs:region:123456789012:*" } } } } }, "RoleId": "AAOIIAH450GAB4HC5F431", "CreateDate": "2015-05-29T13:46:29.431Z", "RoleName": "CWLtoKinesisRole", "Path": "/", "Arn": "arn:aws:iam::123456789012:role/CWLtoKinesisRole" } }
  5. アクセス許可ポリシーを作成して、 CloudWatch Logs がアカウントで実行できるアクションを定義します。まず、ファイル (~/PermissionsForCWL-Kinesis.json など) で権限ポリシーを作成します。テキストエディタを使用してこのポリシーを作成します。IAM コンソールを使用してポリシーを作成しないでください。

    { "Statement": [ { "Effect": "Allow", "Action": "kinesis:PutRecord", "Resource": "arn:aws:kinesis:region:123456789012:stream/RootAccess" } ] }
  6. 次のput-role-policyコマンドを使用して、アクセス許可ポリシーをロールに関連付けます。

    aws iam put-role-policy --role-name CWLtoKinesisRole --policy-name Permissions-Policy-For-CWL --policy-document file://~/PermissionsForCWL-Kinesis.json
  7. ストリームがアクティブ状態になり、IAM ロールを作成したら、 CloudWatch Logs サブスクリプションフィルターを作成できます。サブスクリプションフィルタにより、選択されたロググループから ストリームへのリアルタイムログデータの流れがすぐに開始されます。

    aws logs put-subscription-filter \ --log-group-name "CloudTrail/logs" \ --filter-name "RootAccess" \ --filter-pattern "{$.userIdentity.type = Root}" \ --destination-arn "arn:aws:kinesis:region:123456789012:stream/RootAccess" \ --role-arn "arn:aws:iam::123456789012:role/CWLtoKinesisRole"
  8. サブスクリプションフィルターを設定すると、 CloudWatch Logs はフィルターパターンに一致するすべての受信ログイベントをストリームに転送します。これが起きていることは、Kinesis データストリームシャードイテレータを取得し、Kinesis データストリーム get-records コマンドを使用していくつかの Kinesis データストリームレコードを取得することで確認できます。

    aws kinesis get-shard-iterator --stream-name RootAccess --shard-id shardId-000000000000 --shard-iterator-type TRIM_HORIZON
    { "ShardIterator": "AAAAAAAAAAFGU/kLvNggvndHq2UIFOw5PZc6F01s3e3afsSscRM70JSbjIefg2ub07nk1y6CDxYR1UoGHJNP4m4NFUetzfL+wev+e2P4djJg4L9wmXKvQYoE+rMUiFq+p4Cn3IgvqOb5dRA0yybNdRcdzvnC35KQANoHzzahKdRGb9v4scv+3vaq+f+OIK8zM5My8ID+g6rMo7UKWeI4+IWiK2OSh0uP" }
    aws kinesis get-records --limit 10 --shard-iterator "AAAAAAAAAAFGU/kLvNggvndHq2UIFOw5PZc6F01s3e3afsSscRM70JSbjIefg2ub07nk1y6CDxYR1UoGHJNP4m4NFUetzfL+wev+e2P4djJg4L9wmXKvQYoE+rMUiFq+p4Cn3IgvqOb5dRA0yybNdRcdzvnC35KQANoHzzahKdRGb9v4scv+3vaq+f+OIK8zM5My8ID+g6rMo7UKWeI4+IWiK2OSh0uP"

    Kinesis データストリームがデータを返し始めるまで、この呼び出しを数回行う必要があるかもしれない点に注意してください。

    レコードの配列を含むレスポンスが表示されます。Kinesis データストリームレコードの データ 属性は、base64 でエンコードされており、gzip 形式で圧縮されています。raw データは、コマンドラインから次の UNIX コマンドを使用して調べることができます。

    echo -n "<Content of Data>" | base64 -d | zcat

    base64 でデコードおよび解凍されたデータは、次の構造を使用して JSON としてフォーマットされます。

    { "owner": "111111111111", "logGroup": "CloudTrail/logs", "logStream": "111111111111_CloudTrail/logs_us-east-1", "subscriptionFilters": [ "Destination" ], "messageType": "DATA_MESSAGE", "logEvents": [ { "id": "31953106606966983378809025079804211143289615424298221568", "timestamp": 1432826855000, "message": "{\"eventVersion\":\"1.03\",\"userIdentity\":{\"type\":\"Root\"}" }, { "id": "31953106606966983378809025079804211143289615424298221569", "timestamp": 1432826855000, "message": "{\"eventVersion\":\"1.03\",\"userIdentity\":{\"type\":\"Root\"}" }, { "id": "31953106606966983378809025079804211143289615424298221570", "timestamp": 1432826855000, "message": "{\"eventVersion\":\"1.03\",\"userIdentity\":{\"type\":\"Root\"}" } ] }

    上のデータ構造の主な要素は次のとおりです。

    owner (オーナー)

    発行元ログデータの AWS アカウント ID。

    logGroup

    発行元ログデータのロググループ名。

    logStream

    発行元ログデータのログストリーム名。

    subscriptionFilters

    発行元ログデータと一致したサブスクリプションフィルタ名のリスト。

    messageType

    データメッセージは、"DATA_MESSAGE" 型を使用します。 CloudWatch Logs は、主に送信先に到達可能かどうかを確認するために、「CONTROL_MESSAGE」タイプの Kinesis Data Streams レコードを出力することがあります。

    logEvents

    ログイベントレコードの配列として表される実際のログデータ。"id" プロパティは、各ログイベントの一意識別子です。

例 2: を使用したサブスクリプションフィルター AWS Lambda

この例では、ログデータを AWS Lambda 関数に送信する CloudWatch Logs サブスクリプションフィルターを作成します。

注記

Lambda 関数を作成する前に、生成するログデータのボリュームを計算します。このボリュームを処理できる関数を作成するように注意してください。関数に十分なボリュームがないと、ログストリームはスロットリングされます。Lambda の制限の詳細については、「AWS Lambda の制限」を参照してください。

Lambda のサブスクリプションフィルタを作成するには
  1. AWS Lambda 関数を作成します。

    Lambda 実行ロールをセットアップ済みであることを確認します。詳細については、AWS Lambda デベロッパーガイドの「ステップ 2.2: IAM ロール (実行ロール) を作成する」を参照してください。

  2. テキストエディターを開き、以下の内容で helloWorld.js という名前のファイルを作成します。

    var zlib = require('zlib'); exports.handler = function(input, context) { var payload = Buffer.from(input.awslogs.data, 'base64'); zlib.gunzip(payload, function(e, result) { if (e) { context.fail(e); } else { result = JSON.parse(result.toString()); console.log("Event Data:", JSON.stringify(result, null, 2)); context.succeed(); } }); };
  3. helloWorld.js ファイルを圧縮して helloWorld.zip という名前で保存します。

  4. 次のコマンドを使用します。ロールは、最初のステップで設定した Lambda 実行ロールです。

    aws lambda create-function \ --function-name helloworld \ --zip-file fileb://file-path/helloWorld.zip \ --role lambda-execution-role-arn \ --handler helloWorld.handler \ --runtime nodejs12.x
  5. 関数を実行するアクセス許可を CloudWatch Logs に付与します。次のコマンドを使用します。プレースホルダーは自身のアカウントに置き換え、プレースホルダーロググループは処理するロググループに置き換えます。

    aws lambda add-permission \ --function-name "helloworld" \ --statement-id "helloworld" \ --principal "logs.amazonaws.com" \ --action "lambda:InvokeFunction" \ --source-arn "arn:aws:logs:region:123456789123:log-group:TestLambda:*" \ --source-account "123456789012"
  6. 次のコマンドを使用してサブスクリプションフィルタを作成します。プレースホルダーアカウントは自身のアカウントに置き換え、プレースホルダーロググループは処理するロググループに置き換えます。

    aws logs put-subscription-filter \ --log-group-name myLogGroup \ --filter-name demo \ --filter-pattern "" \ --destination-arn arn:aws:lambda:region:123456789123:function:helloworld
  7. (オプション) サンプルのログイベントを使用してテストします。コマンドプロンプトで、次のコマンドを実行します。これにより、サブスクライブしたストリームに単純なログメッセージを送信されます。

    Lambda 関数の出力を確認するには、Lambda 関数に移動して、/aws/lambda/helloworld にある出力を参照します。

    aws logs put-log-events --log-group-name myLogGroup --log-stream-name stream1 --log-events "[{\"timestamp\":<CURRENT TIMESTAMP MILLIS> , \"message\": \"Simple Lambda Test\"}]"

    Lambda の配列を含むレスポンスが表示されます。Lambda レコードの [Data] (データ) 属性は、base64 でエンコードされており、gzip 形式で圧縮されています。Lambda が受け取る実際のペイロードは、{ "awslogs": {"data": "BASE64ENCODED_GZIP_COMPRESSED_DATA"} } の形式になります。raw データは、コマンドラインから次の UNIX コマンドを使用して調べることができます。

    echo -n "<BASE64ENCODED_GZIP_COMPRESSED_DATA>" | base64 -d | zcat

    base64 でデコードおよび解凍されたデータは、次の構造を使用して JSON としてフォーマットされます。

    { "owner": "123456789012", "logGroup": "CloudTrail", "logStream": "123456789012_CloudTrail_us-east-1", "subscriptionFilters": [ "Destination" ], "messageType": "DATA_MESSAGE", "logEvents": [ { "id": "31953106606966983378809025079804211143289615424298221568", "timestamp": 1432826855000, "message": "{\"eventVersion\":\"1.03\",\"userIdentity\":{\"type\":\"Root\"}" }, { "id": "31953106606966983378809025079804211143289615424298221569", "timestamp": 1432826855000, "message": "{\"eventVersion\":\"1.03\",\"userIdentity\":{\"type\":\"Root\"}" }, { "id": "31953106606966983378809025079804211143289615424298221570", "timestamp": 1432826855000, "message": "{\"eventVersion\":\"1.03\",\"userIdentity\":{\"type\":\"Root\"}" } ] }

    上のデータ構造の主な要素は次のとおりです。

    owner (オーナー)

    発行元ログデータの AWS アカウント ID。

    logGroup

    発行元ログデータのロググループ名。

    logStream

    発行元ログデータのログストリーム名。

    subscriptionFilters

    発行元ログデータと一致したサブスクリプションフィルタ名のリスト。

    messageType

    データメッセージは、"DATA_MESSAGE" 型を使用します。 CloudWatch Logs は、主に送信先に到達可能かどうかを確認するために、「CONTROL_MESSAGE」タイプの Lambda レコードを出力することがあります。

    logEvents

    ログイベントレコードの配列として表される実際のログデータ。"id" プロパティは、各ログイベントの一意識別子です。

例 3: Amazon Kinesis Data Firehose を使用したサブスクリプションフィルター

この例では、定義したフィルターに一致する受信ログイベントを Amazon Kinesis Data Firehose 配信ストリームに送信する CloudWatch Logs サブスクリプションを作成します。 CloudWatch Logs から Amazon Kinesis Data Firehose に送信されるデータは、すでに gzip レベル 6 圧縮で圧縮されているため、Kinesis Data Firehose 配信ストリーム内で圧縮を使用する必要はありません。

注記

Kinesis Data Firehose ストリームを作成する前に、生成するログデータのボリュームを計算します。このボリュームを処理できる Kinesis Data Firehose ストリームを作成するように注意してください。ストリームがこのボリュームを処理できない場合、ログストリームはスロットリングされます。Kinesis Data Firehose ストリームボリュームの制限事項の詳細については、Amazon Kinesis Data Firehose のデータ制限をご参照ください。

Kinesis Data Firehose のサブスクリプションフィルタを作成するには
  1. Amazon Simple Storage Service (Amazon S3) バケットを作成します。 CloudWatch Logs 専用に作成されたバケットを使用することをお勧めします。ただし、既存のバケットを使用する場合は、ステップ 2 に進みます。

    次のコマンドを実行します。プレースホルダーリージョンは、使用するリージョンに置き換えます。

    aws s3api create-bucket --bucket my-bucket --create-bucket-configuration LocationConstraint=region

    出力例を次に示します。

    { "Location": "/my-bucket" }
  2. Amazon S3 バケットにデータを置くアクセス権限を Amazon Kinesis Data Firehose に付与する IAM ロールを作成します。

    詳細については、「Amazon Kinesis Data Firehose デベロッパーガイド」の「Controlling Access with Amazon Kinesis Data Firehose」(Amazon Kinesis Data Firehose によるアクセスの制御) を参照してください。

    まず、テキストエディタを使用して、次のようにファイル ~/TrustPolicyForFirehose.json で信頼ポリシーを作成します。

    { "Statement": { "Effect": "Allow", "Principal": { "Service": "firehose.amazonaws.com" }, "Action": "sts:AssumeRole" } }
  3. create-role コマンドを使用し、信頼ポリシーファイルを指定して IAM ロールを作成します。後のステップで必要になるため、返された Role.Arn 値を書き留めます。

    aws iam create-role \ --role-name FirehosetoS3Role \ --assume-role-policy-document file://~/TrustPolicyForFirehose.json { "Role": { "AssumeRolePolicyDocument": { "Statement": { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": "firehose.amazonaws.com" } } }, "RoleId": "AAOIIAH450GAB4HC5F431", "CreateDate": "2015-05-29T13:46:29.431Z", "RoleName": "FirehosetoS3Role", "Path": "/", "Arn": "arn:aws:iam::123456789012:role/FirehosetoS3Role" } }
  4. 権限ポリシーを作成し、Kinesis Data Firehose がアカウントで実行できるアクションを定義します。まず、テキストエディタを使用してファイル ~/PermissionsForFirehose.json で権限ポリシーを作成します。

    { "Statement": [ { "Effect": "Allow", "Action": [ "s3:AbortMultipartUpload", "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket", "s3:ListBucketMultipartUploads", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::my-bucket", "arn:aws:s3:::my-bucket/*" ] } ] }
  5. 次の put-role-policyコマンドを使用して、アクセス許可ポリシーをロールに関連付けます。

    aws iam put-role-policy --role-name FirehosetoS3Role --policy-name Permissions-Policy-For-Firehose --policy-document file://~/PermissionsForFirehose.json
  6. 次のように、送信先 Kinesis Data Firehose 送信ストリームを作成します。RoleARNBucketARN のプレースホルダー値を、作成したロールおよびバケット ARN に置き換えます。

    aws firehose create-delivery-stream \ --delivery-stream-name 'my-delivery-stream' \ --s3-destination-configuration \ '{"RoleARN": "arn:aws:iam::123456789012:role/FirehosetoS3Role", "BucketARN": "arn:aws:s3:::my-bucket"}'

    Kinesis Data Firehose は、Amazon S3 オブジェクトに提供された YYYY/MM/DD/HH UTC 時間形式をプレフィックスで自動的に使用する点に注意してください。時間形式プレフィックスの前に、追加のプレフィックスを指定できます。プレフィックスの最後がフォワードスラッシュ (/) の場合は、Amazon S3 バケット内のフォルダとして表示されます。

  7. ストリームがアクティブになるまで待ちます (これには数分かかる可能性があります)。Kinesis Data Firehose describe-delivery-stream コマンドを使用して、DeliveryStreamDescription.DeliveryStreamStatus プロパティを確認できます。さらに、後のステップで必要になるため、DeliveryStreamDescription.DeliveryStreamARN 値を書き留めます。

    aws firehose describe-delivery-stream --delivery-stream-name "my-delivery-stream" { "DeliveryStreamDescription": { "HasMoreDestinations": false, "VersionId": "1", "CreateTimestamp": 1446075815.822, "DeliveryStreamARN": "arn:aws:firehose:us-east-1:123456789012:deliverystream/my-delivery-stream", "DeliveryStreamStatus": "ACTIVE", "DeliveryStreamName": "my-delivery-stream", "Destinations": [ { "DestinationId": "destinationId-000000000001", "S3DestinationDescription": { "CompressionFormat": "UNCOMPRESSED", "EncryptionConfiguration": { "NoEncryptionConfig": "NoEncryption" }, "RoleARN": "delivery-stream-role", "BucketARN": "arn:aws:s3:::my-bucket", "BufferingHints": { "IntervalInSeconds": 300, "SizeInMBs": 5 } } } ] } }
  8. Kinesis Data Firehose 配信ストリームにデータを置くアクセス許可を CloudWatch Logs に付与する IAM ロールを作成します。まず、テキストエディタを使用してファイル ~/TrustPolicyForCWL.json で信頼ポリシーを作成します。

    このポリシーには、「混乱した代理」のセキュリティ上の問題を防止するための aws:SourceArn グローバル条件コンテキストキーが含まれています。詳細については、「混乱した代理の防止」を参照してください。

    { "Statement": { "Effect": "Allow", "Principal": { "Service": "logs.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringLike": { "aws:SourceArn": "arn:aws:logs:region:123456789012:*" } } } }
  9. create-role コマンドを使用し、信頼ポリシーファイルを指定して IAM ロールを作成します。後のステップで必要になるため、返された Role.Arn 値を書き留めます。

    aws iam create-role \ --role-name CWLtoKinesisFirehoseRole \ --assume-role-policy-document file://~/TrustPolicyForCWL.json { "Role": { "AssumeRolePolicyDocument": { "Statement": { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": "logs.amazonaws.com" }, "Condition": { "StringLike": { "aws:SourceArn": "arn:aws:logs:region:123456789012:*" } } } }, "RoleId": "AAOIIAH450GAB4HC5F431", "CreateDate": "2015-05-29T13:46:29.431Z", "RoleName": "CWLtoKinesisFirehoseRole", "Path": "/", "Arn": "arn:aws:iam::123456789012:role/CWLtoKinesisFirehoseRole" } }
  10. アクセス許可ポリシーを作成して、 CloudWatch Logs がアカウントで実行できるアクションを定義します。まず、テキストエディタを使用して権限ポリシーファイル (例: ~/PermissionsForCWL.json) を作成します。

    { "Statement":[ { "Effect":"Allow", "Action":["firehose:PutRecord"], "Resource":[ "arn:aws:firehose:region:account-id:deliverystream/delivery-stream-name"] } ] }
  11. コマンドを使用して、アクセス許可ポリシーをロールに関連付けます put-role-policy。

    aws iam put-role-policy --role-name CWLtoKinesisFirehoseRole --policy-name Permissions-Policy-For-CWL --policy-document file://~/PermissionsForCWL.json
  12. Amazon Kinesis Data Firehose 配信ストリームがアクティブ状態になり、IAM ロールを作成したら、 CloudWatch Logs サブスクリプションフィルターを作成できます。サブスクリプションフィルタにより、選択されたロググループから Amazon Kinesis Data Firehose 送信ストリームへのリアルタイムログデータの流れがすぐに開始されます。

    aws logs put-subscription-filter \ --log-group-name "CloudTrail" \ --filter-name "Destination" \ --filter-pattern "{$.userIdentity.type = Root}" \ --destination-arn "arn:aws:firehose:region:123456789012:deliverystream/my-delivery-stream" \ --role-arn "arn:aws:iam::123456789012:role/CWLtoKinesisFirehoseRole"
  13. サブスクリプションフィルターを設定すると、 CloudWatch Logs はフィルターパターンに一致するすべての受信ログイベントを Amazon Kinesis Data Firehose 配信ストリームに転送します。Amazon Kinesis Data Firehose 配信ストリームに設定された時間バッファ間隔に基づいて、Amazon S3 にデータが表示されるようになります。十分な時間が経過すると、Amazon S3 バケットをチェックしてデータを確認できます。

    aws s3api list-objects --bucket 'my-bucket' --prefix 'firehose/' { "Contents": [ { "LastModified": "2015-10-29T00:01:25.000Z", "ETag": "\"a14589f8897f4089d3264d9e2d1f1610\"", "StorageClass": "STANDARD", "Key": "firehose/2015/10/29/00/my-delivery-stream-2015-10-29-00-01-21-a188030a-62d2-49e6-b7c2-b11f1a7ba250", "Owner": { "DisplayName": "cloudwatch-logs", "ID": "1ec9cf700ef6be062b19584e0b7d84ecc19237f87b5" }, "Size": 593 }, { "LastModified": "2015-10-29T00:35:41.000Z", "ETag": "\"a7035b65872bb2161388ffb63dd1aec5\"", "StorageClass": "STANDARD", "Key": "firehose/2015/10/29/00/my-delivery-stream-2015-10-29-00-35-40-7cc92023-7e66-49bc-9fd4-fc9819cc8ed3", "Owner": { "DisplayName": "cloudwatch-logs", "ID": "1ec9cf700ef6be062b19584e0b7d84ecc19237f87b6" }, "Size": 5752 } ] }
    aws s3api get-object --bucket 'my-bucket' --key 'firehose/2015/10/29/00/my-delivery-stream-2015-10-29-00-01-21-a188030a-62d2-49e6-b7c2-b11f1a7ba250' testfile.gz { "AcceptRanges": "bytes", "ContentType": "application/octet-stream", "LastModified": "Thu, 29 Oct 2015 00:07:06 GMT", "ContentLength": 593, "Metadata": {} }

    Simple Storage Service (Amazon S3) オブジェクトのデータは、gzip 形式で圧縮されます。raw データは、コマンドラインから次の UNIX コマンドを使用して調べることができます。

    zcat testfile.gz