

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 를 사용하여 Amazon S3로 로그 데이터 내보내기 AWS CLI
<a name="S3ExportTasks"></a>

다음 예제에서는 내보내기 작업을 사용하여 이름이 `my-log-group`인 CloudWatch Logs 로그 그룹의 모든 데이터를 이름이 `amzn-s3-demo-bucket`인 Amazon S3 버킷으로 내보낼 수 있습니다. 이 예제에서는 이름이 `my-log-group`인 로그 그룹을 이미 생성했다고 가정합니다.

에서 암호화된 S3 버킷으로 로그 데이터 내보내기가 지원 AWS KMS 됩니다. 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(CLI)로 암호화된 대상 Amazon S3 버킷으로 내보내기](#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>

나중에 내보내기 작업을 생성하려면 `AmazonS3ReadOnlyAccess` 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)의 지침을 따릅니다.
+ ID 제공업체를 통해 IAM에서 관리되는 사용자:

  ID 페더레이션을 위한 역할을 생성합니다. *IAM 사용자 설명서*의 [Create a role for a third-party identity provider (federation)](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-idp.html)의 지침을 따릅니다.
+ IAM 사용자:
  + 사용자가 맡을 수 있는 역할을 생성합니다. *IAM 사용자 설명서*에서 [Create a role for an IAM user](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` 키의 계정 ID 목록은 사용자가 로그 데이터를 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(CLI)로 암호화된 대상 Amazon S3 버킷으로 내보내기
<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)
+ [교차 계정 내보내기(CLI)를 위한 S3 버킷에 대한 권한 설정](#S3Permissions-CLI-crossaccount)
+ [(선택 사항) 교차 계정 내보내기(CLI)를 위해 SSE-KMS로 암호화된 대상 Amazon S3 버킷으로 내보내기](#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>

먼저 CloudWatch Logs가 대상 계정에서 대상 Amazon S3 버킷에 대한 `s3:PutObject` 작업을 수행할 수 있도록 하려면 새 IAM 정책을 생성해야 합니다.

`s3:PutObject` 작업과 함께 정책에 포함된 추가 작업은 대상 버킷이 AWS KMS 암호화를 사용하는지 아니면 [S3 객체 소유권](https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html) 설정을 사용하여 ACLs 활성화되어 있는지에 따라 달라집니다.
+ KMS 암호화를 사용하는 경우 키 리소스에 대한 `kms:GenerateDataKey` 및 `kms:Decrypt` 작업을 추가합니다.
+ 버킷에서 ACL 활성화된 경우 버킷 리소스에 대한 `s3:PutObjectAcl` 작업을 추가합니다.

다음 정책에서 대상 S3 버킷의 이름으로 `amzn-s3-demo-bucket`를 변경합니다.

생성하는 정책은 대상 버킷의 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 정책 및 다음 권한으로 로그인해야 합니다.
+ `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)의 지침을 따릅니다.
+ ID 제공업체를 통해 IAM에서 관리되는 사용자:

  ID 페더레이션을 위한 역할을 생성합니다. *IAM 사용자 설명서*의 [Create a role for a third-party identity provider (federation)](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-idp.html)의 지침을 따릅니다.
+ IAM 사용자:
  + 사용자가 맡을 수 있는 역할을 생성합니다. *IAM 사용자 설명서*에서 [Create a role for an IAM user](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)의 지침을 따릅니다.

### 교차 계정 내보내기(CLI)를 위한 S3 버킷에 대한 권한 설정
<a name="S3Permissions-CLI-crossaccount"></a>

기본적으로 모든 S3 버킷 및 객체는 비공개입니다. 리소스 소유자(버킷을 생성한 계정)만 해당 버킷과 버킷에 포함된 객체에 액세스할 수 있습니다. 그러나 리소스 소유자는 액세스 정책을 작성하여 다른 리소스 및 사용자에게 액세스 권한을 부여할 수 있습니다.

**중요**  
S3 버킷을 더 안전하게 내보내려면 이제 로그 데이터를 S3 버킷으로 내보낼 수 있는 소스 계정 목록을 지정해야 합니다.  
다음 예제에서 `aws:SourceAccount` 키의 계정 ID 목록은 사용자가 로그 데이터를 S3 버킷으로 내보낼 수 있는 계정입니다. `aws:SourceArn` 키는 작업이 수행되는 리소스가 됩니다. 이를 특정 로그 그룹으로 제한하거나 이 예와 같이 와일드카드를 사용할 수 있습니다.  
동일한 계정 내에서 내보내기를 허용하려면 S3 버킷이 생성된 계정의 계정 ID도 포함하는 것이 좋습니다.

**S3 버킷에 대한 권한을 설정하려면**

1. 라는 파일을 생성하고 대상 S3 버킷의 이름으로 변경`amzn-s3-demo-bucket`하여와 같은 로그 데이터를 내보내는 리전의 `Principal` 엔드포인트에 다음 액세스 정책을 `policy.json` 추가합니다`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 액세스용 명령문을 해당 정책이나 정책들에 추가합니다. 발생한 권한 집합이 버킷에 액세스하는 사용자에게 적절한지를 여부를 평가하는 것이 좋습니다.

### (선택 사항) 교차 계정 내보내기(CLI)를 위해 SSE-KMS로 암호화된 대상 Amazon S3 버킷으로 내보내기
<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 키를 소유한 계정 번호로 바꿉니다.
   + kms-key ID가 있는 {{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}}"
   }
   ```