

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

# Firehose를 사용한 교차 계정 교차 리전 로그 데이터 공유
<a name="CrossAccountSubscriptions-Firehose"></a>

계정에서 로그 데이터를 공유하려면 로그 데이터 발신자 및 수신자를 설정해야 합니다.
+ **로그 데이터 발신자** - 수신자로부터 대상 정보를 얻고 지정된 대상으로 로그 이벤트를 전송할 준비가 되었음을 CloudWatch Logs에 알립니다. 이 섹션의 나머지 부분에서는 가상 AWS 계정 번호가 111111111111인 로그 데이터 발신자가 표시됩니다.
+ **로그 데이터 수신자** - Amazon Kinesis Data Streams 스트림을 캡슐화하는 대상을 설정하고 CloudWatch Logs에 수신자가 로그 데이터를 수신하고 싶다는 사실을 알립니다. 그런 다음 수신자는 이 대상에 대한 정보를 발신자와 공유합니다. 이 섹션의 나머지 부분에서는 로그 데이터 수신자가 가상 AWS 계정 번호 222222222222로 표시됩니다.

이 섹션의 예에서는 Amazon S3 스토리지와 함께 Firehose 전송 스트림을 사용합니다. 다른 설정을 사용하여 Firehose 전송 스트림을 설정할 수도 있습니다. 자세한 내용은 [Creating a Firehose Delivery Stream](https://docs.aws.amazon.com/firehose/latest/dev/basic-create.html)을 참조하세요.

**참고**  
로그 그룹과 대상은 동일한 AWS 리전에 있어야 합니다. 그러나 대상이 가리키는 AWS 리소스는 다른 리전에 위치할 수 있습니다.

**참고**  
 ***동일한 계정*** 및 ***교차 리전*** 전송 스트림에 대한 Firehose 구독 필터가 지원됩니다.

**Topics**
+ [1단계: Firehose 전송 스트림 생성](CreateFirehoseStream.md)
+ [2단계: 대상 생성](CreateFirehoseStreamDestination.md)
+ [3단계: 교차 계정 대상에 대한 IAM 권한 추가/검증](Subscription-Filter-CrossAccount-Permissions-Firehose.md)
+ [4단계: 구독 필터 생성](CreateSubscriptionFilterFirehose.md)
+ [로그 이벤트 흐름 검증](ValidateLogEventFlowFirehose.md)
+ [런타임 시 대상 멤버십 수정](ModifyDestinationMembershipFirehose.md)

# 1단계: Firehose 전송 스트림 생성
<a name="CreateFirehoseStream"></a>

**중요**  
 다음 단계를 완료하기 전에 Firehose가 Amazon S3 버킷에 액세스할 수 있도록 액세스 정책을 사용해야 합니다. 자세한 내용은 *Amazon Data Firehose 개발자 가이드*의 [액세스 제어](https://docs.aws.amazon.com/firehose/latest/dev/controlling-access.html#using-iam-s3)를 참조하세요.  
 이 섹션(1단계)의 모든 단계는 로그 데이터 수신자 계정에서 수행해야 합니다.  
 미국 동부(버지니아 북부)가 다음 샘플 명령에 사용됩니다. 이 리전을 배포에 적합한 리전으로 바꿉니다.

**대상으로 사용할 Firehose 전송 스트림을 생성하려면**

1. Amazon S3 버킷 생성:

   ```
   aws s3api create-bucket --bucket amzn-s3-demo-bucket --create-bucket-configuration LocationConstraint=us-east-1
   ```

1. 버킷에 데이터를 입력하는 데 필요한 권한을 Firehose에 부여하는 IAM 역할을 생성합니다.

   1. 먼저 텍스트 편집기를 사용하여 `~/TrustPolicyForFirehose.json` 파일에 신뢰 정책을 생성합니다.

      ```
      { "Statement": { "Effect": "Allow", "Principal": { "Service": "firehose.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "sts:ExternalId":"222222222222" } } } }
      ```

   1. IAM 역할을 생성하여 방금 생성한 신뢰 정책 파일을 지정합니다.

      ```
      aws iam create-role \ 
          --role-name FirehosetoS3Role \ 
          --assume-role-policy-document file://~/TrustPolicyForFirehose.json
      ```

   1. 이 명령의 출력은 다음과 비슷합니다. 역할 이름과 역할 ARN을 기록해둡니다.

      ```
      {
          "Role": {
              "Path": "/",
              "RoleName": "FirehosetoS3Role",
              "RoleId": "AROAR3BXASEKW7K635M53",
              "Arn": "arn:aws:iam::222222222222:role/FirehosetoS3Role",
              "CreateDate": "2021-02-02T07:53:10+00:00",
              "AssumeRolePolicyDocument": {
                  "Statement": {
                      "Effect": "Allow",
                      "Principal": {
                          "Service": "firehose.amazonaws.com"
                      },
                      "Action": "sts:AssumeRole",
                      "Condition": {
                          "StringEquals": {
                              "sts:ExternalId": "222222222222"
                          }
                      }
                  }
              }
          }
      }
      ```

1. Firehose가 계정에서 수행할 수 있는 작업을 정의하는 권한 정책을 생성합니다.

   1. 먼저 텍스트 편집기를 사용하여 다음 권한 정책을 이름이 `~/PermissionsForFirehose.json`인 파일로 생성합니다. 사용 사례에 따라 이 파일에 권한을 더 추가해야 할 수도 있습니다.

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

   1. 다음 명령을 입력하여 방금 생성한 권한 정책을 IAM 역할에 연결합니다.

      ```
      aws iam put-role-policy --role-name FirehosetoS3Role --policy-name Permissions-Policy-For-Firehose-To-S3 --policy-document file://~/PermissionsForFirehose.json
      ```

1. 다음 명령을 입력하여 Firehose 전송 스트림을 생성합니다. *my-role-arn* 및 *amzn-s3-demo-bucket2-arn*을 배포에 올바른 값으로 바꿉니다.

   ```
   aws firehose create-delivery-stream \
      --delivery-stream-name 'my-delivery-stream' \
      --s3-destination-configuration \
     '{"RoleARN": "arn:aws:iam::222222222222:role/FirehosetoS3Role", "BucketARN": "arn:aws:s3:::amzn-s3-demo-bucket"}'
   ```

   출력은 다음과 비슷하게 보여야 합니다.

   ```
   {
       "DeliveryStreamARN": "arn:aws:firehose:us-east-1:222222222222:deliverystream/my-delivery-stream"
   }
   ```

# 2단계: 대상 생성
<a name="CreateFirehoseStreamDestination"></a>

**중요**  
이 절차의 모든 단계는 로그 데이터 수신자 계정에서 수행되어야 합니다.

대상이 생성되면 CloudWatch Logs는 수신자 계정을 대신하여 대상에게 테스트 메시지를 보냅니다. 구독 필터가 나중에 활성화되면 CloudWatch Logs는 소스 계정을 대신하여 대상에게 로그 이벤트를 보냅니다.

**대상을 생성하려면**

1. [1단계: Firehose 전송 스트림 생성](CreateFirehoseStream.md)에서 생성한 Firehose 스트림이 활성화될 때까지 기다립니다. 다음 명령을 사용하여 **StreamDescription.StreamStatus** 속성을 확인할 수 있습니다.

   ```
   aws firehose describe-delivery-stream --delivery-stream-name "my-delivery-stream"
   ```

   또한 이후 단계에서 사용해야 하기 때문에 **DeliveryStreamDescription.DeliveryStreamARN** 값을 기록해 둡니다. 이 명령의 샘플 출력:

   ```
   {
       "DeliveryStreamDescription": {
           "DeliveryStreamName": "my-delivery-stream",
           "DeliveryStreamARN": "arn:aws:firehose:us-east-1:222222222222:deliverystream/my-delivery-stream",
           "DeliveryStreamStatus": "ACTIVE",
           "DeliveryStreamEncryptionConfiguration": {
               "Status": "DISABLED"
           },
           "DeliveryStreamType": "DirectPut",
           "VersionId": "1",
           "CreateTimestamp": "2021-02-01T23:59:15.567000-08:00",
           "Destinations": [
               {
                   "DestinationId": "destinationId-000000000001",
                   "S3DestinationDescription": {
                       "RoleARN": "arn:aws:iam::222222222222:role/FirehosetoS3Role",
                       "BucketARN": "arn:aws:s3:::amzn-s3-demo-bucket",
                       "BufferingHints": {
                           "SizeInMBs": 5,
                           "IntervalInSeconds": 300
                       },
                       "CompressionFormat": "UNCOMPRESSED",
                       "EncryptionConfiguration": {
                           "NoEncryptionConfig": "NoEncryption"
                       },
                       "CloudWatchLoggingOptions": {
                           "Enabled": false
                       }
                   },
                   "ExtendedS3DestinationDescription": {
                       "RoleARN": "arn:aws:iam::222222222222:role/FirehosetoS3Role",
                       "BucketARN": "arn:aws:s3:::amzn-s3-demo-bucket",
                       "BufferingHints": {
                           "SizeInMBs": 5,
                           "IntervalInSeconds": 300
                       },
                       "CompressionFormat": "UNCOMPRESSED",
                       "EncryptionConfiguration": {
                           "NoEncryptionConfig": "NoEncryption"
                       },
                       "CloudWatchLoggingOptions": {
                           "Enabled": false
                       },
                       "S3BackupMode": "Disabled"
                   }
               }
           ],
           "HasMoreDestinations": false
       }
   }
   ```

   전송 스트림이 활성 상태가 될 때까지 1\$12분 정도 기다려야 할 수 있습니다.

1. 전송 스트림이 활성 상태가 되면 Firehose 스트림으로 데이터를 입력하는 데 필요한 권한을 CloudWatch Logs에 부여하는 IAM 역할을 생성합니다. 먼저 **\$1/TrustPolicyForCWL.json** 파일에서 신뢰 정책을 생성해야 합니다. 텍스트 편집기를 사용하여 이 정책을 생성합니다. CloudWatch Logs 엔드포인트에 대한 자세한 내용은 [Amazon CloudWatch Logs 엔드포인트 및 할당량](https://docs.aws.amazon.com/general/latest/gr/cwl_region.html)을 참조하세요.

   이 정책은 `sourceAccountId`를 지정하여 혼동된 대리자 보안 문제를 방지하는 데 도움이 되는 `aws:SourceArn` 글로벌 조건 컨텍스트 키를 포함합니다. 첫 번째 직접 호출에서 소스 계정 ID를 아직 모르는 경우 소스 ARN 필드에 대상 ARN을 넣는 것이 좋습니다. 후속 직접 호출에서는 소스 ARN을 첫 번째 직접 호출에서 수집한 실제 소스 ARN으로 설정해야 합니다. 자세한 내용은 [혼동된 대리자 방지](Subscriptions-confused-deputy.md) 단원을 참조하십시오.

   ```
   {
       "Statement": {
           "Effect": "Allow",
           "Principal": {
               "Service": "logs.region.amazonaws.com"
           },
           "Action": "sts:AssumeRole",
           "Condition": {
               "StringLike": {
                   "aws:SourceArn": [
                       "arn:aws:logs:region:sourceAccountId:*",
                       "arn:aws:logs:region:recipientAccountId:*"
                   ]
               }
           }
        }
   }
   ```

1. **aws iam create-role** 명령을 사용하여 IAM 역할을 생성해 방금 만든 신뢰 정책 파일을 지정합니다.

   ```
   aws iam create-role \
         --role-name CWLtoKinesisFirehoseRole \
         --assume-role-policy-document file://~/TrustPolicyForCWL.json
   ```

   다음은 샘플 출력입니다. 이후 단계에서 사용해야 하므로 반환된 `Role.Arn` 값을 메모해 둡니다.

   ```
   {
       "Role": {
           "Path": "/",
           "RoleName": "CWLtoKinesisFirehoseRole",
           "RoleId": "AROAR3BXASEKYJYWF243H",
           "Arn": "arn:aws:iam::222222222222:role/CWLtoKinesisFirehoseRole",
           "CreateDate": "2021-02-02T08:10:43+00:00",
           "AssumeRolePolicyDocument": {
               "Statement": {
                   "Effect": "Allow",
                   "Principal": {
                       "Service": "logs.region.amazonaws.com"
                   },
                   "Action": "sts:AssumeRole",
                   "Condition": {
                       "StringLike": {
                           "aws:SourceArn": [
                               "arn:aws:logs:region:sourceAccountId:*",
                               "arn:aws:logs:region:recipientAccountId:*"
                           ]
                       }
                   }
               }
           }
       }
   }
   ```

1. CloudWatch Logs가 계정에서 수행할 수 있는 작업을 정의하는 권한 정책을 생성합니다. 먼저 텍스트 편집기를 사용하여 권한 정책을 **\$1/PermissionsForCWL.json** 파일로 생성합니다.

   ```
   {
       "Statement":[
         {
           "Effect":"Allow",
           "Action":["firehose:*"],
           "Resource":["arn:aws:firehose:region:222222222222:*"]
         }
       ]
   }
   ```

1. 다음 명령을 입력하여 권한 정책을 역할에 연결합니다.

   ```
   aws iam put-role-policy --role-name CWLtoKinesisFirehoseRole --policy-name Permissions-Policy-For-CWL --policy-document file://~/PermissionsForCWL.json
   ```

1. Firehose 전송 스트림이 활성 상태이고 IAM 역할을 생성하고 나면 CloudWatch Logs 대상을 생성할 수 있습니다.

   1. 이 단계를 수행했다고 액세스 정책이 대상에 연결되는 것은 아니며, 대상 생성을 완료하기 위한 두 단계 중 첫 번째 단계일 뿐입니다. 페이로드에서 반환된 새 대상의 ARN은 이후 단계에서 `destination.arn`으로 사용할 것이므로 메모해 둡니다.

      ```
      aws logs put-destination \                                                       
          --destination-name "testFirehoseDestination" \
          --target-arn "arn:aws:firehose:us-east-1:222222222222:deliverystream/my-delivery-stream" \
          --role-arn "arn:aws:iam::222222222222:role/CWLtoKinesisFirehoseRole"
      
      {
          "destination": {
              "destinationName": "testFirehoseDestination",
              "targetArn": "arn:aws:firehose:us-east-1:222222222222:deliverystream/my-delivery-stream",
              "roleArn": "arn:aws:iam::222222222222:role/CWLtoKinesisFirehoseRole",
              "arn": "arn:aws:logs:us-east-1:222222222222:destination:testFirehoseDestination"}
      }
      ```

   1. 이전 단계를 완료한 후 로그 데이터 수신자 계정(222222222222)에서 액세스 정책을 대상과 연결합니다.

      이 정책을 사용하면 로그 데이터 발신자 계정(111111111111)이 로그 데이터 수신자 계정(222222222222)만의 대상에 액세스할 수 있습니다. 텍스트 편집기를 사용하여 이 정책을 **\$1/AccessPolicy.json** 파일에 저장할 수 있습니다.

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

****  

      ```
      {
        "Version":"2012-10-17",		 	 	 
        "Statement" : [
          {
            "Sid" : "",
            "Effect" : "Allow",
            "Principal" : {
              "AWS" : "111111111111"
            },
            "Action" : "logs:PutSubscriptionFilter",
            "Resource" : "arn:aws:logs:us-east-1:222222222222:destination:testFirehoseDestination"
          }
        ]
      }
      ```

------

   1. 이렇게 하면 대상에 대해 쓰기 액세스 권한을 가진 사람을 정의하는 정책이 생성됩니다. 이 정책은 대상 액세스를 위한 **logs:PutSubscriptionFilter** 작업을 지정하게 됩니다. 교차 계정 사용자는 **PutSubscriptionFilter** 작업을 사용해 대상에 로그 이벤트를 전송합니다.

      ```
      aws logs put-destination-policy \
          --destination-name "testFirehoseDestination" \
          --access-policy file://~/AccessPolicy.json
      ```

# 3단계: 교차 계정 대상에 대한 IAM 권한 추가/검증
<a name="Subscription-Filter-CrossAccount-Permissions-Firehose"></a>

 AWS 교차 계정 정책 평가 로직에 따라 교차 계정 리소스(예: 구독 필터의 대상으로 사용되는 Kinesis 또는 Firehose 스트림)에 액세스하려면 전송 계정에 교차 계정 대상 리소스에 대한 명시적 액세스를 제공하는 자격 증명 기반 정책이 있어야 합니다. 정책 평가 로직에 대한 자세한 내용은 [교차 계정 정책 평가 로직](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic-cross-account.html)을 참조하세요.

구독 필터를 생성하는 데 사용하는 IAM 역할 또는 IAM 사용자에게 자격 증명 기반 정책을 연결할 수 있습니다. 전송 계정에 이 정책이 있어야 합니다. 관리자 역할을 사용하여 구독 필터를 만드는 경우 이 단계를 건너뛰고 [4단계: 구독 필터 생성](CreateSubscriptionFilter.md)로 넘어갈 수 있습니다.

**교차 계정에 필요한 IAM 권한을 추가 또는 검증하려면**

1. 다음 명령을 입력하여 AWS 로그 명령을 실행하는 데 사용되는 IAM 역할 또는 IAM 사용자를 확인합니다.

   ```
   aws sts get-caller-identity
   ```

   이 명령은 다음과 비슷한 출력을 반환합니다.

   ```
   {
   "UserId": "User ID",
   "Account": "sending account id",
   "Arn": "arn:aws:sending account id:role/user:RoleName/UserName"
   }
   ```

   *RoleName* 또는 *UserName*으로 나타낸 값을 기록해 둡니다.

1. 전송 계정의 AWS Management Console 에 로그인하고 1단계에서 입력한 명령의 출력에서 반환된 IAM 역할 또는 IAM 사용자가 있는 연결된 정책을 검색합니다.

1. 이 역할 또는 사용자에게 연결된 정책이 교차 계정 대상 리소스에서 `logs:PutSubscriptionFilter`을 직접 호출할 수 있는 명시적 권한을 제공하는지 확인합니다.

   다음 정책은 단일 AWS 계정인 계정 에서만 모든 대상 리소스에 구독 필터를 생성할 수 있는 권한을 제공합니다`999999999999`.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "AllowSubscriptionFiltersOnAnyResourceInOneSpecificAccount",
               "Effect": "Allow",
               "Action": "logs:PutSubscriptionFilter",
               "Resource": [
                   "arn:aws:logs:*:*:log-group:*",
                   "arn:aws:logs:*:123456789012:destination:*"
               ]
           }
       ]
   }
   ```

------

   다음 정책은 단일 AWS 계정인 계정에서 라는 특정 대상 리소스에 대해서만 구독 필터를 생성할 `sampleDestination` 수 있는 권한을 제공합니다`123456789012`.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
           "Sid": "AllowSubscriptionFiltersOnSpecificResource",
               "Effect": "Allow",
               "Action": "logs:PutSubscriptionFilter",
               "Resource": [
                   "arn:aws:logs:*:*:log-group:*",
                   "arn:aws:logs:*:123456789012:destination:amzn-s3-demo-bucket"
               ]
           }
       ]
   }
   ```

------

# 4단계: 구독 필터 생성
<a name="CreateSubscriptionFilterFirehose"></a>

이 예제에서는 111111111111인 전송 계정으로 전환합니다. 이제 전송 계정에서 구독 필터를 생성합니다. 이 예제에서 필터는 AWS CloudTrail 이벤트가 포함된 로그 그룹과 연결되어 "루트" AWS 자격 증명에 의해 기록된 모든 활동이 이전에 생성한 대상으로 전달됩니다. CloudWatch Logs로 AWS CloudTrail 이벤트를 전송하는 방법에 대한 자세한 내용은 *AWS CloudTrail 사용 설명서*의 [CloudWatch Logs로 CloudTrail CloudTrail 이벤트 전송](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/send-cloudtrail-events-to-cloudwatch-logs.html)을 참조하세요.

다음 명령을 입력할 때는[3단계: 교차 계정 대상에 대한 IAM 권한 추가/검증](Subscription-Filter-CrossAccount-Permissions-Firehose.md)에서 IAM 사용자로 로그인하거나 정책을 추가한 IAM 역할을 사용하여 로그인해야 합니다.

```
aws logs put-subscription-filter \
    --log-group-name "aws-cloudtrail-logs-111111111111-300a971e" \                   
    --filter-name "firehose_test" \
    --filter-pattern "{$.userIdentity.type = AssumedRole}" \
    --destination-arn "arn:aws:logs:us-east-1:222222222222:destination:testFirehoseDestination"
```

로그 그룹과 대상은 동일한 AWS 리전에 있어야 합니다. 그러나 대상은 다른 리전에 있는 Firehose 스트림과 같은 AWS 리소스를 가리킬 수 있습니다.

# 로그 이벤트 흐름 검증
<a name="ValidateLogEventFlowFirehose"></a>

구독 필터를 생성하고 나면 CloudWatch Logs는 모든 수신 로그 이벤트 중에서 필터 패턴과 일치하는 이벤트를 Firehose 전송 스트림으로 전달합니다. Firehose 전송 스트림에 설정된 시간 버퍼 간격에 따라 Amazon S3 버킷에 데이터가 나타나기 시작합니다. 충분한 시간이 지나고 나면 Amazon S3 버킷을 확인하여 데이터를 확인할 수 있습니다. 버킷을 확인하려면 다음 명령을 입력합니다.

```
aws s3api list-objects --bucket 'amzn-s3-demo-bucket' 
```

해당 명령은 다음과 비슷하게 출력됩니다.

```
{
    "Contents": [
        {
            "Key": "2021/02/02/08/my-delivery-stream-1-2021-02-02-08-55-24-5e6dc317-071b-45ba-a9d3-4805ba39c2ba",
            "LastModified": "2021-02-02T09:00:26+00:00",
            "ETag": "\"EXAMPLEa817fb88fc770b81c8f990d\"",
            "Size": 198,
            "StorageClass": "STANDARD",
            "Owner": {
                "DisplayName": "firehose+2test",
                "ID": "EXAMPLE27fd05889c665d2636218451970ef79400e3d2aecca3adb1930042e0"
            }
        }
    ]
}
```

다음 명령을 입력하여 버킷에서 특정 객체를 검색할 수 있습니다. 이전 명령에서 찾은 값으로 `key`의 값을 바꿉니다.

```
aws s3api get-object --bucket 'amzn-s3-demo-bucket' --key '2021/02/02/08/my-delivery-stream-1-2021-02-02-08-55-24-5e6dc317-071b-45ba-a9d3-4805ba39c2ba' testfile.gz
```

Amazon S3 객체의 데이터는 gzip 형식으로 압축됩니다. 다음 명령 중 하나를 사용하여 명령 줄에서 원시 데이터를 검토할 수 있습니다.

Linux:

```
zcat testfile.gz
```

macOS:

```
zcat <testfile.gz
```

# 런타임 시 대상 멤버십 수정
<a name="ModifyDestinationMembershipFirehose"></a>

소유한 대상에서 로그 발신자를 추가 또는 제거해야 하는 상황에 직면할 수 있습니다. 새 액세스 정책에서는 대상에 대해 **PutDestinationPolicy** 작업을 사용할 수 있습니다. 다음 예제에서는 이전에 추가한 계정인 **111111111111**이 추가적인 로그 데이터 전송을 중단하고 계정 **333333333333**이 활성화됩니다.

1. 대상 **testDestination**에 현재 연결된 정책을 가져와서 **AccessPolicy**를 적어둡니다.

   ```
   aws logs describe-destinations \
       --destination-name-prefix "testFirehoseDestination"
   
   {
       "destinations": [
           {
               "destinationName": "testFirehoseDestination",
               "targetArn": "arn:aws:firehose:us-east-1:222222222222:deliverystream/my-delivery-stream",
               "roleArn": "arn:aws:iam:: 222222222222:role/CWLtoKinesisFirehoseRole",
               "accessPolicy": "{\n  \"Version\" : \"2012-10-17\",\n  \"Statement\" : [\n    {\n      \"Sid\" : \"\",\n      \"Effect\" : \"Allow\",\n      \"Principal\" : {\n        \"AWS\" : \"111111111111 \"\n      },\n      \"Action\" : \"logs:PutSubscriptionFilter\",\n      \"Resource\" : \"arn:aws:logs:us-east-1:222222222222:destination:testFirehoseDestination\"\n    }\n  ]\n}\n\n",
               "arn": "arn:aws:logs:us-east-1: 222222222222:destination:testFirehoseDestination",
               "creationTime": 1612256124430
           }
       ]
   }
   ```

1. 계정 **111111111111**이 중단되고 계정 **333333333333**이 활성화되었음을 반영하도록 이 정책을 업데이트합니다. **\$1/NewAccessPolicy.json** 파일에 이 정책을 저장합니다.

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement" : [
       {
         "Sid" : "",
         "Effect" : "Allow",
         "Principal" : {
           "AWS" : "333333333333 "
         },
         "Action" : "logs:PutSubscriptionFilter",
         "Resource" : "arn:aws:logs:us-east-1:222222222222:destination:testFirehoseDestination"
       }
     ]
   }
   ```

------

1. 다음 명령을 사용하여 **NewAccessPolicy.json** 파일에 정의된 정책을 대상과 연결합니다.

   ```
   aws logs put-destination-policy \
       --destination-name "testFirehoseDestination" \                                                                              
       --access-policy file://~/NewAccessPolicy.json
   ```

   이렇게 하면 계정 ID **111111111111**에서 로그 이벤트가 비활성화됩니다. 계정 ID **333333333333**에서 나온 로그 이벤트는 계정 **333333333333**의 소유자가 구독 필터를 생성하고 나면 그 즉시 대상으로 이동하기 시작합니다.