日誌群組層級訂閱篩選條件 - Amazon CloudWatch Logs

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

日誌群組層級訂閱篩選條件

您可以搭配 Amazon Kinesis Data Streams AWS Lambda或 Amazon Data Firehose 使用訂閱篩選條件。透過訂閱篩選條件傳送至服務的日誌,會以 base64 編碼並以 gzip 格式壓縮。本節提供您可以遵循的範例,以建立 CloudWatch Logs 訂閱篩選條件,將日誌資料傳送至 Firehose、Lambda 和 Kinesis Data Streams。

注意

如果您想要搜尋日誌資料,請參閱篩選和模式語法

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

下列範例會將訂閱篩選條件與包含 AWS CloudTrail 事件的日誌群組建立關聯。訂閱篩選條件將由 "Root" AWS 憑證記錄的每個活動,傳送到 Kinesis Data Streams 中名為 "RootAccess" 的串流。如需如何將 AWS CloudTrail 事件傳送至 CloudWatch Logs 的詳細資訊,請參閱AWS CloudTrail 《 使用者指南》中的將 CloudTrail Events 傳送至 CloudWatch Logs

注意

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

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

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

  • 當您使用 PutSubscriptionFilter put-subscription-filter 建立訂閱篩選條件randomdistribution時,請指定 。根據預設,串流篩選條件分佈是依日誌串流,這可能會導致限流。

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

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

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

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

    $ C:\> aws kinesis create-stream --stream-name "RootAccess" --shard-count 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 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 Logs 可能會發出含有 "CONTROL_MESSAGE" 類型的 Kinesis Data Streams 記錄,主要用於檢查是否可到達目的地。

    logEvents

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

範例 2:使用 的訂閱篩選條件 AWS Lambda

在此範例中,您將建立 CloudWatch Logs 訂閱篩選條件,將日誌資料傳送至您的 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 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"} }。您可以從命令列使用以下 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 Data Firehose 的訂閱篩選條件

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

注意

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

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

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

    aws s3api create-bucket --bucket amzn-s3-demo-bucket2 --create-bucket-configuration LocationConstraint=region

    下列為範例輸出:

    { "Location": "/amzn-s3-demo-bucket2" }
  2. 建立 IAM 角色,授予 Amazon Data Firehose 將資料放入 Amazon S3 儲存貯體的許可。

    如需詳細資訊,請參閱《Amazon Data Firehose 開發人員指南》中的使用 Amazon 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. 建立許可政策,以定義 Firehose 可以在您的帳戶上執行的動作。首先,使用文字編輯器來建立檔案 ~/PermissionsForFirehose.json 中的許可政策:

    { "Statement": [ { "Effect": "Allow", "Action": [ "s3:AbortMultipartUpload", "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket", "s3:ListBucketMultipartUploads", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket2", "arn:aws:s3:::amzn-s3-demo-bucket2/*" ] } ] }
  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 交付串流,將 RoleARNBucketARN 的預留位置值取代為您建立的角色和儲存貯體 ARNs:

    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:::amzn-s3-demo-bucket2"}'

    請注意,Firehose 會自動使用 YYYY/MM/DD/HH UTC 時間格式的字首來傳遞 Amazon S3 物件。您可以指定在時間格式前綴前要新增的額外前綴。如果字首結尾是斜線 (/),則會在 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:::amzn-s3-demo-bucket2", "BufferingHints": { "IntervalInSeconds": 300, "SizeInMBs": 5 } } } ] } }
  8. 建立 IAM 角色,授予 CloudWatch Logs 將資料放入 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 Logs 訂閱篩選條件。訂閱篩選條件會立即開始從所選日誌群組到 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 Logs 會將符合篩選條件模式的所有傳入日誌事件轉送至您的 Amazon Data Firehose 交付串流。您的資料會根據 Amazon Data Firehose 交付串流上設定的時間緩衝間隔,開始出現在 Amazon S3 中。一旦經過足夠的時間,您就可以檢查 Amazon S3 儲存貯體來驗證資料。

    aws s3api list-objects --bucket 'amzn-s3-demo-bucket2' --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 'amzn-s3-demo-bucket2' --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