환경 생성 - AWS Proton

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

환경 생성

AWS Proton 환경을 생성하는 방법을 알아보세요.

AWS Proton 환경을 두 가지 방법으로 생성할 수 있습니다.
  • 표준 환경 템플릿을 사용하여 표준 환경을 만들고, 관리하고, 프로비저닝합니다. AWS Proton는 환경에 맞게 인프라를 프로비저닝합니다.

  • 고객 관리 환경 템플릿을 사용하여 고객 관리 인프라에 AWS Proton를 연결합니다. AWS Proton 외부에 자체 공유 리소스를 프로비저닝한 다음 AWS Proton가 사용할 수 있는 프로비저닝 출력을 제공합니다.

환경을 만들 때 여러 프로비저닝 접근 방식 중 하나를 선택할 수 있습니다.
  • AWS관리형 프로비저닝 — 단일 계정으로 환경을 생성, 관리 및 프로비저닝합니다. AWS Proton은 환경을 프로비저닝합니다.

    이 방법은 클라우드포메이션 인프라 코드 (IaC) 템플릿만 지원합니다.

  • AWS다른 계정으로의 관리형 프로비저닝 — 단일 관리 계정에서 환경 계정 연결을 통해 다른 계정에 프로비저닝된 환경을 만들고 관리합니다. AWS Proton은 다른 계정에 환경을 프로비저닝합니다. 자세한 정보는 한 계정에서 환경을 만들고 다른 계정에서 프로비저닝합니다.환경 계정 연결을 참조하세요.

    이 방법은 CloudFormation 인프라 코드 (IaC) 템플릿만 지원합니다.

  • 자체 관리형 프로비저닝 — AWS Proton는 자체 프로비저닝 인프라가 있는 연결된 리포지토리에 프로비저닝 풀 요청을 제출합니다.

    이 방법은 Terraform IaC 템플릿만 지원합니다.

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

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

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

    참고

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

AWS 관리형 프로비저닝(동일한 계정과 다른 계정 모두)을 사용하면 AWS Proton는 직접 호출하여 리소스를 프로비저닝할 수 있습니다.

자체 관리형 프로비저닝을 사용하면, AWS Proton는 IaC 엔진이 리소스를 프로비저닝하는 데 사용하는 컴파일된 IaC 파일을 제공하도록 풀 요청을 생성합니다.

자세한 내용은 AWS Proton의 인프라 프로비저닝 방법, 템플릿 번들환경 템플릿 번들에 대한 스키마 요구 사항을 참조하세요.

동일한 계정에서 표준 환경을 만들고 프로비저닝합니다.

콘솔 또는 AWS CLI을 사용하여 단일 계정으로 환경을 만들고 프로비저닝할 수 있습니다. 프로비저닝은 AWS에서 관리합니다.

AWS Management Console
콘솔을 사용하여 단일 계정으로 환경을 만들고 프로비저닝할 수 있습니다.
  1. AWS Proton 콘솔에서 환경을 선택합니다.

  2. 환경 생성을 선택합니다.

  3. 환경 템플릿 선택 페이지에서 템플릿을 선택하고 구성을 선택합니다.

  4. 환경 구성 페이지의 프로비저닝 단원에서 AWS관리형 프로비저닝을 선택합니다.

  5. 배포 계정 단원에서 이 AWS 계정를 선택합니다.

  6. 환경 구성 페이지의 환경 설정 단원에서 환경 이름을 입력합니다.

  7. (선택 사항) 환경에 대한 설명을 입력합니다.

  8. 환경 역할 단원에서 AWS Proton 서비스 역할 설정의 일부로 만든 AWS Proton 서비스 역할을 선택합니다.

  9. (선택 사항) 구성 요소 역할 단원에서 직접 정의된 구성 요소를 환경에서 실행할 수 있게 하고 해당 구성 요소가 프로비저닝할 수 있는 리소스의 범위를 좁히는 서비스 역할을 선택합니다. 자세한 내용은 AWS Proton 구성 요소을 참조하세요.

  10. (선택 사항) 태그 단원에서 새 태그 추가를 선택하고 키와 값을 입력하여 고객 관리형 태그를 생성합니다.

  11. 다음을 선택합니다.

  12. 환경 사용자 지정 설정 구성 페이지에서 required 파라미터 값을 입력해야 합니다. optional 파라미터 값을 입력하거나 지정된 경우 기본값을 사용할 수 있습니다.

  13. 다음을 선택하고 입력 내용을 검토합니다.

  14. 생성을 선택합니다.

    환경 세부 정보 및 상태는 물론 환경에 대한 AWS 관리 태그와 고객 관리 태그를 확인하세요.

  15. 탐색 창에서 환경을 선택합니다.

    새 페이지에는 환경 목록이 상태 및 기타 환경 세부 정보와 함께 표시됩니다.

AWS CLI

AWS CLI를 사용하여 단일 계정으로 환경을 만들고 프로비저닝할 수 있습니다.

환경을 만들려면 AWS Proton서비스 역할 ARN, 사양 파일 경로, 환경 이름, 환경 템플릿 ARN, 메이저 및 마이너 버전, 설명 (선택 사항) 을 지정합니다.

다음 예제는 환경 템플릿 스키마 파일에 정의된 두 입력의 값을 지정하는 YAML 형식이 지정된 사양 파일을 보여줍니다. get-environment-template-minor-version 명령을 사용하여 환경 템플릿 스키마를 볼 수 있습니다.

proton: EnvironmentSpec spec: my_sample_input: "the first" my_other_sample_input: "the second"

다음 명령을 실행하여 환경을 생성합니다.

$ aws proton create-environment \ --name "MySimpleEnv" \ --template-name simple-env \ --template-major-version 1 \ --proton-service-role-arn "arn:aws:iam::123456789012:role/AWSProtonServiceRole" \ --spec "file://env-spec.yaml"

응답:

{ "environment": { "arn": "arn:aws:proton:region-id:123456789012:environment/MySimpleEnv", "createdAt": "2020-11-11T23:03:05.405000+00:00", "deploymentStatus": "IN_PROGRESS", "lastDeploymentAttemptedAt": "2020-11-11T23:03:05.405000+00:00", "name": "MySimpleEnv", "protonServiceRoleArn": "arn:aws:iam::123456789012:role/ProtonServiceRole", "templateName": "simple-env" } }

새 환경을 만든 후에는 다음 예제 명령과 같이 AWS 및 고객 관리 태그 목록을 볼 수 있습니다. AWS Proton는 자동으로 AWS 관리 태그를 생성합니다. AWS CLI 를 사용하여 고객 관리 태그를 수정하고 생성할 수도 있습니다. 자세한 내용은 AWS Proton 리소스 및 태깅을 참조하세요.

명령:

$ aws proton list-tags-for-resource \ --resource-arn "arn:aws:proton:region-id:123456789012:environment/MySimpleEnv"

한 계정에서 환경을 만들고 다른 계정에서 프로비저닝합니다.

콘솔 또는 AWS CLI을 사용하여 다른 계정에 환경 인프라를 프로비저닝하는 관리 계정에서 표준 환경을 만들 수 있습니다. 프로비저닝은 AWS에서 관리합니다.

콘솔 또는 CLI를 사용하기 전에 다음 단계를 완료합니다.
  1. 관리 및 환경 계정의 AWS 계정 ID를 식별하고 나중에 사용할 수 있도록 복사합니다.

  2. 환경 계정에서 환경이 생성할 수 있는 최소 권한이 있는 AWS Proton 서비스 역할을 생성합니다. 자세한 내용은 AWS CloudFormation를 사용하여 프로비저닝하기 위한 AWS Proton 서비스 역할을 참조하세요.

AWS Management Console
콘솔을 사용하여 한 계정에서 환경을 만들고 다른 계정에서 프로비저닝합니다.
  1. 환경 계정에서 환경 계정 연결을 생성하고 이를 사용하여 관리 계정에 연결하라는 요청을 보내십시오.
    1. AWS Proton 콘솔의 탐색 창에서 환경 계정 연결을 선택합니다.

    2. 환경 계정 연결 페이지에서 연결 요청을 선택합니다.

      참고

      환경 계정 연결 페이지 제목에 나열된 계정 ID가 미리 식별된 환경 계정 ID와 일치하는지 확인하세요.

    3. 연결 요청 페이지의 환경 역할 단원에서 기존 서비스 역할과 환경용으로 만든 서비스 역할의 이름을 선택합니다.

    4. 관리 계정에 연결 단원에서 AWS Proton 환경의 관리 계정 ID와 환경 이름을 입력합니다. 나중에 사용할 수 있도록 이름을 복사하세요.

    5. 페이지 오른쪽 하단에서 연결 요청을 선택합니다.

    6. 관리 계정으로 전송된 환경 연결 테이블에 요청이 보류 중으로 표시되고 관리 계정의 요청을 수락하는 방법이 모달에 표시됩니다.

  2. 관리 계정에서 환경 계정의 연결 요청을 수락합니다.
    1. 관리 계정에 로그인하고 AWS Proton 콘솔에서 환경 계정 연결을 선택합니다.

    2. 환경 계정 연결 페이지의 환경 계정 연결 요청 테이블에서 미리 식별된 환경 계정 ID와 일치하는 환경 계정 ID를 가진 환경 계정 연결을 선택합니다.

      참고

      환경 계정 연결 페이지 제목에 나열된 계정 ID가 미리 식별된 관리 계정 ID와 일치하는지 확인하세요.

    3. 수락을 선택합니다. 상태가 [보류 중] 에서 [연결됨] 으로 변경됩니다.

  3. 관리 계정에서 환경을 생성합니다.
    1. 탐색 창에서 환경 템플릿을 선택합니다.

    2. 환경 템플릿 페이지에서 환경 템플릿 생성을 선택합니다.

    3. 환경 템플릿 선택 페이지에서 환경 템플릿을 선택합니다.

    4. 환경 구성 페이지의 프로비저닝 단원에서 AWS관리형 프로비저닝을 선택합니다.

    5. 배포 계정 단원에서 다른 AWS 계정을 선택합니다.

    6. 환경 세부 정보 단원에서 환경 계정 연결환경 이름을 선택합니다.

    7. 다음을 선택합니다.

    8. 양식을 작성하고 검토 및 만들기 페이지가 표시될 때까지 다음을 선택합니다.

    9. 검토 후 환경 만들기를 선택합니다.

AWS CLI

AWS CLI를 사용하여 한 계정에서 환경을 만들고 다른 계정에서 프로비저닝합니다.

환경 계정에서 다음 명령을 실행하여 환경 계정 연결을 만들고 연결을 요청합니다.

$ aws proton create-environment-account-connection \ --environment-name "simple-env-connected" \ --role-arn "arn:aws:iam::222222222222:role/service-role/env-account-proton-service-role" \ --management-account-id "111111111111"

응답:

{ "environmentAccountConnection": { "arn": "arn:aws:proton:region-id:222222222222:environment-account-connection/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "environmentAccountId": "222222222222", "environmentName": "simple-env-connected", "id": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "lastModifiedAt": "2021-04-28T23:13:50.847000+00:00", "managementAccountId": "111111111111", "requestedAt": "2021-04-28T23:13:50.847000+00:00", "roleArn": "arn:aws:iam::222222222222:role/service-role/env-account-proton-service-role", "status": "PENDING" } }

관리 계정에서 다음 명령을 실행하여 환경 계정 연결 요청을 수락합니다.

$ aws proton accept-environment-account-connection \ --id "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111"

응답:

{ "environmentAccountConnection": { "arn": "arn:aws:proton:region-id:222222222222:environment-account-connection/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "environmentAccountId": "222222222222", "environmentName": "simple-env-connected", "id": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "lastModifiedAt": "2021-04-28T23:15:33.486000+00:00", "managementAccountId": "111111111111", "requestedAt": "2021-04-28T23:13:50.847000+00:00", "roleArn": "arn:aws:iam::222222222222:role/service-role/env-account-proton-service-role", "status": "CONNECTED" } }

다음 명령을 실행하여 환경 계정 연결을 확인합니다.

$ aws proton get-environment-account-connection \ --id "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111"

응답:

{ "environmentAccountConnection": { "arn": "arn:aws:proton:region-id:222222222222:environment-account-connection/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "environmentAccountId": "222222222222", "environmentName": "simple-env-connected", "id": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "lastModifiedAt": "2021-04-28T23:15:33.486000+00:00", "managementAccountId": "111111111111", "requestedAt": "2021-04-28T23:13:50.847000+00:00", "roleArn": "arn:aws:iam::222222222222:role/service-role/env-account-proton-service-role", "status": "CONNECTED" } }

관리 계정에서 다음 명령을 실행하여 환경을 만듭니다.

$ aws proton create-environment \ --name "simple-env-connected" \ --template-name simple-env-template \ --template-major-version "1" \ --template-minor-version "1" \ --spec "file://simple-env-template/specs/original.yaml" \ --environment-account-connection-id "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111"

응답:

{ "environment": { "arn": "arn:aws:proton:region-id:111111111111:environment/simple-env-connected", "createdAt": "2021-04-28T23:02:57.944000+00:00", "deploymentStatus": "IN_PROGRESS", "environmentAccountConnectionId": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "environmentAccountId": "222222222222", "lastDeploymentAttemptedAt": "2021-04-28T23:02:57.944000+00:00", "name": "simple-env-connected", "templateName": "simple-env-template" } }

자체 관리형 프로비저닝을 사용하여 환경을 만들고 프로비저닝합니다.

자체 관리형 프로비저닝을 사용하는 경우, AWS Proton은 자체 프로비저닝 인프라가 있는 연결된 리포지토리에 프로비저닝 풀 리퀘스트를 제출합니다. 풀 리퀘스트는 AWS 서비스를 호출하여 인프라를 프로비저닝하는 자체 워크플로우를 시작합니다.

자체 관리형 프로비저닝 고려 사항:
  • 환경을 만들기 전에 자체 관리형 프로비저닝을 위한 리포지토리 리소스 디렉터리를 설정합니다. 자세한 내용은 AWS Proton 코드 파일로서의 인프라을 참조하세요.

  • 환경을 만든 후에 AWS Proton은 인프라 프로비저닝 상태에 대한 비동기 알림을 받을 때까지 기다립니다. 프로비저닝 코드는 AWS Proton NotifyResourceStateChange API를 사용하여 이러한 비동기 알림을 AWS Proton에 전송해야 합니다.

콘솔에서 또는 AWS CLI와 함께 자체 관리형 프로비저닝을 사용할 수 있습니다. 다음 예시는 Terraform에서 자체 관리형 프로비저닝을 사용하는 방법을 보여줍니다.

AWS Management Console
콘솔을 사용하여 자체 관리형 프로비저닝을 사용하여 Terraform 환경을 만들 수 있습니다.
  1. AWS Proton 콘솔에서 환경을 선택합니다.

  2. 환경 생성을 선택합니다.

  3. 환경 템플릿 선택 페이지에서 Terraform 템플릿을 선택하고 구성을 선택합니다.

  4. 환경 구성 페이지의 프로비저닝 단원에서 자체 관리형 프로비저닝을 선택합니다.

  5. 프로비전 리포지토리 세부 정보 단원에서,

    1. 프로비저닝 리포지토리를 아직 AWS Proton에 연결하지 않은 경우 새 리포지토리를 선택하고 리포지토리 제공자 중 하나를 선택한 다음 CodeStar 연결의 경우 연결 중 하나를 선택합니다.

      참고

      관련 리포지토리 공급자 계정에 아직 연결되지 않은 경우 새 CodeStar 연결 추가를 선택합니다. 그런 다음 연결을 만든 다음 CodeStar 연결 메뉴 옆에 있는 새로 고침 버튼을 선택합니다. 이제 메뉴에서 새 연결을 선택할 수 있을 것입니다.

      리포지토리를 AWS Proton에 이미 연결했다면 기존 리포지토리를 선택합니다.

    2. 리포지토리 이름에서 퍼블릭 리포지토리를 선택합니다. 드롭다운 메뉴에는 기존 리포지토리 또는 새 리포지토리의 공급자 계정에 있는 리포지토리 목록이 표시됩니다.

    3. 브랜치 이름에서 리포지토리 브랜치 중의 하나를 선택합니다.

  6. 환경 설정 단원에서 환경 이름을 입력합니다.

  7. (선택 사항) 환경에 대한 설명을 입력합니다.

  8. (선택 사항) 태그 단원에서 새 태그 추가를 선택하고 키와 값을 입력하여 고객 관리형 태그를 생성합니다.

  9. 다음을 선택합니다.

  10. 환경 사용자 지정 설정 구성 페이지에서 required 파라미터 값을 입력해야 합니다. optional 파라미터 값을 입력하거나 지정된 경우 기본값을 사용할 수 있습니다.

  11. 다음을 선택하고 입력 내용을 검토합니다.

  12. 생성을 선택하여 풀 리퀘스트를 전송합니다.

    • 풀 리퀘스트를 승인하면 배포가 진행 중인 것입니다.

    • 풀 리퀘스트를 거부하면 환경 생성이 취소됩니다.

    • 풀 리퀘스트 제한 시간이 초과되면 환경 생성이 완료되지 않습니다.

  13. 환경 세부 정보 및 상태는 물론 환경에 대한 AWS 관리 태그와 고객 관리 태그를 확인하세요.

  14. 탐색 창에서 환경을 선택합니다.

    새 페이지에는 환경 목록이 상태 및 기타 환경 세부 정보와 함께 표시됩니다.

AWS CLI

자체 관리형 프로비저닝을 사용하여 환경을 만들 때는 provisioningRepository파라미터를 추가하고 ProtonServiceRoleArnenvironmentAccountConnectionId 파라미터는 생략합니다.

AWS CLI를 사용하여 자체 관리형 프로비저닝을 통해 Terraform 환경을 만들 수 있습니다.
  1. 환경을 만들고 검토 및 승인을 위해 리포지토리에 풀 리퀘스트를 보내세요.

    다음 예제에서는 환경 템플릿 스키마 파일을 기반으로 두 입력의 값을 정의하는 YAML 형식이 지정된 사양 파일을 보여줍니다. get-environment-template-minor-version 명령을 사용하여 환경 템플릿 스키마를 볼 수 있습니다.

    Spec:

    proton: EnvironmentSpec spec: ssm_parameter_value: "test"

    다음 명령을 실행하여 환경을 생성합니다.

    $ aws proton create-environment \ --name "pr-environment" \ --template-name "pr-env-template" \ --template-major-version "1" \ --provisioning-repository="branch=main,name=myrepos/env-repo,provider=GITHUB" \ --spec "file://env-spec.yaml"

    응답:>

    { "environment": { "arn": "arn:aws:proton:region-id:123456789012:environment/pr-environment", "createdAt": "2021-11-18T17:06:58.679000+00:00", "deploymentStatus": "IN_PROGRESS", "lastDeploymentAttemptedAt": "2021-11-18T17:06:58.679000+00:00", "name": "pr-environment", "provisioningRepository": { "arn": "arn:aws:proton:region-id:123456789012:repository/github:myrepos/env-repo", "branch": "main", "name": "myrepos/env-repo", "provider": "GITHUB" }, "templateName": "pr-env-template" }
  2. 요청을 검토합니다.

    • 요청을 승인하면 프로비저닝이 진행 중인 것입니다.

    • 요청을 거부하면 환경 생성이 취소됩니다.

    • 풀 리퀘스트 제한 시간이 초과되면 환경 생성이 완료되지 않습니다.

  3. AWS Proton에 프로비저닝 상태를 비동기적으로 제공합니다. 다음 예시에서는 AWS Proton이 프로비저닝에 성공했음을 알립니다.

    $ aws proton notify-resource-deployment-status-change \ --resource-arn "arn:aws:proton:region-id:123456789012:environment/pr-environment" \ --status "SUCCEEDED"