本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
設定排程查詢的 S3 目的地
將 Amazon S3 設定為目的地,將排程查詢結果儲存為 JSON 檔案,以進行長期保留和分析。
使用 Amazon S3 做為目的地時,查詢結果會以 JSON 檔案的形式儲存在指定的儲存貯體和字首中。此選項非常適合封存結果、執行批次分析,或與處理 S3 資料的其他 AWS 服務整合。
您可以將查詢結果交付至與排程查詢相同的 AWS 帳戶中的 Amazon S3 儲存貯體,或交付至不同 AWS 帳戶中的儲存貯體。您也可以選擇使用客戶受管 AWS KMS 金鑰 (SSE-KMS) 加密查詢結果。
將結果交付至相同帳戶中的 Amazon S3 儲存貯體
當目的地 Amazon S3 儲存貯體與排程查詢位於相同 AWS 帳戶時,您可以直接從主控台瀏覽並選取儲存貯體。
設定相同帳戶的 Amazon S3 目的地 (主控台)
-
在將查詢結果發佈至 S3 區段中,針對 S3 儲存貯體,選取此帳戶。
-
針對 Amazon S3 URI,輸入將存放結果的 Amazon S3 儲存貯體和字首 (例如
s3://my-bucket/query-results/),或選擇瀏覽 Amazon S3 以導覽並選取現有的 Amazon S3 位置。 -
(選用) 若要使用客戶受管 AWS KMS 金鑰加密結果,請在 AWS KMS KMS 金鑰 ARN 欄位中輸入金鑰的 ARN。金鑰必須與目的地 Amazon S3 儲存貯體位於相同的 AWS 區域。如果您未指定 AWS KMS 金鑰,則會套用儲存貯體的預設加密設定。
-
在用於將查詢結果發佈至 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 目的地 (主控台)
-
在將查詢結果發佈至 S3 區段中,針對 S3 儲存貯體,選取另一個帳戶,並提供儲存貯體擁有帳戶的帳戶 ID 做為輸入。
-
對於 Amazon S3 URI,輸入另一個帳戶中目的地儲存貯體和字首的完整 Amazon S3 URI (例如
s3://cross-account-bucket/query-results/)。 -
(選用) 若要使用客戶受管 AWS KMS 金鑰加密結果,請在 AWS KMS KMS 金鑰 ARN 欄位中輸入金鑰的 ARN。金鑰必須與目的地 Amazon S3 儲存貯體位於相同的 AWS 區域。
-
在用於將查詢結果發佈至 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) 擔任該角色。