AWS Proton의 인프라 프로비저닝 방법 - AWS Proton

AWS Proton의 인프라 프로비저닝 방법

AWS Proton은 다음과 같은 여러 방법 중 하나로 인프라를 프로비저닝할 수 있습니다.

  • AWS 관리형 프로비저닝 — AWS Proton은 사용자 대신 프로비저닝 엔진을 호출합니다. 이 방법은 AWS CloudFormation 템플릿 번들만 지원합니다. 자세한 내용은 AWS CloudFormation IaC 파일 단원을 참조하세요.

  • CodeBuild 프로비저닝 — AWS Proton는 AWS CodeBuild을 사용하여 제공하는 쉘 명령을 실행합니다. 명령은 AWS Proton이 제공하는 입력을 읽을 수 있으며, 인프라를 프로비저닝 또는 프로비저닝 해제하고 출력 값을 생성할 수 있습니다. 이 방법을 위한 템플릿 번들에는 매니페스트 파일의 명령과 이러한 명령에 필요할 수 있는 프로그램, 스크립트 또는 기타 파일이 포함되어 있습니다.

    CodeBuild 프로비저닝 사용의 예로, AWS Cloud Development Kit (AWS CDK)를 사용하여 AWS 리소스를 프로비저닝하는 코드와 CDK를 설치하고 CDK 코드를 실행하는 매니페스트를 포함할 수 있습니다.

    자세한 내용은 CodeBuild 프로비저닝 템플릿 번들 단원을 참조하세요.

    참고

    CodeBuild 프로비저닝을 환경 및 서비스와 함께 사용할 수 있습니다. 현재로서는 이 방법으로 구성 요소를 프로비저닝할 수 없습니다.

  • 자체 관리형 프로비저닝 — AWS Proton는 제공하는 리포지토리에 풀 리퀘스트(PR)를 발행합니다. 이 리포지토리에서 자체 인프라 배포 시스템이 프로비저닝 프로세스를 실행합니다. 이 방법은 Terraform 템플릿 번들만 지원합니다. 자세한 내용은 Terraform IaC 파일 단원을 참조하세요.

AWS Proton은 각 환경 및 서비스의 프로비저닝 방법을 개별적으로 결정하고 설정합니다. 환경 또는 서비스를 만들거나 업데이트할 때 AWS Proton는 제공하는 템플릿 번들을 검사하고 템플릿 번들이 나타내는 프로비전 방법을 결정합니다. 환경 수준에서는 환경 및 해당 서비스의 프로비저닝 방식에 필요한 파라미터(AWS Identity and Access Management IAM 역할, 환경 계정 연결 또는 인프라 리포지토리)를 제공합니다.

서비스를 프로비저닝하는 데 AWS Proton를 사용하는 개발자는 프로비저닝 방법에 관계없이 동일한 경험을 할 수 있습니다. 개발자는 프로비저닝 방법을 알 필요가 없으며 서비스 프로비전 프로세스에서 아무것도 변경할 필요가 없습니다. 서비스 템플릿은 프로비저닝 방법을 설정하며, 개발자가 서비스를 배포하는 각 환경은 서비스 인스턴스 프로비저닝에 필요한 파라미터를 제공합니다.

다음 다이어그램은 다양한 프로비전 방법의 몇 가지 주요 특성을 요약한 것입니다. 표 다음 단원에서는 각 방법에 대한 세부 정보를 제공합니다.

프로비저닝 방법 템플릿 프로비저닝 제공자 추적 대상 상태

AWS 관리형

매니페스트, 스키마, IAC 파일(CloudFormation)

AWS Proton(CloudFormation을 통해)

AWS Proton(CloudFormation을 통해)

CodeBuild

매니페스트(명령 포함), 스키마, 명령 종속성(예: AWS CDK 코드)

AWS Proton(CodeBuild를 통해)

AWS Proton(명령은 CodeBuild를 통해 상태를 반환합니다)

자체 관리형

매니페스트, 스키마, IAC 파일(Terraform)

사용자 코드(Git 작업을 통해)

사용자 코드(API 호출을 AWS을 통해 전달)

AWS 관리형 프로비저닝의 작동 방식

환경 또는 서비스가 AWS 관리형 프로비저닝을 사용하는 경우 인프라는 다음과 같이 프로비저닝됩니다.

  1. AWS Proton 고객(관리자 또는 개발자)이 AWS Proton 리소스(환경 또는 서비스)를 만듭니다. 고객은 리소스의 템플릿을 선택하고 필요한 파라미터를 제공합니다. 자세한 내용은 다음 AWS 관리형 프로비저닝에 대한 고려 사항 단원을 참조하세요.

  2. AWS Proton은 리소스 프로비저닝을 위한 전체 AWS CloudFormation 템플릿을 렌더링합니다.

  3. AWS Proton은 AWS CloudFormation이 렌더링된 템플릿을 사용하여 프로비저닝을 시작하도록 호출합니다.

  4. AWS Proton은 AWS CloudFormation배포를 지속적으로 모니터링합니다.

  5. 프로비저닝이 완료되면 AWS Proton은 실패 시 오류를 보고하고, 성공 시 Amazon VPC ID와 같은 프로비저닝 출력을 캡처합니다.

다음 다이어그램은 이러한 단계 대부분을 AWS Proton이 직접 처리하는 것을 보여줍니다.


          AWS Proton에서 AWS 관리형 프로비저닝을 보여주는 다이어그램

AWS 관리형 프로비저닝에 대한 고려 사항

  • 인프라 프로비저닝 역할 - 환경 또는 해당 환경에서 실행되는 서비스 인스턴스가 AWS -관리형 프로비저닝을 사용할 수 있는 경우 관리자는 IAM 역할을 구성해야 합니다 (직접 또는 AWS Proton 환경 계정 연결의 일부로). AWS Proton가 역할을 사용하여 이러한 AWS 관리형 프로비저닝 리소스의 인프라를 프로비저닝합니다. 역할에는 AWS CloudFormation이 이러한 리소스의 템플릿에 포함된 모든 리소스를 만드는 데 사용할 수 있는 권한이 있어야 합니다.

    자세한 정보는 IAM 역할AWS Proton IAM 서비스 역할 정책 예제 단원을 참조하세요.

  • 서비스 프로비저닝 - 개발자가 -AWS 관리형 프로비저닝을 사용하는 서비스 인스턴스를 환경에 배포하는 경우, AWS Proton은 해당 환경에 제공된 역할을 사용하여 서비스 인스턴스에 대한 인프라를 프로비저닝합니다. 개발자는 이 역할을 볼 수 없으며 변경할 수도 없습니다.

  • 파이프라인이 포함된 서비스 - AWS 관리형 프로비저닝을 사용하는 서비스 템플릿에는 AWS CloudFormation YAML 스키마로 작성된 파이프라인 정의가 포함될 수 있습니다. 또한 AWS Proton는 AWS CloudFormation를 호출하여 파이프라인을 생성합니다. AWS Proton이 파이프라인을 생성하는 데 사용되는 역할은 각 개별 환경의 역할과는 별개입니다. 이 역할은 AWS 계정 수준에서 한 번만 별도로 AWS Proton에 제공되며 모든 AWS 관리 파이프라인을 프로비저닝하고 관리하는 데 사용됩니다. 이 역할에는 파이프라인에 필요한 파이프라인 및 기타 리소스를 생성할 수 있는 권한이 있어야 합니다.

    다음 절차는 AWS Proton에 파이프라인 역할을 제공하는 방법을 보여줍니다.

    AWS Proton console
    파이프라인 역할을 제공하려면
    1. AWS Proton콘솔의 탐색 창에서 설정 > 계정 설정을 선택한 다음 구성을 선택합니다.

    2. 파이프라인 AWS 관리 역할 섹션을 사용하여 AWS 관리형 프로비저닝을 위한 새 파이프라인 역할 또는 기존 파이프라인 역할을 구성할 수 있습니다.

    AWS Proton API
    파이프라인 역할을 제공하려면
    1. UpdateAccountSettings API 작업을 사용합니다.

    2. pipelineServiceRoleArn 파라미터에서 파이프라인 서비스 역할의 Amazon 리소스 이름(ARN)을 제공하세요.

    AWS CLI

    파이프라인 역할을 제공하려면

    다음 명령을 실행합니다.

    $ aws proton update-account-settings \ --pipeline-service-role-arn \ "arn:aws:iam::123456789012:role/my-pipeline-role"

CodeBuild 프로비저닝 작동 방식

환경 또는 서비스가 관리형 프로비저닝을 사용하는 경우 인프라는 다음과 같이 프로비저닝됩니다.

  1. AWS Proton 고객(관리자 또는 개발자)이 AWS Proton 리소스(환경 또는 서비스)를 만듭니다. 고객은 리소스의 템플릿을 선택하고 필요한 파라미터를 제공합니다. 자세한 내용은 다음 CodeBuild 프로비저닝 고려 사항 단원을 참조하세요.

  2. AWS Proton은 리소스를 프로비저닝하기 위한 입력 파라미터 값이 있는 입력 파일을 렌더링합니다.

  3. AWS Proton은 CodeBuild를 호출하여 작업을 시작합니다. CodeBuild 작업은 템플릿에 지정된 고객 쉘 명령을 실행합니다. 이러한 명령은 원하는 인프라를 프로비저닝하는 동시에 선택적으로 입력 값을 읽습니다.

  4. 프로비저닝이 완료되면 최종 고객 명령은 CodeBuild에 프로비저닝 상태를 반환하고 NotifyResourceDeploymentStatusChange AWS Proton API 작업을 호출하여 Amazon VPC ID와 같은 출력을 제공합니다 (있는 경우).

    중요

    명령이 CodeBuild에 프로비저닝 상태를 올바르게 반환하고 출력을 제공하는지 확인하세요. 그렇지 않으면 AWS Proton은 프로비저닝 상태를 제대로 추적할 수 없고 서비스 인스턴스에 올바른 출력을 제공할 수 없습니다.

다음 다이어그램은 CodeBuild 작업 내에서 AWS Proton이 수행하는 단계와 명령이 수행하는 단계를 보여줍니다.


          AWS Proton에서 CodeBuild 기반 프로비저닝을 보여주는 다이어그램

CodeBuild 프로비저닝 고려 사항

  • 인프라 프로비저닝 역할 - 환경 또는 환경에서 실행 중인 서비스 인스턴스가 CodeBuild 기반 프로비저닝을 사용할 수 있는 경우 관리자는 직접 또는 AWS Proton 환경 계정 연결의 일부로 IAM 역할을 구성해야 합니다. AWS Proton은 이 역할을 사용하여 이러한 CodeBuild 프로비저닝 리소스의 인프라를 프로비저닝할 수 있습니다. 역할에는 이러한 리소스의 템플릿에 포함된 모든 리소스를 만드는 데 사용할 수 있는 권한이 있어야 합니다.

    자세한 정보는 IAM 역할AWS Proton IAM 서비스 역할 정책 예제 단원을 참조하세요.

  • 서비스 프로비저닝 - 개발자가 CodeBuild 프로비저닝을 사용하는 서비스 인스턴스를 환경에 배포할 때 AWS Proton는 해당 환경에 제공된 역할을 사용하여 서비스 인스턴스에 대한 인프라를 프로비저닝합니다. 개발자는 이 역할을 볼 수 없으며 변경할 수도 없습니다.

  • 파이프라인이 포함된 서비스 — CodeBuild 프로비저닝을 사용하는 서비스 템플릿에는 파이프라인을 프로비저닝하는 명령이 포함될 수 있습니다. AWS Proton는 또한 CodeBuild를 호출하여 파이프라인을 생성합니다. AWS Proton이 파이프라인을 생성하는 데 사용되는 역할은 각 개별 환경의 역할과는 별개입니다. 이 역할은 AWS 계정 수준에서 한 번만 별도로 AWS Proton에 제공되며 모든 CodeBuild 파이프라인을 프로비저닝하고 관리하는 데 사용됩니다. 이 역할에는 파이프라인에 필요한 파이프라인 및 기타 리소스를 생성할 수 있는 권한이 있어야 합니다.

    다음 절차는 AWS Proton에 파이프라인 역할을 제공하는 방법을 보여줍니다.

    AWS Proton console
    파이프라인 역할을 제공하려면
    1. AWS Proton콘솔의 탐색 창에서 설정 > 계정 설정을 선택한 다음 구성을 선택합니다.

    2. Codebuild 파이프라인 프로비저닝 역할 섹션을 사용하여 CodeBuild 프로비저닝을 위한 새 파이프라인 역할 또는 기존 파이프라인 역할을 구성할 수 있습니다.

    AWS Proton API
    파이프라인 역할을 제공하려면
    1. UpdateAccountSettings API 작업을 사용합니다.

    2. pipelineCodebuildRoleArn 파라미터에서 파이프라인 서비스 역할의 Amazon 리소스 이름(ARN)을 제공하세요.

    AWS CLI

    파이프라인 역할을 제공하려면

    다음 명령을 실행합니다.

    $ aws proton update-account-settings \ --pipeline-codebuild-role-arn \ "arn:aws:iam::123456789012:role/my-pipeline-role"

자체 관리형 프로비저닝의 작동 방식

환경 또는 서비스가 자체 관리형 프로비저닝을 사용하는 경우 인프라는 다음과 같이 프로비저닝됩니다.

  1. AWS Proton 고객(관리자 또는 개발자)이 AWS Proton 리소스(환경 또는 서비스)를 만듭니다. 고객은 리소스의 템플릿을 선택하고 필요한 파라미터를 제공합니다. 환경의 경우 고객은 연결된 인프라 리포지토리도 제공합니다. 자세한 내용은 다음 자체 관리형 프로비저닝에 대한 고려 사항 단원을 참조하세요.

  2. AWS Proton은 완전한 Terraform 템플릿을 렌더링합니다. 여러 폴더에 있을 수 있는 하나 이상의 Terraform 파일과 .tfvars 변수 파일로 구성됩니다. AWS Proton은 리소스 생성 호출 시 제공된 파라미터 값을 이 변수 파일에 기록합니다.

  3. AWS Proton은 렌더링된 Terraform 템플릿을 사용하여 인프라 저장소에 PR을 제출합니다.

  4. 고객 (관리자 또는 개발자) 이 PR을 병합하면 고객의 자동화가 프로비저닝 엔진을 트리거하여 병합된 템플릿을 사용하여 인프라 프로비저닝을 시작합니다.

    참고

    고객 (관리자 또는 개발자) 이 PR을 종료하면 AWS Proton은 PR이 종료된 것으로 인식하고 배포를 취소된 것으로 표시합니다.

  5. 프로비저닝이 완료되면 고객의 자동화가 NotifyResourceDeploymentStatusChange AWS Proton API 작업을 호출하여 완료를 표시하고, 상태(성공 또는 실패)를 제공하고, Amazon VPC ID와 같은 출력이 있는 경우 이를 제공합니다.

    중요

    자동화 코드가 프로비저닝 상태 및 출력과 함께 AWS Proton로 다시 호출되는지 확인하세요. 그렇지 않으면 AWS Proton은 프로비저닝이 예상보다 오래 보류 중인 것으로 간주하고 진행 중 상태가 계속 표시될 수 있습니다.

다음 다이어그램은 프로비저닝 시스템에서 AWS Proton이 수행하는 단계와 자체 프로비저닝 시스템에서 수행하는 단계를 설명합니다.


          AWS Proton에서 관리형 프로비저닝을 보여주는 다이어그램

자체 관리형 프로비저닝에 대한 고려 사항

  • 인프라 리포지토리 - 관리자가 자체 관리형 프로비저닝을 위한 환경을 구성할 때 연결된 인프라 리포지토리를 제공해야 합니다. AWS Proton이 리포지토리에 PR을 제출하여 환경의 인프라와 해당 저장소에 배포된 모든 서비스 인스턴스를 제공합니다. 리포지토리에서의 고객 소유 자동화 작업은 환경 및 서비스 템플릿에 포함된 모든 리소스를 생성할 수 있는 권한과 대상 AWS 계정을 반영하는 ID를 가진 IAM 역할을 맡아야 합니다. 역할을 수임하는 GitHub 작업의 예는 GitHub 작업에 대한 "AWS 자격 증명 구성" 작업 설명서에서 역할 수임을 참조하세요.

  • 권한 — 프로비저닝 코드는 필요에 따라 계정으로 인증 (예: AWS 계정 인증) 하고 리소스 프로비저닝 권한 부여 (예: 역할 제공)를 제공해야 합니다.

  • 서비스 프로비저닝 - 개발자가 자체 관리형 프로비저닝을 사용하는 서비스 인스턴스를 환경에 배포하는 경우, AWS Proton은 해당 환경에 제공된 역할을 사용하여 서비스 인스턴스에 대한 인프라를 프로비저닝합니다. 개발자는 리포지토리를 볼 수 없으며 변경할 수도 없습니다.

    참고

    서비스를 만드는 개발자는 프로비저닝 방법에 상관없이 동일한 프로세스를 사용하며, 이러한 프로세스를 통해 차이점을 파악할 수 있습니다. 하지만 자체 관리형 프로비저닝을 사용하는 개발자의 경우 프로비저닝을 시작하기 전에 누군가(자신이 아닐 수도 있음)가 인프라 저장소의 PR을 병합할 때까지 기다려야 하기 때문에 개발자의 응답 속도가 느려질 수 있습니다.

  • 파이프라인이 포함된 서비스 — 자체 관리형 프로비저닝이 있는 환경을 위한 서비스 템플릿에는 Terraform HCL로 작성된 파이프라인 정의(예: AWS CodePipeline 파이프라인)가 포함될 수 있습니다. AWS Proton이 이러한 파이프라인을 프로비저닝할 수 있도록 관리자는 연결된 파이프라인 리포지토리를 AWS Proton에 제공합니다. 파이프라인을 프로비저닝할 때 리포지토리의 고객 소유 자동화 작업은 파이프라인을 프로비저닝할 권한이 있는 IAM 역할과 대상 AWS 계정을 반영하는 ID를 수임해야 합니다. 파이프라인 리포지토리 및 역할은 각 개별 환경에 사용되는 것과 별개입니다. 이 연결 리포지토리는 AWS 계정 수준에서 한 번만 별도로 AWS Proton에 제공되며 모든 관리 파이프라인을 프로비저닝하고 관리하는 데 사용됩니다. 해당 역할에는 파이프라인에 필요한 파이프라인 및 기타 리소스를 생성할 수 있는 권한이 있어야 합니다.

    다음 절차는 AWS Proton에 파이프라인 리포지토리 및 역할을 제공하는 방법을 보여줍니다.

    AWS Proton console
    파이프라인 역할을 제공하려면
    1. AWS Proton콘솔의 탐색 창에서 설정 > 계정 설정을 선택한 다음 구성을 선택합니다.

    2. CI/CD 파이프라인 리포지토리 섹션을 사용하여 새 리포지토리 링크 또는 기존 리포지토리 링크를 구성할 수 있습니다.

    AWS Proton API
    파이프라인 역할을 제공하려면
    1. UpdateAccountSettings API 작업을 사용합니다.

    2. pipelineProvisioningRepository 파라미터에 파이프라인 리포지토리의 공급자, 이름, 브랜치를 입력합니다.

    AWS CLI

    파이프라인 역할을 제공하려면

    다음 명령을 실행합니다.

    $ aws proton update-account-settings \ --pipeline-provisioning-repository \ "provider=GITHUB,name=my-pipeline-repo-name,branch=my-branch"
  • 자체 관리형 프로비저닝 리소스 삭제 — Terraform 모듈에는 리소스 정의 외에도 Terraform 작업에 필요한 구성 요소가 포함될 수 있습니다. 따라서 AWS Proton은 환경 또는 서비스 인스턴스의 모든 Terraform 파일을 삭제할 수 없습니다. 대신 AWS Proton은 삭제할 파일을 표시하고 PR 메타데이터에 플래그를 업데이트합니다. 자동화는 해당 플래그를 읽고 이를 사용하여 terraform destroy 명령을 트리거할 수 있습니다.