View a markdown version of this page

設定排程查詢的 S3 目的地 - Amazon CloudWatch Logs

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

設定排程查詢的 S3 目的地

將 Amazon S3 設定為目的地,將排程查詢結果儲存為 JSON 檔案,以進行長期保留和分析。

使用 Amazon S3 做為目的地時,查詢結果會以 JSON 檔案的形式儲存在指定的儲存貯體和字首中。此選項非常適合封存結果、執行批次分析,或與處理 S3 資料的其他 AWS 服務整合。

您可以將查詢結果交付至與排程查詢相同的 AWS 帳戶中的 Amazon S3 儲存貯體,或交付至不同 AWS 帳戶中的儲存貯體。您也可以選擇使用客戶受管 AWS KMS 金鑰 (SSE-KMS) 加密查詢結果。

將結果交付至相同帳戶中的 Amazon S3 儲存貯體

當目的地 Amazon S3 儲存貯體與排程查詢位於相同 AWS 帳戶時,您可以直接從主控台瀏覽並選取儲存貯體。

設定相同帳戶的 Amazon S3 目的地 (主控台)
  1. 在將查詢結果發佈至 S3 區段中,針對 S3 儲存貯體,選取此帳戶

  2. 針對 Amazon S3 URI,輸入將存放結果的 Amazon S3 儲存貯體和字首 (例如 s3://my-bucket/query-results/),或選擇瀏覽 Amazon S3 以導覽並選取現有的 Amazon S3 位置。

  3. (選用) 若要使用客戶受管 AWS KMS 金鑰加密結果,請在 AWS KMS KMS 金鑰 ARN 欄位中輸入金鑰的 ARN。金鑰必須與目的地 Amazon S3 儲存貯體位於相同的 AWS 區域。如果您未指定 AWS KMS 金鑰,則會套用儲存貯體的預設加密設定。

  4. 用於將查詢結果發佈至 Amazon S3 的 IAM 角色區段中,選擇使用預設許可自動建立新角色以自動設定所需許可,或選擇使用現有角色來選取具有所需政策的現有 IAM 角色。

目的地交付 IAM 角色需要下列許可:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::my-bucket/prefix/*", "Condition": { "StringEquals": { "aws:ResourceAccount": "111122223333" } } } ] }

將結果交付至另一個帳戶中的 Amazon S3 儲存貯體

您可以將排定的查詢結果交付至不同 AWS 帳戶中的 Amazon S3 儲存貯體。使用跨帳戶儲存貯體時,您必須提供 Amazon S3 URI 和儲存貯體擁有帳戶的帳戶 ID。

設定跨帳戶 Amazon S3 目的地 (主控台)
  1. 在將查詢結果發佈至 S3 區段中,針對 S3 儲存貯體,選取另一個帳戶,並提供儲存貯體擁有帳戶的帳戶 ID 做為輸入。

  2. 對於 Amazon S3 URI,輸入另一個帳戶中目的地儲存貯體和字首的完整 Amazon S3 URI (例如 s3://cross-account-bucket/query-results/)。

  3. (選用) 若要使用客戶受管 AWS KMS 金鑰加密結果,請在 AWS KMS KMS 金鑰 ARN 欄位中輸入金鑰的 ARN。金鑰必須與目的地 Amazon S3 儲存貯體位於相同的 AWS 區域。

  4. 用於將查詢結果發佈至 Amazon S3 的 IAM 角色區段中,選擇使用預設許可自動建立新角色以自動設定所需許可,或選擇使用現有角色來選取具有所需政策的現有 IAM 角色。

跨帳戶交付需要雙方的許可。來源帳戶中的目的地交付 IAM 角色需要下列許可:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::cross-account-bucket/prefix/*", "Condition": { "StringEquals": { "aws:ResourceAccount": "123456789012" } } } ] }

目的地帳戶中的 Amazon S3 儲存貯體政策必須授予來源帳戶的 IAM 角色寫入物件的許可:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowScheduledQueryRolePutObject", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/my-s3-delivery-role" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::cross-account-bucket/prefix/*" } ] }

使用客戶受管 AWS KMS 金鑰加密結果

您可以選擇性地指定客戶受管 AWS KMS 金鑰,以使用 SSE-KMS 加密交付至 Amazon S3 的查詢結果。 AWS KMS 金鑰可以位於與排程查詢相同的帳戶中,也可以位於不同的帳戶中。

當您指定 AWS KMS 金鑰時,排程查詢會使用該金鑰透過 SSE-KMS 加密結果。當您未指定 AWS KMS 金鑰時,會套用儲存貯體的預設加密設定。如果使用客戶受管金鑰以預設 SSE-KMS 加密設定儲存貯體,則目的地交付 IAM 角色仍必須擁有該金鑰的kms:GenerateDataKey許可。

目的地交付 IAM 角色需要 AWS KMS 金鑰的kms:GenerateDataKey許可。下列範例顯示具有客戶受管 AWS KMS 金鑰的 Amazon S3 目的地所需的許可:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::my-bucket/prefix/*", "Condition": { "StringEquals": { "aws:ResourceAccount": "111122223333" } } }, { "Effect": "Allow", "Action": "kms:GenerateDataKey", "Resource": "arn:aws:kms:us-east-1:111122223333:key/key-id", "Condition": { "StringEquals": { "kms:ViaService": "s3.us-east-1.amazonaws.com" }, "StringLike": { "kms:EncryptionContext:aws:s3:arn": "arn:aws:s3:::my-bucket*" } } } ] }

當 AWS KMS 金鑰位於與目的地交付 IAM 角色不同的帳戶中時,擁有金鑰帳戶中的 AWS KMS 金鑰政策必須明確授予角色存取權:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowScheduledQueryRoleToEncrypt", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/my-s3-delivery-role" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "s3.us-east-1.amazonaws.com" }, "StringLike": { "kms:EncryptionContext:aws:s3:arn": "arn:aws:s3:::my-bucket*" } } } ] }
注意

當 AWS KMS 金鑰和目的地交付 IAM 角色位於相同帳戶時,如果 AWS KMS 金鑰政策包含預設的「啟用 IAM 政策」根陳述式,則單獨 IAM 身分政策就已足夠。只有在 AWS KMS 金鑰政策未委派給 IAM 時,才需要明確的金鑰政策授予。

用於將查詢結果發佈到 Amazon S3 的 IAM 角色必須與 IAM 角色分開設定,以便排程查詢執行。此區隔允許精細存取控制,其中執行角色可以執行查詢,而 Amazon S3 角色專門處理結果交付。這兩個角色都必須包含信任政策,允許 CloudWatch Logs 服務 (logs.amazonaws.com) 擔任該角色。