

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

# 設定排程查詢的 S3 目的地
<a name="scheduled-queries-s3-destination"></a>

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

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

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

## 將結果交付至相同帳戶中的 Amazon S3 儲存貯體
<a name="scheduled-queries-s3-same-account"></a>

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

**設定相同帳戶的 Amazon S3 目的地 （主控台）**

1. 在將**查詢結果發佈至 S3** 區段中，針對 **S3 儲存貯**體，選取**此帳戶**。

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

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

1. 在**用於將查詢結果發佈至 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 儲存貯體
<a name="scheduled-queries-s3-cross-account"></a>

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

**設定跨帳戶 Amazon S3 目的地 （主控台）**

1. 在將**查詢結果發佈至 S3** 區段中，針對 **S3 儲存貯**體，選取**另一個帳戶**，並提供儲存貯體擁有帳戶的帳戶 ID 做為輸入。

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

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

1. 在**用於將查詢結果發佈至 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 金鑰加密結果
<a name="scheduled-queries-s3-kms-encryption"></a>

您可以選擇性地指定客戶受管 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`) 擔任該角色。