記錄群組層級訂閱篩選器 - Amazon CloudWatch 日誌

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

記錄群組層級訂閱篩選器

您可以將訂閱篩選器與 Kinesis Data Streams、Lambda 或 Firehose 搭配使用。透過訂閱篩選條件傳送至接收端服務的日誌是以 Base64 編碼,並以 gzip 格式壓縮。

您可以使用篩選條件和模式語法來搜尋日誌資料。

範例 1:訂閱篩選條件與 Kinesis Data Streams 搭配使用

下列範例會將訂閱篩選器與包含 AWS CloudTrail 事件的記錄群組產生關聯。訂閱篩選器會將「根」 AWS 登入資料所做的所有記錄活動提供給 Kinesis Data Streams 中稱為「」的串流RootAccess。如需如何將 AWS CloudTrail 事件傳送至 CloudWatch 記錄檔的相關資訊,請參閱《AWS CloudTrail 使用指南》中的〈將 CloudTrail 事件傳送至 CloudWatch 記錄檔

注意

在您建立 串流前,計算將產生的日誌資料磁碟區。請務必使用足夠碎片建立 串流,以處理此磁碟區。如果串流沒有足夠的碎片,日誌串流將受到限制。如需更多有關串流磁碟區限制的資訊,請參閱配額與限制

限流的交付項目會持續重試,時間長達 24 小時。24 小時後,失敗的交付項目就會捨棄。

若要降低限流風險,您可以採取下步驟:

  • 指定使randomdistribution或建立訂閱篩選器的 PutSubscriptionFilter時間 put-subscription-filter。根據預設,串流篩選器分佈是依照記錄資料流,這可能會造成節流。

  • 使用 CloudWatch 指標監控串流。如此可協助您找出任何限流,並根據實際情況調整您的組態。例如,DeliveryThrottling量度可用來追蹤將資料轉送至訂閱目的地時,已限制 CloudWatch 記錄的記錄事件數目。如需監控的詳細資訊,請參閱使用 CloudWatch 指標監控

  • 在 Kinesis Data Streams 中為您的串流使用隨需容量模式。隨需模式會在您的工作負載上升或下降時,立即為您的工作負載調整所需的容量。有關隨需容量模式的詳細資訊,請參閱隨需模式

  • 限制訂 CloudWatch 閱篩選器模式,使其符合 Kinesis 資料串流中串流的容量。如果您傳送太多資料至串流,您可能需要減少篩選條件大小或調整篩選條件標準。

建立 Kinesis Data Streams 的訂閱篩選條件
  1. 使用下列命令建立目的地 串流:

    $ C:\> aws kinesis create-stream --stream-name "RootAccess" --shard-count 1
  2. 等到 串流成為作用中 (這可能需要花費幾分鐘)。您可以使用下列 Kinesis 資料串流描述串流命令來檢查。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. 建立 IAM 角色,以授與 CloudWatch Log 權限,以將資料放入串流。首先,您將需要在檔案中建立信任政策 (例如,~/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 記錄訂閱篩選器。訂閱篩選條件會立即開始將即時日誌資料從所選的日誌群組傳送到 串流:

    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 Data Streams 碎片疊代器,並使用 Kinesis Data Streams get-records 命令來擷取一些 Kinesis Data Streams 記錄,以確認確有其事:

    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 Data Streams 才會開始傳回資料。

    您應該預期會看到含一系列的記錄的回應。Kinesis Data Streams 記錄中的 資料屬性採用 Base64 編碼並以 gzip 格式壓縮。您可以使用以下 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 錄檔可能會發出具有「CONTROL_MESSAGE」類型的 Kinesis Data Streams 記錄,主要用於檢查目的地是否可連線。

    logEvents

    實際的日誌資料,以一系列的日誌事件記錄呈現。「id」屬性是每個記錄事件的唯一識別符。

範例 2:訂閱篩選器 AWS Lambda

在此示例中,您將創建一個 CloudWatch 日誌訂閱過濾器,該過濾器將日誌數據發送到您的 AWS Lambda 函數。

注意

建立 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 記錄執行函數的權限。使用下列命令,將預留位置帳戶取代為您自己的帳戶且將預留位置日誌群組取代為要處理的日誌群組:

    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"} }。您可以從命令列使用以下 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 日誌可能會發出具有「CONTROL_MESSAGE」類型的 Lambda 記錄,主要用於檢查目標是否可訪問。

    logEvents

    實際的日誌資料,以一系列的日誌事件記錄呈現。「id」屬性是每個記錄事件的唯一識別符。

範例 3:使用 Amazon 資料 Firehose 的訂閱篩選器

在此範例中,您將建立 CloudWatch 日誌訂閱,將符合定義篩選器的任何傳入日誌事件傳送到 Amazon Data Firehose 交付串流。從 CloudWatch 日誌傳送到 Amazon 資料 Firehose 的資料已使用 gzip 等級 6 壓縮進行壓縮,因此您不需要在 Firehose 交付串流中使用壓縮。然後,您可以使用 Firehose 中的解壓縮功能來自動解壓縮記錄檔。如需詳細資訊,請參閱使 CloudWatch 用記錄寫入 Kinesis Data Firehose

注意

建立 Firehose 串流之前,請先計算將產生的記錄資料量。請務必建立可處理此磁碟區的 Firehose 串流。如果串流無法處理磁碟區、日誌串流將受到限制。如需有關 Firehose 串流音量限制的詳細資訊,請參閱 Amazon 資料 Firehose 資料限制。

若要建立 Firehose 的訂閱篩選器
  1. 建立 Amazon Simple Storage Service (Amazon S3) 儲存貯體。我們建議您使用專門為 CloudWatch Logs 建立的值區。不過,如果您想要使用現有的儲存貯體,請跳到步驟 2。

    執行以下命令,將預留位置 Region 換成您想要使用的區域:

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

    下列為範例輸出:

    { "Location": "/my-bucket" }
  2. 建立 IAM 角色,以授與 Amazon 資料 Firehose 將資料放入您的 Amazon S3 儲存貯體的權限。

    如需詳細資訊,請參閱 Amazon 資料 Firehose 開發人員指南中的使用 Amazon 資料 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. 建立權限原則,以定義 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. 如下所示建立目的地 Firehose 傳遞串流,並以您建立的角色和值區 ARN 取代 Ro leARN 和 BuckeTARN 的預留位置值:

    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"}'

    請注意,Firehose 會針對交付的 Amazon S3 物件,自動使用 YYYY/MM/DD/HH UTC 時間格式的前置詞。您可以指定在時間格式前綴前要新增的額外前綴。如果字首結尾是斜線 (/),則會在 Amazon S3 儲存貯體中顯示為資料夾。

  7. 等到串流成為作用中 (這可能需要花費幾分鐘)。您可以使用「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. 建立 IAM 角色,以授與 CloudWatch 記錄檔權限,以將資料放入 Firehose 交付串流。首先,使用文字編輯器來建立檔案 ~/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 Data Firehose 交付串流處於使用中狀態,且您已建立 IAM 角色之後,您可以建立 CloudWatch 日誌訂閱篩選器。訂閱篩選器會立即啟動從所選日誌群組到 Amazon 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 日誌會將符合篩選器模式的所有傳入日誌事件轉寄至 Amazon Data Firehose 交付串流。您的資料將會根據 Amazon 資料 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": {} }

    在 Amazon S3 物件中的資料會以 gzip 格式壓縮。您可以使用以下 Unix 命令來透過命令列檢查原始資料:

    zcat testfile.gz