

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

# 使用 將日誌資料匯出至 Amazon S3 AWS CLI
<a name="S3ExportTasks"></a>

在以下範例中，您將使用匯出任務，從名為 `my-log-group` 的 CloudWatch Logs 日誌群組，將所有資料匯出至名為 `amzn-s3-demo-bucket` 的 Amazon S3 儲存貯體。此範例假設您已建立一個名為 `my-log-group` 的日誌群組。

 AWS KMS 支援將日誌資料匯出至 加密的 S3 儲存貯體。不支援匯出至使用 DSSE-KMS 加密的儲存貯體。

如何設定匯出作業的詳細方法，取決於您要存放匯出資料的 Amazon S3 儲存貯體是否與要匯出的日誌位於同一帳戶。

**Topics**
+ [相同帳戶匯出 (CLI)](#ExportSingleAccount-CLI)
+ [跨帳戶匯出 (CLI)](#ExportCrossAccount-CLI)

## 相同帳戶匯出 (CLI)
<a name="ExportSingleAccount-CLI"></a>

如果 Amazon S3 儲存貯體與要匯出的日誌位於同一帳戶，請參閱本區段的說明。

**Topics**
+ [建立 S3 儲存貯體 (CLI)](#CreateS3Bucket)
+ [設定存取許可 (CLI)](#CreateIAMUser-With-S3-Access-CLI)
+ [設定 S3 儲存貯體的許可 (CLI)](#S3Permissions)
+ [（選用） 匯出至使用 SSE-KMS 加密的目的地 Amazon S3 儲存貯體 (CLI)](#S3-Export-KMSEncrypted-CLI)
+ [建立匯出任務 (CLI)](#CreateExportTask)

### 建立 S3 儲存貯體 (CLI)
<a name="CreateS3Bucket"></a>

我們建議您使用專為 CloudWatch Logs 建立的儲存貯體。不過，如果您想要使用現有的儲存貯體，可以略過此程序。

**注意**  
S3 儲存貯體必須與要匯出的日誌資料位於相同的區域。CloudWatch Logs 不支援將資料匯出至不同區域中的 S3 儲存貯體。

**使用 建立 S3 儲存貯體 AWS CLI**  
在命令提示中執行以下 [create-bucket](https://docs.aws.amazon.com/cli/latest/reference/s3api/create-bucket.html) 命令，其中的 `LocationConstraint` 是您要匯出日誌資料的區域。

```
aws s3api create-bucket --bucket {{amzn-s3-demo-bucket}} --create-bucket-configuration LocationConstraint={{us-east-2}}
```

以下為範例輸出。

```
{
    "Location": "/{{amzn-s3-demo-bucket}}"
}
```

### 設定存取許可 (CLI)
<a name="CreateIAMUser-With-S3-Access-CLI"></a>

若要稍後建立匯出任務，您需要使用 IAM `AmazonS3ReadOnlyAccess` 角色和下列許可登入：
+ `logs:CreateExportTask`
+ `logs:CancelExportTask`
+ `logs:DescribeExportTasks`
+ `logs:DescribeLogStreams`
+ `logs:DescribeLogGroups`

若要提供存取權，請新增權限至您的使用者、群組或角色：
+ 中的使用者和群組 AWS IAM Identity Center：

  建立權限合集。請按照《*AWS IAM Identity Center 使用者指南*》中的[建立權限合集](https://docs.aws.amazon.com//singlesignon/latest/userguide/howtocreatepermissionset.html)說明進行操作。
+ 透過身分提供者在 IAM 中管理的使用者：

  建立聯合身分的角色。遵循《*IAM 使用者指南*》的[為第三方身分提供者 (聯合) 建立角色](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-idp.html)中的指示。
+ IAM 使用者：
  + 建立您的使用者可擔任的角色。請按照《*IAM 使用者指南*》的[為 IAM 使用者建立角色](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-user.html)中的指示。
  + (不建議) 將政策直接附加至使用者，或將使用者新增至使用者群組。請遵循《*IAM 使用者指南*》的[新增許可到使用者 (主控台)](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_users_change-permissions.html#users_change_permissions-add-console) 中的指示。

### 設定 S3 儲存貯體的許可 (CLI)
<a name="S3Permissions"></a>

依據預設，所有 S3 儲存貯體與物件皆為私有。只有資源擁有者、建立儲存貯體的帳戶，才能存取儲存貯體及其包含的任何物件。不過，資源擁有者可藉由編寫存取政策，選擇將存取許可授予其他資源或使用者。

**重要**  
為了使匯出至 S3 儲存貯體更加安全，現在要求您指定允許將日誌資料匯出至 S3 儲存貯體的來源帳戶清單。  
在下列範例中，`aws:SourceAccount`金鑰中的帳戶 IDs 清單會是使用者可以將日誌資料匯出至 S3 儲存貯體的帳戶。`aws:SourceArn` 金鑰會是正在採取行動的資源。您可以將其限制為具體的日誌群組，或使用萬用字元，如本範例所示。  
我們建議您也包含建立 S3 儲存貯體之帳戶的帳戶 ID，以允許在同一帳戶內匯出。

**設定 S3 儲存貯體的許可**

1. 建立名為 `policy.json` 的檔案，然後新增以下存取政策，將 `amzn-s3-demo-bucket` 變更為您的 S3 儲存貯體名稱，然後將 `Principal` 變更為您匯出日誌資料的區域端點，例如`us-east-1` 。請使用文字編輯器來建立此政策檔案。請勿使用 IAM 主控台。

------
#### [ JSON ]

****  

   ```
    
       {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
         {
             "Sid": "AllowGetBucketAcl",
             "Action": "s3:GetBucketAcl",
             "Effect": "Allow",
             "Resource": "arn:aws:s3:::{{amzn-s3-demo-bucket}}",
             "Principal": { "Service": "logs.{{us-east-1}}.amazonaws.com" },
             "Condition": {
               "StringEquals": {
                   "aws:SourceAccount": [
                       "{{123456789012}}",
                       "{{111122223333}}"
                   ]
               },
               "ArnLike": {
                       "aws:SourceArn": [
                           "arn:aws:logs:{{us-east-1}}:{{123456789012}}:log-group:*",
                           "arn:aws:logs:{{us-east-1}}:{{111122223333}}:log-group:*"
                       ]
               }
             }
         },
         {
             "Sid": "AllowPutObject",
             "Action": "s3:PutObject",
             "Effect": "Allow",
             "Resource": "arn:aws:s3:::{{amzn-s3-demo-bucket}}/*",
             "Principal": { "Service": "logs.{{us-east-1}}.amazonaws.com" },
             "Condition": {
               "StringEquals": {
                   "s3:x-amz-acl": "bucket-owner-full-control",
                   "aws:SourceAccount": [
                       "{{123456789012}}",
                       "{{111122223333}}"
                   ]
               },
               "ArnLike": {
                       "aws:SourceArn": [
                           "arn:aws:logs:{{us-east-1}}:{{123456789012}}:log-group:*",
                           "arn:aws:logs:{{us-east-1}}:{{111122223333}}:log-group:*"
                       ]
               }
             }
         }
       ]
   }
   ```

------

1. 使用 [put-bucket-policy](https://docs.aws.amazon.com/cli/latest/reference/s3api/put-bucket-policy.html) 命令，將您剛才新增的政策設定為您儲存貯體上的存取政策。此政策可讓 CloudWatch Logs 將日誌資料匯出至您的 S3 儲存貯體。儲存貯體擁有者將擁有所有匯出物件的完整許可。

   ```
   aws s3api put-bucket-policy --bucket amzn-s3-demo-bucket --policy file://policy.json
   ```
**警告**  
如果現有的儲存貯體已連接一個或多個政策，請新增陳述式讓 CloudWatch Logs 存取這個或這些政策。我們建議您評估所產生的一組許可，以確保它們適用於將存取儲存貯體的使用者。

### （選用） 匯出至使用 SSE-KMS 加密的目的地 Amazon S3 儲存貯體 (CLI)
<a name="S3-Export-KMSEncrypted-CLI"></a>

只有在您匯出至使用伺服器端加密的 S3 儲存貯體時，才需要此程序 AWS KMS keys。這種加密稱為 SSE-KMS。

**匯出至使用 SSE-KMS 加密的儲存貯體**

1. 使用文字編輯器建立名為 `key_policy.json` 的檔案，並新增下列存取政策。新增政策時，進行下列變更：
   + 將 {{Region}} 替換成您的日誌區域。
   + 將 {{account-ARN}} 替換成所擁有 KMS 金鑰的帳戶 ARN。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "Allow CWL Service Principal usage",
               "Effect": "Allow",
               "Principal": {
                   "Service": "logs.{{Region}}.amazonaws.com"
               },
               "Action": [
                   "kms:GenerateDataKey",
                   "kms:Decrypt"
               ],
               "Resource": "*"
           },
           {
               "Sid": "Enable IAM User Permissions",
               "Effect": "Allow",
               "Principal": {
                   "AWS": "{{account-ARN}}"
               },
               "Action": [
                   "kms:GetKeyPolicy*",
                   "kms:PutKeyPolicy*",
                   "kms:DescribeKey*",
                   "kms:CreateAlias*",
                   "kms:ScheduleKeyDeletion*",
                   "kms:Decrypt"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------

1. 輸入以下命令：

   ```
   aws kms create-key --policy file://key_policy.json
   ```

   以下為此命令的範例輸出：

   ```
   {
       "KeyMetadata": {
           "AWSAccountId": "{{account_id}}",
           "KeyId": "{{key_id}}",
           "Arn": "arn:aws:kms:us-east-2:{{account-ARN}}:key/{{key_id}}",
           "CreationDate": "{{time}}",
           "Enabled": true,
           "Description": "",
           "KeyUsage": "ENCRYPT_DECRYPT",
           "KeyState": "Enabled",
           "Origin": "AWS_KMS",
           "KeyManager": "CUSTOMER",
           "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT",
           "KeySpec": "SYMMETRIC_DEFAULT",
           "EncryptionAlgorithms": [
               "SYMMETRIC_DEFAULT"
           ],
           "MultiRegion": false
       }
   ```

1. 使用文字編輯器建立名為 `bucketencryption.json` 的檔案，包含下列內容。

   ```
   {
     "Rules": [
       {
         "ApplyServerSideEncryptionByDefault": {
           "SSEAlgorithm": "aws:kms",
           "KMSMasterKeyID": "{KMS Key ARN}"
         },
         "BucketKeyEnabled": true
       }
     ]
   }
   ```

1. 輸入下列命令，以您要匯出日誌的儲存貯體名稱取代 {{amzn-s3-demo-bucket}}。

   ```
   aws s3api put-bucket-encryption --bucket {{amzn-s3-demo-bucket}} --server-side-encryption-configuration file://bucketencryption.json
   ```

   如果命令沒有傳回錯誤，則表示該流程成功。

### 建立匯出任務 (CLI)
<a name="CreateExportTask"></a>

使用以下命令建立匯出任務。在您建立匯出任務後，此任務可能需花費幾秒到幾小時的時間，視匯出資料的大小而定。

**使用 將資料匯出至 Amazon S3 AWS CLI**

1. 如 [設定存取許可 (CLI)](#CreateIAMUser-With-S3-Access-CLI) 中所示，以足夠的許可登入。

1. 在命令提示中，使用下列 [create-export-task](https://docs.aws.amazon.com/cli/latest/reference/logs/create-export-task.html) 命令以建立匯出任務。

   ```
   aws logs create-export-task --profile CWLExportUser --task-name "{{my-log-group-09-10-2015}}" --log-group-name "{{my-log-group}}" --from {{1441490400000}} --to {{1441494000000}} --destination "{{amzn-s3-demo-bucket}}" --destination-prefix "{{export-task-output}}"
   ```

   以下為範例輸出。

   ```
   {
       "taskId": "{{cda45419-90ea-4db5-9833-aade86253e66}}"
   }
   ```

## 跨帳戶匯出 (CLI)
<a name="ExportCrossAccount-CLI"></a>

如果 Amazon S3 儲存貯體與要匯出的日誌位於不同帳戶，請參閱本區段的說明。

**Topics**
+ [建立 S3 儲存貯體以進行跨帳戶匯出 (CLI)](#CreateS3Bucket-CLI-crossaccount)
+ [設定跨帳戶匯出的存取許可 (CLI)](#CreateIAMUser-With-S3-Access-CLI-crossaccount)
+ [設定 S3 儲存貯體的跨帳戶匯出許可 (CLI)](#S3Permissions-CLI-crossaccount)
+ [（選用） 匯出至使用 SSE-KMS 加密的目的地 Amazon S3 儲存貯體以進行跨帳戶匯出 (CLI)](#S3-Export-KMSEncrypted-CLI-crossaccount)
+ [建立跨帳戶匯出的匯出任務 (CLI)](#CreateExportTask-CLI-crossaccount)

### 建立 S3 儲存貯體以進行跨帳戶匯出 (CLI)
<a name="CreateS3Bucket-CLI-crossaccount"></a>

我們建議您使用專為 CloudWatch Logs 建立的儲存貯體。不過，如果您想要使用現有的儲存貯體，您可以跳到步驟 2。

**注意**  
S3 儲存貯體必須與要匯出的日誌資料位於相同的區域。CloudWatch Logs 不支援將資料匯出至不同區域中的 S3 儲存貯體。

**使用 建立 S3 儲存貯體 AWS CLI**  
在命令提示中執行以下 [create-bucket](https://docs.aws.amazon.com/cli/latest/reference/s3api/create-bucket.html) 命令，其中的 `LocationConstraint` 是您要匯出日誌資料的區域。

```
aws s3api create-bucket --bucket {{amzn-s3-demo-bucket}} --create-bucket-configuration LocationConstraint={{us-east-2}}
```

以下為範例輸出。

```
{
    "Location": "/{{amzn-s3-demo-bucket}}"
}
```

### 設定跨帳戶匯出的存取許可 (CLI)
<a name="CreateIAMUser-With-S3-Access-CLI-crossaccount"></a>

首先，您必須建立新的 IAM 政策，讓 CloudWatch Logs 在目的地帳戶中擁有目的地 Amazon S3 儲存貯體`s3:PutObject`的動作。

除了 `s3:PutObject`動作之外，政策中包含的其他動作取決於目的地儲存貯體是否使用 AWS KMS 加密，或使用 [S3 物件擁有](https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html)權設定啟用 ACLs。
+ 如果使用 KMS 加密，請新增金鑰資源的 `kms:GenerateDataKey`和 `kms:Decrypt`動作
+ 如果在儲存貯體上啟用 ACLs請新增儲存貯體資源`s3:PutObjectAcl`的動作

在下列政策中`amzn-s3-demo-bucket`，將 變更為目的地 S3 儲存貯體的名稱。

您建立的政策取決於目的地儲存貯體是否使用 AWS KMS 加密。如果不使用 AWS KMS 加密，請使用下列內容建立政策。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::{{amzn-s3-demo-bucket}}/*"
        }
    ]
}
```

------

如果目的地儲存貯體使用 AWS KMS 加密，請使用下列內容建立政策。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
            "Effect": "Allow",
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::{{amzn-s3-demo-bucket}}/*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "kms:GenerateDataKey",
                "kms:Decrypt"
            ],
            "Resource": "arn:aws:kms:{{us-east-1}}:{{123456789012}}:key/{{1234abcd-12ab-34cd-56ef-1234567890ab}}"
        }
    ]
}
```

------

如果已在目的地儲存貯體上啟用 ACLs，請在上述政策中將 s3：PutObjectAcl 新增至 s3：PutObject 動作區塊。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
               "s3:PutObject",
               "s3:PutObjectAcl"
            ],
            "Resource": "arn:aws:s3:::{{amzn-s3-demo-bucket}}/*"
        }
    ]
}
```

------

若要建立匯出任務，您必須使用已連接 `AmazonS3ReadOnlyAccess`受管政策的 IAM 角色、上述建立的 IAM 政策，以及具有下列許可的 IAM 角色登入：
+ `logs:CreateExportTask`
+ `logs:CancelExportTask`
+ `logs:DescribeExportTasks`
+ `logs:DescribeLogStreams`
+ `logs:DescribeLogGroups`

若要提供存取權，請新增權限至您的使用者、群組或角色：
+ 中的使用者和群組 AWS IAM Identity Center：

  建立權限合集。請按照《*AWS IAM Identity Center 使用者指南*》中的[建立權限合集](https://docs.aws.amazon.com//singlesignon/latest/userguide/howtocreatepermissionset.html)說明進行操作。
+ 透過身分提供者在 IAM 中管理的使用者：

  建立聯合身分的角色。遵循《*IAM 使用者指南*》的[為第三方身分提供者 (聯合) 建立角色](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-idp.html)中的指示。
+ IAM 使用者：
  + 建立您的使用者可擔任的角色。請按照《*IAM 使用者指南*》的[為 IAM 使用者建立角色](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-user.html)中的指示。
  + (不建議) 將政策直接附加至使用者，或將使用者新增至使用者群組。請遵循《*IAM 使用者指南*》的[新增許可到使用者 (主控台)](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_users_change-permissions.html#users_change_permissions-add-console) 中的指示。

### 設定 S3 儲存貯體的跨帳戶匯出許可 (CLI)
<a name="S3Permissions-CLI-crossaccount"></a>

依據預設，所有 S3 儲存貯體與物件皆為私有。只有資源擁有者、建立儲存貯體的帳戶，才能存取儲存貯體及其包含的任何物件。不過，資源擁有者可藉由編寫存取政策，選擇將存取許可授予其他資源或使用者。

**重要**  
為了使匯出至 S3 儲存貯體更加安全，現在要求您指定允許將日誌資料匯出至 S3 儲存貯體的來源帳戶清單。  
在下列範例中，`aws:SourceAccount`金鑰中的帳戶 IDs 清單會是使用者可以將日誌資料匯出至 S3 儲存貯體的帳戶。`aws:SourceArn` 金鑰會是正在採取行動的資源。您可以將其限制為具體的日誌群組，或使用萬用字元，如本範例所示。  
我們建議您也包含建立 S3 儲存貯體之帳戶的帳戶 ID，以允許在同一帳戶內匯出。

**設定 S3 儲存貯體的許可**

1. 建立名為 的檔案，`policy.json`並將下列存取政策變更為目的地 S3 儲存貯體`amzn-s3-demo-bucket`的名稱，`Principal`並新增至您要匯出日誌資料的 區域的端點，例如 `us-west-1`。請使用文字編輯器來建立此政策檔案。請勿使用 IAM 主控台。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
         {
             "Action": "s3:GetBucketAcl",
             "Effect": "Allow",
             "Resource": "arn:aws:s3:::{{amzn-s3-demo-bucket}}",
             "Principal": { "Service": "logs.{{us-east-1}}.amazonaws.com" },
             "Condition": {
               "StringEquals": {
                   "aws:SourceAccount": [
                   "{{123456789012}}",
                   "{{111122223333}}"
                   ]
               },
               "ArnLike": {
                       "aws:SourceArn": [
                       "arn:aws:logs:{{us-east-1}}:{{123456789012}}:log-group:*",
                       "arn:aws:logs:{{us-east-1}}:{{111122223333}}:log-group:*"
                        ]
               }
             }
         },
         {
             "Action": "s3:PutObject" ,
             "Effect": "Allow",
             "Resource": "arn:aws:s3:::{{amzn-s3-demo-bucket}}/*",
             "Principal": { "Service": "logs.{{us-east-1}}.amazonaws.com" },
             "Condition": {
               "StringEquals": {
                   "s3:x-amz-acl": "bucket-owner-full-control",
                   "aws:SourceAccount": [
                   "{{123456789012}}",
                   "{{111122223333}}"
                   ]
               },
               "ArnLike": {
                       "aws:SourceArn": [
                       "arn:aws:logs:{{us-east-1}}:{{123456789012}}:log-group:*",
                       "arn:aws:logs:{{us-east-1}}:{{111122223333}}:log-group:*"
                       ]
               }
             }
         },
         {
             "Effect": "Allow",
             "Principal": {
             "AWS": "arn:aws:iam::{{111122223333}}:role/{{role_name}}"
             },
             "Action": "s3:PutObject",
             "Resource": "arn:aws:s3:::>amzn-s3-demo-bucket/*",
             "Condition": {
               "StringEquals": {
                   "s3:x-amz-acl": "bucket-owner-full-control"
               }
             }
          }
       ]
   }
   ```

------

1. 使用 [put-bucket-policy](https://docs.aws.amazon.com/cli/latest/reference/s3api/put-bucket-policy.html) 命令，將您剛才新增的政策設定為您儲存貯體上的存取政策。此政策可讓 CloudWatch Logs 將日誌資料匯出至您的 S3 儲存貯體。儲存貯體擁有者將擁有所有匯出物件的完整許可。

   ```
   aws s3api put-bucket-policy --bucket amzn-s3-demo-bucket --policy file://policy.json
   ```
**警告**  
如果現有的儲存貯體已連接一個或多個政策，請新增陳述式讓 CloudWatch Logs 存取這個或這些政策。我們建議您評估所產生的一組許可，以確保它們適用於將存取儲存貯體的使用者。

### （選用） 匯出至使用 SSE-KMS 加密的目的地 Amazon S3 儲存貯體以進行跨帳戶匯出 (CLI)
<a name="S3-Export-KMSEncrypted-CLI-crossaccount"></a>

只有在您匯出至使用伺服器端加密的 S3 儲存貯體時，才需要此程序 AWS KMS keys。這種加密稱為 SSE-KMS。

**匯出至使用 SSE-KMS 加密的儲存貯體**

1. 使用文字編輯器建立名為 `key_policy.json` 的檔案，並新增下列存取政策。新增政策時，進行下列變更：
   + 將 {{us-east-1}} 取代為日誌的區域。
   + 將 {{account-ARN}} 替換成所擁有 KMS 金鑰的帳戶 ARN。
   + 將 {{123456789012}} 取代為擁有 KMS 金鑰的帳號。
   + {{key\_id}} 與 kms-key ID。
   + {{role\_name}} 與用於建立匯出任務的角色。

------
#### [ JSON ]

****  

   ```
       {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "AllowCWLServicePrincipalUsage",
               "Effect": "Allow",
               "Principal": {
                   "Service": "logs.{{us-east-1}}.amazonaws.com"
               },
               "Action": [
                   "kms:GenerateDataKey",
                   "kms:Decrypt"
               ],
               "Resource": "*"
           },
           {
               "Sid": "EnableIAMUserPermissions",
               "Effect": "Allow",
               "Principal": {
                   "AWS": "{{account-ARN}}"
               },
               "Action": [
                   "kms:GetKeyPolicy*",
                   "kms:PutKeyPolicy*",
                   "kms:DescribeKey*",
                   "kms:CreateAlias*",
                   "kms:ScheduleKeyDeletion*",
                   "kms:Decrypt"
               ],
               "Resource": "*"
           },
           {
               "Sid": "EnableIAMRolePermissions",
               "Effect": "Allow",
               "Principal": {
                   "AWS": "arn:aws:iam::{{111122223333}}:role/{{role_name}}"
               },
               "Action": [
                   "kms:GenerateDataKey",
                   "kms:Decrypt"
               ],
               "Resource": "arn:aws:kms:{{us-east-1}}:{{123456789012}}:key/{{1234abcd-12ab-34cd-56ef-1234567890ab}}"
           }
       ]
   }
   ```

------

1. 輸入以下命令：

   ```
   aws kms create-key --policy file://key_policy.json
   ```

   以下為此命令的範例輸出：

   ```
   {
       "KeyMetadata": {
           "AWSAccountId": "{{account_id}}",
           "KeyId": "{{key_id}}",
           "Arn": "arn:aws:kms:us-east-1:{{123456789012}}:key/{{key_id}}",
           "CreationDate": "{{time}}",
           "Enabled": true,
           "Description": "",
           "KeyUsage": "ENCRYPT_DECRYPT",
           "KeyState": "Enabled",
           "Origin": "AWS_KMS",
           "KeyManager": "CUSTOMER",
           "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT",
           "KeySpec": "SYMMETRIC_DEFAULT",
           "EncryptionAlgorithms": [
               "SYMMETRIC_DEFAULT"
           ],
           "MultiRegion": false
       }
   ```

1. 使用文字編輯器建立名為 `bucketencryption.json` 的檔案，包含下列內容。

   ```
   {
     "Rules": [
       {
         "ApplyServerSideEncryptionByDefault": {
           "SSEAlgorithm": "aws:kms",
           "KMSMasterKeyID": "{KMS Key ARN}"
         },
         "BucketKeyEnabled": true
       }
     ]
   }
   ```

1. 輸入下列命令，以您要匯出日誌的儲存貯體名稱取代 {{amzn-s3-demo-bucket}}。

   ```
   aws s3api put-bucket-encryption --bucket {{amzn-s3-demo-bucket}} --server-side-encryption-configuration file://bucketencryption.json
   ```

   如果命令沒有傳回錯誤，則表示該流程成功。

### 建立跨帳戶匯出的匯出任務 (CLI)
<a name="CreateExportTask-CLI-crossaccount"></a>

使用以下命令建立匯出任務。在您建立匯出任務後，此任務可能需花費幾秒到幾小時的時間，視匯出資料的大小而定。

**使用 將資料匯出至 Amazon S3 AWS CLI**

1. 如 [設定存取許可 (CLI)](#CreateIAMUser-With-S3-Access-CLI) 中所示，以足夠的許可登入。

1. 在命令提示中，使用下列 [create-export-task](https://docs.aws.amazon.com/cli/latest/reference/logs/create-export-task.html) 命令以建立匯出任務。

   ```
   aws logs create-export-task --profile CWLExportUser --task-name "{{my-log-group-09-10-2015}}" --log-group-name "{{my-log-group}}" --from {{1441490400000}} --to {{1441494000000}} --destination "{{amzn-s3-demo-bucket}}" --destination-prefix "{{export-task-output}}"
   ```

   以下為範例輸出。

   ```
   {
       "taskId": "{{cda45419-90ea-4db5-9833-aade86253e66}}"
   }
   ```