

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

# CodePipeline에서 다른 AWS 계정의 리소스를 사용하는 파이프라인 생성
<a name="pipelines-create-cross-account"></a>

다른 AWS 계정에서 생성되거나 관리된 리소스를 사용하는 파이프라인을 생성할 수 있습니다. 예를 들어 파이프라인에 한 계정을 사용하고 CodeDeploy 리소스에 다른 계정을 사용할 수 있습니다.

**참고**  
여러 계정의 작업으로 파이프라인을 생성할 때는 교차 계정 파이프라인의 제한 내에서 여전히 아티팩트에 액세스할 수 있도록 작업을 구성해야 합니다. 교차 계정 작업에는 다음 제한 사항이 적용됩니다.  
일반적으로 작업은 다음과 같은 경우에만 아티팩트를 소비할 수 있습니다.  
작업이 파이프라인 계정과 동일한 계정에 있거나
아티팩트가 다른 계정의 작업에 대한 파이프라인 계정에서 생성되었거나 
아티팩트가 작업과 동일한 계정에서 이전 작업에 의해 생성된 경우
즉, 두 계정 모두 파이프라인 계정이 아닌 경우 한 계정에서 다른 계정으로 아티팩트를 전달할 수 없습니다.
다음 작업 유형에 대해서는 교차 계정 작업이 지원되지 않습니다.  
Jenkins 빌드 작업

이 예제에서는 사용할 AWS Key Management Service (AWS KMS) 키를 생성하고, 파이프라인에 키를 추가하고, 계정 간 액세스를 활성화하도록 계정 정책 및 역할을 설정해야 합니다. AWS KMS 키의 경우 키 ID, 키 ARN 또는 별칭 ARN을 사용할 수 있습니다.

**참고**  
별칭은 KMS 키를 생성한 계정에서만 인식됩니다. 교차 계정 작업의 경우 키 ID 또는 키 ARN만 사용하여 키를 식별할 수 있습니다. 계정 간 작업에는 다른 계정(AccountB)의 역할을 사용하는 것이 포함되므로 키 ID를 지정하면 다른 계정(AccountB)의 키가 사용됩니다.

이 연습과 해당 예에서 *AccountA*는 파이프라인을 생성하는 데 원래 사용된 계정입니다. 파이프라인 아티팩트를 저장하는 데 사용되는 Amazon S3 버킷과에서 사용하는 서비스 역할에 액세스할 수 있습니다 AWS CodePipeline. *AccountB*는 CodeDeploy에서 사용된 CodeDeploy 애플리케이션, 배포 그룹, 서비스 역할을 생성하는 데 원래 사용된 계정입니다.

*AccountA*가 *AccountB*에서 만든 CodeDeploy 애플리케이션을 사용하도록 파이프라인을 편집하려면 *AccountA*는 다음을 수행해야 합니다.
+ *AccountB*의 ARN 또는 계정 ID를 요청합니다(이 연습에서 *AccountB* ID는 *012ID\$1ACCOUNT\$1B*임).
+ 파이프라인의 리전에서 AWS KMS 고객 관리형 키를 생성하거나 사용하고 서비스 역할(*CodePipeline\$1Service\$1Role*) 및 *AccountB*에 해당 키를 사용할 수 있는 권한을 부여합니다.
+ *AccountB*에 Amazon S3 버킷에 대한 액세스 권한을 부여하는 Amazon S3 버킷 정책을 생성합니다(예: *codepipeline-us-east-2-1234567890*).
+ *AccountA*가 *AccountB*에서 구성된 역할을 맡을 수 있도록 하는 정책을 생성하고 해당 정책을 서비스 역할(*CodePipeline\$1Service\$1Role*)에 연결합니다.
+ 파이프라인을 편집하여 기본 AWS KMS 키 대신 고객 관리형 키를 사용합니다.

*AccountB*가 *AccountA*에서 생성된 파이프라인의 리소스에 액세스할 수 있도록 하려면 *AccountB*는 다음 작업을 수행해야 합니다.
+ *AccountA*의 ARN 또는 계정 ID를 요청합니다(이 연습에서 *AccountA* ID는 *012ID\$1ACCOUNT\$1A*임).
+ Amazon S3 버킷(*codepipeline-us-east-2-1234567890*)에 대한 액세스를 허용하는 CodeDeploy용으로 구성된 [Amazon EC2 인스턴스 역할](https://docs.aws.amazon.com/codedeploy/latest/userguide/how-to-create-iam-instance-profile.html)에 적용되는 정책을 생성합니다.
+ *AccountA*에서 파이프라인 아티팩트를 암호화하는 데 사용되는 AWS KMS 고객 관리형 키에 대한 액세스를 허용하는 CodeDeploy용으로 구성된 [Amazon EC2 인스턴스 역할에](https://docs.aws.amazon.com/codedeploy/latest/userguide/how-to-create-iam-instance-profile.html) 적용되는 정책을 생성합니다.
+ *AccountA*의 CodePipeline 서비스 역할이 역할을 맡도록 허용하는 신뢰 관계 정책을 사용하여 IAM 역할(*CrossAccount\$1Role*)을 구성하고 연결합니다.
+ 파이프라인에 필요한 배포 리소스에 액세스할 수 있는 정책을 생성하고 *CrossAccount\$1Role*에 연결합니다.
+ Amazon S3 버킷(*codepipeline-us-east-2-1234567890*)에 액세스할 수 있는 정책을 생성하고 *CrossAccount\$1Role*에 연결합니다.

**Topics**
+ [사전 조건: AWS KMS 암호화 키 생성](#pipelines-create-cross-account-create-key)
+ [1단계: 계정 정책 및 역할 설정](#pipelines-create-cross-account-setup)
+ [2단계: 파이프라인 편집](#pipelines-create-cross-account-create)

## 사전 조건: AWS KMS 암호화 키 생성
<a name="pipelines-create-cross-account-create-key"></a>

고객 관리형 키는 모든 AWS KMS 키와 마찬가지로 리전에 고유합니다. 파이프라인이 생성된 리전과 동일한 리전에서 고객 관리형 AWS KMS 키를 생성해야 합니다(예: `us-east-2`).

**에서 고객 관리형 키를 생성하려면 AWS KMS**

1. *AccountA*를 AWS Management Console 사용하여에 로그인하고 콘솔을 AWS KMS 엽니다.

1. 왼쪽에서 **고객 관리형 키**를 선택합니다.

1. **키 생성**을 선택합니다. **구성 키**에서 **대칭** 기본값을 선택한 상태로 두고 **다음**을 선택합니다.

1. **별칭**에 이 키에 사용할 별칭을 입력합니다(예: *PipelineName-Key*). 필요한 경우 이 키에 대한 설명과 태그를 입력하고 **다음**을 선택합니다.

1. **키 관리 권한 정의**에서 이 키의 관리자 역할을 수행할 역할을 선택하고 **다음**을 선택합니다.

1. **키 사용 권한 정의**의 **이 계정**에서 파이프라인의 서비스 역할 이름을 선택합니다(예: CodePipeline\$1Service\$1Role). **기타 AWS 계정**에서 **다른 AWS 계정 추가**를 선택합니다. *AccountB*에 대한 계정 ID를 입력하여 ARN을 완료하고 **다음**을 선택합니다.

1. **Review and edit key policy(키 정책 검토 및 편집)**에서 정책을 검토한 다음 **완료**를 선택합니다.

1. 키 목록에서 키의 별칭을 선택하고 ARN을 복사합니다(예: ***arn:aws:kms:us-east-2:012ID\$1ACCOUNT\$1A:key/2222222-3333333-4444-556677EXAMPLE***). 파이프라인을 편집하고 정책을 구성할 때 이 정보가 필요합니다.

## 1단계: 계정 정책 및 역할 설정
<a name="pipelines-create-cross-account-setup"></a>

 AWS KMS 키를 생성한 후에는 교차 계정 액세스를 활성화하는 정책을 생성하고 연결해야 합니다. 이 경우 *AccountA* 및 *AccountB* 둘 다의 작업이 필요합니다.

**Topics**
+ [파이프라인을 생성하는 계정에 정책 및 역할 구성(*AccountA*)](#pipelines-create-cross-account-setup-accounta)
+ [AWS 리소스를 소유한 계정에서 정책 및 역할 구성(*AccountB*)](#pipelines-create-cross-account-setup-accountb)

### 파이프라인을 생성하는 계정에 정책 및 역할 구성(*AccountA*)
<a name="pipelines-create-cross-account-setup-accounta"></a>

다른 AWS 계정과 연결된 CodeDeploy 리소스를 사용하는 파이프라인을 생성하려면 *AccountA*는 아티팩트를 저장하는 데 사용되는 Amazon S3 버킷과 CodePipeline의 서비스 역할 모두에 대한 정책을 구성해야 합니다.

**AccountB에 대한 액세스 권한을 부여하는 정책을 Amazon S3 버킷에 대해 만들려면(콘솔)**

1. *AccountA*를 AWS Management Console 사용하여에 로그인하고 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) Amazon S3 콘솔을 엽니다.

1. Amazon S3 버킷 목록에서 파이프라인의 아티팩트가 저장될 Amazon S3 버킷을 선택합니다. 이 버킷의 이름은 입니다. `codepipeline-region-1234567EXAMPLE`여기서 *region*은 파이프라인을 생성한 AWS 리전이고 *1234567EXAMPLE*은 버킷 이름이 고유한지 확인하는 10자리 난수입니다(예: *codepipeline-us-east-2-1234567890*).

1. Amazon S3 버킷의 세부 정보 페이지에서 **속성**을 선택합니다.

1. 속성 창에서 [**Permissions**]를 확장한 다음, [**Add bucket policy**]를 선택합니다.
**참고**  
정책이 Amazon S3 버킷에 이미 연결되어 있는 경우 **버킷 정책 편집**을 선택합니다. 그러면 기존 정책에 다음 예의 설명문을 추가할 수 있습니다. 새 정책을 추가하려면 링크를 선택하고 AWS 정책 생성기의 지침을 따릅니다. 자세한 정보는 [IAM 정책 개요](https://docs.aws.amazon.com/IAM/latest/UserGuide/policies_overview.html)를 참조하세요.

1. **버킷 정책 편집기** 창에서 *AccountB*가 파이프라인 아티팩트에 접근할 수 있도록 허용하고, 사용자 정의 소스나 빌드 작업과 같은 작업이 생성한 출력 아티팩트를 *AccountB*가 추가할 수 있도록 하는 정책을 생성하세요.

1. [**Save**]를 선택한 후 정책 편집기를 닫습니다.

1. **저장**을 선택하여 Amazon S3 버킷에 대한 권한을 저장합니다.

**CodePipeline용 서비스 역할에 대한 정책을 생성하려면(콘솔)**

1. *AccountA*를 AWS Management Console 사용하여에 로그인하고 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) IAM 콘솔을 엽니다.

1. 탐색 창에서 **역할**을 선택합니다.

1. 역할 목록의 **역할 이름**에서 CodePipeline에 대한 서비스 역할 이름을 선택합니다.

1. **권한** 탭에서 **인라인 정책 추가(Add inline policy)**를 선택합니다.

1. **JSON** 탭을 선택하고 다음 정책을 입력하여 *AccountB*가 역할을 맡을 수 있도록 허용합니다. 다음 예에서 *012ID\$1ACCOUNT\$1B*는 *AccountB*에 대한 ARN입니다.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": {
           "Effect": "Allow",
           "Action": "sts:AssumeRole",
           "Resource": [
               "arn:aws:iam::111122223333:role/*"
           ]
       }
   }
   ```

------

1. **정책 검토**를 선택합니다.

1. **이름**에 이 정책의 이름을 입력합니다. **정책 생성**을 선택합니다.

### AWS 리소스를 소유한 계정에서 정책 및 역할 구성(*AccountB*)
<a name="pipelines-create-cross-account-setup-accountb"></a>

CodeDeploy에서 애플리케이션, 배포 및 배포 그룹을 생성할 때 [Amazon EC2 인스턴스 역할](https://docs.aws.amazon.com/codedeploy/latest/userguide/how-to-create-iam-instance-profile.html)도 생성합니다. (배포 연습 실행 마법사를 사용하는 경우 이 역할이 생성되지만 수동으로 생성할 수도 있습니다.) *AccountA*에서 생성한 파이프라인이 *AccountB*에서 생성된 CodeDeploy 리소스를 사용하려면 다음을 수행해야 합니다.
+ 파이프라인 아티팩트가 저장된 Amazon S3 버킷에 액세스할 수 있는 인스턴스 역할에 대한 정책을 구성합니다.
+ 교차 계정 액세스에 대해 구성된 *AccountB*에서 두 번째 역할을 생성합니다.

  이 두 번째 역할은 *AccountA*의 Amazon S3 버킷에 액세스할 수 있을 뿐만 아니라 CodeDeploy 리소스에 대한 액세스를 허용하는 정책과 *AccountA*의 CodePipeline 서비스 역할이 역할을 맡도록 허용하는 신뢰 관계 정책도 포함해야 합니다.
**참고**  
이러한 정책은 다른 AWS 계정을 사용하여 생성된 파이프라인에서 사용할 CodeDeploy 리소스를 설정하는 데에만 적용됩니다. 다른 AWS 리소스에는 리소스 요구 사항과 관련된 정책이 필요합니다.

**CodeDeploy용으로 구성된 Amazon EC2 인스턴스 역할에 대한 정책을 만들려면(콘솔)**

1.  AWS Management Console *AccountB*로에 로그인하고 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) IAM 콘솔을 엽니다.

1. 탐색 창에서 **역할**을 선택합니다.

1. 역할 목록의 **역할 이름**에서 CodeDeploy 애플리케이션에 대한 Amazon EC2 인스턴스 역할로 사용된 서비스 역할 이름을 선택합니다. 이 역할 이름은 다를 수 있으며, 하나의 배포 그룹에서 둘 이상의 인스턴스 역할을 사용할 수 있습니다. 자세한 내용은 [Amazon EC2 인스턴스용 IAM 인스턴스 프로파일 생성](https://docs.aws.amazon.com/codedeploy/latest/userguide/how-to-create-iam-instance-profile.html)을 참조하세요.

1. **권한** 탭에서 **인라인 정책 추가(Add inline policy)**를 선택합니다.

1. **JSON** 탭을 선택하고 다음 정책을 입력하여 *AccountA*가 파이프라인용 아티팩트를 저장하는 데 사용하는 Amazon S3 버킷에 대한 액세스 권한을 부여합니다(이 예에서는 *codepipeline-us-east-2-1234567890*).

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

****  

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

------

1. **정책 검토**를 선택합니다.

1. **이름**에 이 정책의 이름을 입력합니다. **정책 생성**을 선택합니다.

1. 에 대한 두 번째 정책을 생성합니다. AWS KMS 여기서 ***arn:aws:kms:us-east-1:012ID\$1ACCOUNT\$1A:key/2222222-3333333-4444-556677EXAMPLE***는 *AccountA*에서 생성되고 *AccountB*가 사용할 수 있도록 구성된 고객 관리형 키의 ARN입니다.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "kms:DescribeKey",
                   "kms:GenerateDataKey*",
                   "kms:Encrypt",
                   "kms:ReEncrypt*",
                   "kms:Decrypt"
               ],
               "Resource": [
                   "arn:aws:kms:us-east-1:111122223333:key/2222222-3333333-4444-556677EXAMPLE"
               ]
           }
       ]
   }
   ```

------
**중요**  
여기에 표시된 대로이 정책에서 *AccountA*의 계정 ID를 AWS KMS 키에 대한 리소스 ARN의 일부로 사용해야 합니다. 그렇지 않으면 정책이 작동하지 않습니다.

1. **정책 검토**를 선택합니다.

1. **이름**에 이 정책의 이름을 입력합니다. **정책 생성**을 선택합니다.

이제 교차 계정 액세스에 사용할 IAM 역할을 생성하고 구성하여 *AccountA*의 CodePipeline 서비스 역할이 역할을 맡을 수 있도록 합니다. 이 역할에는 *AccountA*에 아티팩트를 저장하는 데 사용되는 CodeDeploy 리소스 및 Amazon S3 버킷에 대한 액세스를 허용하는 정책이 포함되어야 합니다.

**IAM에서 교차 계정 역할을 구성하려면**

1.  AWS Management Console *AccountB*로에 로그인하고 [https://console.aws.amazon.com/iam](https://console.aws.amazon.com/iam) IAM 콘솔을 엽니다.

1. 탐색 창에서 **Roles**를 선택합니다. **역할 생성(Create role)**을 선택합니다.

1. **신뢰할 수 있는 엔터티 유형 선택** 아래에서 **다른 AWS 계정**을 선택합니다. **이 역할을 사용할 수 있는 계정 지정**의 **계정 ID**에 CodePipeline(*AccountA*)에서 파이프라인을 생성할 계정의 계정 AWS ID**를 입력한 후 다음: 권한을** 선택합니다.
**중요**  
이 단계는 *AccountB*와 *AccountA* 사이에 신뢰 관계 정책을 만듭니다. 그러나 이렇게 하면 계정에 루트 수준의 액세스 권한이 부여되므로, CodePipeline은 *AccountA*의 CodePipeline 서비스 역할까지 범위를 축소할 것을 권장합니다. 16단계에 따라 권한을 제한합니다.

1. **권한 정책 연결**에서 **AmazonS3ReadOnlyAccess**를 선택한 후 **다음: 태그**를 선택합니다.
**참고**  
이 정책은 사용할 정책이 아닙니다. 마법사를 완료하려면 정책을 선택해야 합니다.

1. **다음: 검토**를 선택합니다. **역할 이름**에 이 역할의 이름을 입력합니다(예: *CrossAccount\$1Role*). 역할의 이름은 IAM의 명명 규칙을 따르는 것이라면 어떤 것이든 가능합니다. 역할의 목적을 명확하게 나타내는 이름으로 지정하는 것을 고려하십시오. **역할 생성**을 선택합니다.

1. 역할 목록에서, 방금 만든 역할(예: *CrossAccount\$1Role*)을 선택하여 해당 역할에 대한 **요약** 페이지를 엽니다.

1. **권한** 탭에서 **인라인 정책 추가(Add inline policy)**를 선택합니다.

1. **JSON** 탭을 선택하고 다음 정책을 입력하여 CodeDeploy 리소스에 대한 액세스를 허용합니다.

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Action": [
           "codedeploy:CreateDeployment",
           "codedeploy:GetDeployment",
           "codedeploy:GetDeploymentConfig",
           "codedeploy:GetApplicationRevision",
           "codedeploy:RegisterApplicationRevision"
         ],
         "Resource": "*"
       }
     ]
   }
   ```

------

1. **정책 검토**를 선택합니다.

1. **이름**에 이 정책의 이름을 입력합니다. **정책 생성**을 선택합니다.

1. **권한** 탭에서 **인라인 정책 추가(Add inline policy)**를 선택합니다.

1. **JSON** 탭을 선택하고 다음 정책을 입력하여 이 역할이 *AccountA*의 Amazon S3 버킷에서 입력 아티팩트를 검색하고 출력 아티팩트를 넣을 수 있도록 허용합니다.

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

****  

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

------

1. **정책 검토**를 선택합니다.

1. **이름**에 이 정책의 이름을 입력합니다. **정책 생성**을 선택합니다.

1. **권한** 탭의 **정책 이름** 아래에 있는 정책 목록에서 **AmazonS3ReadOnlyAccess**를 찾아 정책 옆에 있는 삭제 아이콘(**X**)을 선택합니다. 확인 메시지가 나타나면 [**Detach**]를 선택합니다.

1. **신뢰 관계** 탭을 선택한 후 **신뢰 정책 편집**을 선택합니다. 왼쪽 열에서 **보안 주체 추가** 옵션을 선택합니다. **보안 주체 유형**에서 **IAM 역할**을 선택한 다음 *AccountA*의 CodePipeline 서비스 역할에 대해 ARN을 제공합니다. **AWS 보안 주체** 목록에서 `arn:aws:iam::Account_A:root`를 제거한 다음, **정책 업데이트**를 선택합니다.

## 2단계: 파이프라인 편집
<a name="pipelines-create-cross-account-create"></a>

CodePipeline 콘솔을 사용하여 다른 AWS 계정과 연결된 리소스를 사용하는 파이프라인을 생성하거나 편집할 수 없습니다. 그러나 콘솔을 사용하여 파이프라인의 일반 구조를 생성한 다음를 사용하여 파이프라인 AWS CLI 을 편집하고 해당 리소스를 추가할 수 있습니다. 또는 기존 파이프라인의 구조를 사용하고 리소스를 수동으로 추가할 수 있습니다.

**다른 AWS 계정과 연결된 리소스를 추가하려면(AWS CLI)**

1. 터미널(Linux, macOS 또는 Unix) 또는 명령 프롬프트(Windows)에서, 리소스를 추가하려는 파이프라인에 **get-pipeline** 명령을 실행합니다. JSON 파일에 명령 출력을 복사합니다. 예를 들어 MyFirstPipeline이라는 파이프라인의 경우 다음과 유사한 명령을 입력합니다.

   ```
   aws codepipeline get-pipeline --name MyFirstPipeline >pipeline.json
   ```

   출력은 *pipeline.json* 파일로 전송됩니다.

1. 일반 텍스트 편집기에서 JSON 파일을 엽니다. 아티팩트 스토어의 `"type": "S3"` 이후에, KMS encryptionKey, ID 및 유형 정보를 추가합니다. 여기서, *codepipeline-us-east-2-1234567890*은 파이프라인에 대한 아티팩트를 저장하는 데 사용된 Amazon S3 버킷의 이름이며, ***arn:aws:kms:us-east-1:012ID\$1ACCOUNT\$1A:key/2222222-3333333-4444-556677EXAMPLE***은 방금 생성한 고객 관리형 키의 ARN입니다.

   ```
   {
     "artifactStore”: {
       "location": "codepipeline-us-east-2-1234567890", 
       "type": "S3",
       "encryptionKey": {
         "id": "arn:aws:kms:us-east-1:012ID_ACCOUNT_A:key/2222222-3333333-4444-556677EXAMPLE",
         "type": "KMS"
       }
     },
   ```

1. 생성한 교차 계정 역할(*CrossAccount\$1Role*)의 `roleArn` 값을 포함하여 *AccountB*와 연결된 CodeDeploy 리소스를 사용하기 위한 배포 작업을 단계에 추가합니다.

   다음은 *ExternalDeploy*라는 배포 작업을 추가하는 JSON을 보여 주는 예입니다. *Staging*이라는 단계에서 *AccountB*에서 만든 CodeDeploy 리소스를 사용합니다. 다음 예에서 *AccountB*에 대한 ARN은 *012ID\$1ACCOUNT\$1B*입니다.

   ```
   ,
               {
                   "name": "Staging",
                   "actions": [
                       {
                           "inputArtifacts": [
                               {
                                   "name": "MyAppBuild"
                               }
                           ],
                           "name": "ExternalDeploy",
                           "actionTypeId": {
                               "category": "Deploy",
                               "owner": "AWS",
                               "version": "1",
                               "provider": "CodeDeploy"
                           },
                           "outputArtifacts": [],
                           "configuration": {
                               "ApplicationName": "AccountBApplicationName",
                               "DeploymentGroupName": "AccountBApplicationGroupName"
                           },
                           "runOrder": 1,
                           "roleArn": "arn:aws:iam::012ID_ACCOUNT_B:role/CrossAccount_Role"
                       }
                   ]
               }
   ```
**참고**  
이것은 전체 파이프라인의 JSON이 아닌, 한 단계의 작업 구조입니다.

1. **update-pipeline** 명령이 JSON 파일을 사용할 수 있도록 하려면 이 파일에서 `metadata` 라인을 삭제해야 합니다. JSON 파일의 파이프라인 구조에서 단원(`"metadata": { }` 행과 `"created"`, `"pipelineARN"` 및 `"updated"` 필드)을 삭제합니다.

   예를 들어, 구조에서 다음 행을 삭제합니다.

   ```
   "metadata": {  
     "pipelineArn": "arn:aws:codepipeline:region:account-ID:pipeline-name",
     "created": "date",
     "updated": "date"
     }
   ```

   파일을 저장합니다.

1.  변경 사항을 적용하려면 다음과 유사하게 파이프라인 JSON 파일을 지정하여 **update-pipeline** 명령을 실행합니다.
**중요**  
파일 이름 앞에 `file://`를 포함해야 합니다. 이 명령에 필수적입니다.

   ```
   aws codepipeline update-pipeline --cli-input-json file://pipeline.json
   ```

   이 명령은 편집한 파이프라인의 전체 구조를 반환합니다.

**다른 AWS 계정과 연결된 리소스를 사용하는 파이프라인을 테스트하려면**

1. 터미널(Linux, macOS 또는 Unix) 또는 명령 프롬프트(Windows)에서, 다음과 유사하게, 파이프라인의 이름을 지정한 채 **start-pipeline-execution** 명령을 실행합니다.

   ```
   aws codepipeline start-pipeline-execution --name MyFirstPipeline
   ```

   자세한 내용은 [수동으로 파이프라인 시작](pipelines-rerun-manually.md) 단원을 참조하십시오.

1. *AccountA* AWS Management Console 로에 로그인하고 [http://console.aws.amazon.com/codesuite/codepipeline/home](https://console.aws.amazon.com/codesuite/codepipeline/home) CodePipeline 콘솔을 엽니다.

    AWS 계정과 연결된 모든 파이프라인의 이름이 표시됩니다.

1. [**Name**]에서 방금 편집한 파이프라인의 이름을 선택합니다. 이렇게 하면 파이프라인의 각 단계의 각 작업 상태를 포함하여 파이프라인의 세부 정보 보기가 열립니다.

1. 파이프라인을 통해 진행 상황을 관찰합니다. 다른 AWS 계정과 연결된 리소스를 사용하는 작업에 대한 성공 메시지를 기다립니다.
**참고**  
*AccountA*로 로그인한 상태에서 작업의 세부 정보를 보려고 시도하는 경우 오류가 발생합니다. 로그아웃한 다음 *AccountB*로 로그인하여 CodeDeploy의 배포 세부 정보를 봅니다.