서비스 관리형 권한으로 AWS CloudFormation StackSet 생성 - AWS CloudFormation

서비스 관리형 권한으로 AWS CloudFormation StackSet 생성

서비스 관리형 권한을 사용하면 특정 리전에서 AWS Organizations가 관리하는 계정에 스택을 배포할 수 있습니다. 이 모델을 사용하면 필요한 IAM 역할을 생성할 필요가 없습니다. CloudFormation이 사용자를 대신하여 IAM 역할을 생성합니다. 자세한 내용은 신뢰할 수 있는 액세스 활성화 섹션을 참조하세요.

고려 사항

서비스 관리형 권한으로 StackSet를 생성하기 전에 다음을 고려합니다.

  • 위임된 관리자가 생성한 StackSets를 포함하여 서비스 관리형 권한이 있는 StackSets가 관리 계정에 생성됩니다.

  • StackSet는 전체 조직(모든 계정 포함) 또는 지정된 조직 단위(OU)를 대상으로 할 수 있습니다. StackSet가 상위 OU를 대상으로 하는 경우 StackSet는 하위 OU도 대상으로 합니다. StackSet가 특정 OU 대상으로 하는 경우 해당 OU 내의 모든 계정이 기본적으로 포함됩니다. 단, 계정 필터 옵션을 사용하여 특정 계정을 대상으로 지정할 수 있습니다.

  • 여러 StackSets가 동일한 조직 또는 OU를 대상으로 할 수 있습니다.

  • StackSet는 조직 외부의 계정을 대상으로 지정할 수 없습니다.

  • StackSet는 중첩 스택을 배포할 수 없습니다.

  • 관리 계정이 조직에 있거나 조직의 OU에 있는 경우에도 CloudFormation은 조직 관리 계정에 스택을 배포하지 않습니다.

  • 자동 배포는 StackSet 수준에서 설정됩니다. OU, 계정 또는 리전의 경우 자동 배포를 선택적으로 조정할 수 없습니다.

  • 관리 계정에 로그인하는 데 사용하는 IAM 보안 주체 엔터티(사용자, 역할 또는 그룹)의 권한에 따라 StackSets와 함께 배포할 권한이 있는지 여부가 결정됩니다. 조직에 배포할 권한을 부여하는 IAM 정책 예제는 리전 및 리소스 유형을 기반으로 스택 세트 작업 제한 단원을 참조하십시오.

  • 위임된 관리자는 조직의 계정에 배포할 수 있는 모든 권한을 가집니다. 관리 계정은 위임된 관리자 권한을 특정 OU에 배포하는 권한 또는 특정 StackSet 작업을 수행하는 권한으로 제한할 수 없습니다.

서비스 관리형 권한으로 StackSet 생성(콘솔)

StackSet를 생성하려면
  1. AWS Management Console에 로그인하여 https://console.aws.amazon.com/cloudformation에서 AWS CloudFormation 콘솔을 엽니다.

  2. 화면 상단의 탐색 모음에서 StackSet를 관리할 AWS 리전을 선택합니다.

  3. 탐색 창에서 스택 세트를 선택합니다.

  4. StackSet 페이지의 상단에서 StackSet 만들기를 선택합니다.

  5. 권한에서 서비스 관리형 권한을 선택합니다.

    참고

    AWS Organizations에서 신뢰할 수 있는 액세스가 비활성화되면 배너가 표시됩니다. 서비스 관리형 권한으로 StackSet를 생성하거나 업데이트하려면 신뢰할 수 있는 액세스가 필요합니다. 조직 관리 계정의 관리자만 AWS Organizations를 사용하여 StackSet에 대한 신뢰할 수 있는 액세스 활성화에 대한 권한이 있습니다.

  6. 사전 조건 - 템플릿 준비에서 템플릿 준비 완료를 선택합니다.

  7. 템플릿 지정, 아래에서 스택 템플릿을 포함하는 S3 버킷의 URL을 지정하거나 스택 템플릿 파일을 업로드하도록 선택합니다. 그리고 다음을 선택합니다.

  8. StackSet 세부 정보 지정 페이지에서 StackSet의 이름을 제공하고 파라미터를 지정한 후 다음을 선택합니다.

  9. StackSet 옵션 구성 페이지의 태그 아래에서 스택의 리소스에 적용할 태그를 지정합니다. AWS에서 태그를 사용하는 방법에 대한 자세한 내용은 AWS 결제 및 비용 관리 사용 설명서Organizing and tracking costs using AWS cost allocation tags를 참조하세요.

  10. 실행 구성에서 활성을 선택하여 CloudFormation의 최적화된 작업 처리를 활성화합니다.

    • 배포 시간을 단축하기 위해, 서로 충돌하지 않는 작업이 동시에 실행됩니다.

    • 서로 충돌하는 작업은 요청된 순서대로 자동으로 대기열에 추가되고 처리됩니다.

    실행 중이거나 대기 중인 작업이 있는 경우 CloudFormation은 충돌하지 않더라도 모든 수신 작업을 대기열에 넣습니다. 이 시간 동안에는 실행 설정을 변경할 수 없습니다.

  11. 템플릿에 IAM 리소스가 포함되어 있는 경우 기능에서 이 템플릿이 IAM 리소스를 생성할 수 있음을 확인합니다를 선택하여 템플릿에서 IAM 리소스를 사용하도록 지정합니다. 자세한 내용은 CloudFormation 템플릿에서 IAM 리소스 승인 섹션을 참조하세요.

  12. 아직 활성화하지 않은 경우 계속해서 신뢰할 수 있는 액세스를 활성화하려면 다음을 선택합니다.

  13. 배포 옵션 설정 페이지의 배포 대상에서 다음 중 하나를 수행합니다.

    • 조직의 모든 계정에 배포하려면 조직에 배포를 선택합니다.

    • 특정 OU의 모든 계정에 배포하려면 OU(조직 단위)에 배포를 선택합니다. OU 추가를 선택한 다음, 텍스트 상자에 대상 OU ID를 붙여 넣습니다. 각각의 새로운 대상 OU에 대해 반복합니다.

    계정 필터 유형에서 조직 단위(OU)에 배포를 선택한 경우 다음 옵션 중 하나를 선택하고 계정 번호를 제공하여 배포 대상을 특정 개별 계정으로 설정할 수 있습니다.

    • 없음(기본값) - 지정된 OU에 있는 모든 계정에 스택을 배포합니다.

    • 교집합 - 선택한 OU 내 특정 개별 계정에 스택을 배포합니다.

    • 차집합 - 특정 계정을 제외하고 선택한 OU의 모든 계정에 스택을 배포합니다.

    • 합집합 - 지정된 OU 및 추가 개별 계정에 스택을 배포합니다.

  14. 자동 배포에서 나중에 대상 조직 또는 OU에 추가되는 계정에 자동으로 배포할지 여부를 선택합니다. 자세한 내용은 AWS Organizations에서 StackSets에 대한 자동 배포 활성화 또는 비활성화 섹션을 참조하세요.

  15. 자동 배포를 활성화한 경우 계정 제거 동작에서 대상 조직 또는 OU에서 계정이 제거될 때 스택 리소스를 유지할지 또는 삭제할지 여부를 선택합니다.

    참고

    스택 유지를 선택하면 스택이 StackSet에서 제거되지만 스택 및 관련 리소스는 유지됩니다. 리소스는 현재 상태로 유지되지만 더 이상 StackSet에 포함되지 않습니다.

  16. 리전 지정에서 스택을 배포하려는 리전을 선택하세요.

  17. 배포 옵션에서 다음을 수행하세요.

    • 최대 동시 계정에서 동시에 처리되는 계정 수를 지정하세요.

    • 내결함성에서 리전당 허용되는 최대 계정 실패 횟수를 지정합니다. 이 한도에 도달하면 작업이 중지되고 다른 리전으로 진행되지 않습니다.

    • 리전 동시성에서 리전을 처리하는 방법(순차: 한 번에 하나의 리전 또는 병렬: 동시에 여러 리전)을 선택하세요.

    • 동시성 모드에서 작업 실행 중에 동시성이 작동하는 방식을 선택하세요.

      • 엄격한 내결함성 - 내결함성 +1의 범위를 유지하면서 장애가 발생하는 경우 계정 동시성 수준을 줄입니다.

      • 소프트한 내결함성 - 장애에 관계없이 지정된 동시성 수준(최대 동시 계정의 값)을 유지합니다.

  18. 다음을 선택하여 계속 진행합니다.

  19. 검토 페이지에서 StackSet가 올바른 리전의 올바른 계정에 배포하는지 확인한 다음 StackSet 생성을 선택합니다.

    StackSet 세부 정보 페이지가 열립니다. StackSet의 스택 생성 진행률과 상태를 볼 수 있습니다.

서비스 관리형 권한으로 StackSet 생성(AWS CLI)

이 섹션의 다음 단계를 따라 AWS CLI을 사용합니다.

  • StackSet 컨테이너를 생성합니다.

  • 스택 인스턴스를 배포합니다.

참고

위임된 관리자 역할로 작업하는 경우 명령에 --call-as DELEGATED_ADMIN을 포함해야 합니다.

Deploy to your organization
StackSet를 생성하려면
  1. create-stack-set 명령을 사용하여 my-stackset라는 이름의 새 StackSet를 생성합니다. 다음 예에서는 S3 버킷에 저장된 템플릿을 사용하고, 자동 배포를 활성화하고, 계정이 제거될 때 스택을 보존합니다. 자세한 내용은 AWS Organizations에서 StackSets에 대한 자동 배포 활성화 또는 비활성화 섹션을 참조하세요.

    aws cloudformation create-stack-set \ --stack-set-name my-stackset \ --template-url https://s3.region-code.amazonaws.com/amzn-s3-demo-bucket/MyApp.template \ --permission-model SERVICE_MANAGED \ --auto-deployment Enabled=true,RetainStacksOnAccountRemoval=true
  2. list-stack-sets 명령을 사용하여 StackSet가 생성되었는지 확인합니다. 새 StackSet가 결과에 나열됩니다.

    aws cloudformation list-stack-sets
    • 멤버 계정에 로그인한 상태에서 --call-as 옵션을 DELEGATED_ADMIN으로 설정하는 경우 list-stack-sets는 조직의 관리 계정에서 서비스 관리형 권한이 있는 모든 StackSets를 반환합니다.

    • AWS 계정에 로그인한 상태에서 --call-as 옵션을 SELF로 설정하는 경우 list-stack-sets는 AWS 계정에 있는 모든 자체 관리형 스택 세트를 반환합니다.

    • 조직의 관리 계정에 로그인한 상태에서 --call-as 옵션을 SELF로 설정하는 경우 list-stack-sets는 조직의 관리 계정에 있는 모든 StackSets를 반환합니다.

  3. create-stack-instances 명령을 사용하여 StackSet에 스택을 추가합니다. --deployment-targets 옵션에서 조직의 모든 계정에 배포할 조직 루트 ID를 지정합니다.

    --operation-preferences 옵션을 사용하여 동시 계정 처리 및 기타 배포 기본 설정을 지정하세요. 이 예제에서는 개수 기반 설정을 사용합니다. MaxConcurrentCountFailureToleranceCount + 1을 초과해서는 안 됩니다. 백분율 기반 설정의 경우 대신 FailureTolerancePercentage 또는 MaxConcurrentPercentage를 사용하세요.

    aws cloudformation create-stack-instances --stack-set-name my-stackset \ --deployment-targets OrganizationalUnitIds=r-a1b2c3d4e5 \ --regions us-west-2 us-east-1 \ --operation-preferences MaxConcurrentCount=1,FailureToleranceCount=0

    자세한 내용은 AWS CloudFormation API 참조CreateStackInstances를 참조하세요.

  4. create-stack-instances 출력의 일부로 반환된 operation-id를 사용하여 다음 describe-stack-set-operation을 통해 스택이 생성되었는지 확인하세요.

    aws cloudformation describe-stack-set-operation \ --stack-set-name my-stackset \ --operation-id operation_ID
Deploy to organizational units (OUs)
StackSet를 생성하려면
  1. create-stack-set 명령을 사용하여 my-stackset라는 이름의 새 StackSet를 생성합니다. 다음 예에서는 S3 버킷에 저장된 템플릿을 사용하고, KeyPairName 값을 TestKey으로 설정하는 파라미터를 포함합니다.

    aws cloudformation create-stack-set \ --stack-set-name my-stackset \ --template-url https://s3.region-code.amazonaws.com/amzn-s3-demo-bucket/MyApp.template \ --permission-model SERVICE_MANAGED \ --parameters ParameterKey=KeyPairName,ParameterValue=TestKey
  2. list-stack-sets 명령을 사용하여 StackSet가 생성되었는지 확인합니다. 새 StackSet가 결과에 나열됩니다.

    aws cloudformation list-stack-sets
    • 멤버 계정에 로그인한 상태에서 --call-as 옵션을 DELEGATED_ADMIN으로 설정하는 경우 list-stack-sets는 조직의 관리 계정에서 서비스 관리형 권한이 있는 모든 StackSets를 반환합니다.

    • AWS 계정에 로그인한 상태에서 --call-as 옵션을 SELF로 설정하는 경우 list-stack-sets는 AWS 계정에 있는 모든 자체 관리형 스택 세트를 반환합니다.

    • 조직의 관리 계정에 로그인한 상태에서 --call-as 옵션을 SELF로 설정하는 경우 list-stack-sets는 조직의 관리 계정에 있는 모든 StackSets를 반환합니다.

  3. create-stack-instances 명령을 사용하여 StackSet에 스택을 추가합니다. --deployment-targets 옵션에서 스택을 배포할 OU ID 지정합니다.

    --operation-preferences 옵션을 사용하여 동시 계정 처리 및 기타 배포 기본 설정을 지정하세요. 이 예제에서는 개수 기반 설정을 사용합니다. MaxConcurrentCountFailureToleranceCount + 1을 초과해서는 안 됩니다. 백분율 기반 설정의 경우 대신 FailureTolerancePercentage 또는 MaxConcurrentPercentage를 사용하세요.

    aws cloudformation create-stack-instances --stack-set-name my-stackset \ --deployment-targets OrganizationalUnitIds=ou-rcuk-1x5j1lwo,ou-rcuk-slr5lh0a \ --regions us-west-2 us-east-1 \ --operation-preferences MaxConcurrentCount=1,FailureToleranceCount=0

    자세한 내용은 AWS CloudFormation API 참조CreateStackInstances를 참조하세요.

  4. create-stack-instances 출력의 일부로 반환된 operation-id를 사용하여 다음 describe-stack-set-operation을 통해 스택이 생성되었는지 확인하세요.

    aws cloudformation describe-stack-set-operation \ --stack-set-name my-stackset \ --operation-id operation_ID
Deploy to specific accounts in OUs

특정 조직 단위(OU)를 대상으로 하고 계정 필터링을 사용하여, 스택을 배포할 계정을 정확하게 제어할 수 있습니다. 기본적으로, 계정 필터링이 지정되지 않은 경우 스택은 지정된 OU 내의 모든 계정에 배포됩니다.

AWS CLI에서 --deployment-targets 옵션을 사용하여 계정 필터링을 지정합니다. 자세한 내용은 DeploymentTargets를 참조하세요.

create-stack-set 명령을 사용하여 StackSet 컨테이너를 생성한 후, 다음 예 중 하나를 사용하여 특정 계정에 스택을 배포합니다.

OU의 특정 계정을 대상으로 지정

다음 예에서는 OU1의 계정 A1 및 A2에만 스택을 배포합니다.

aws cloudformation create-stack-instances --stack-set-name my-stackset \ --deployment-targets OrganizationalUnitIds=OU1,Accounts=A1,A2,AccountFilterType=INTERSECTION \ --regions us-west-2 us-east-1
OU에서 계정 제외

다음 예에서는 계정 A1과 A2를 제외한 OU1의 모든 계정에 스택을 배포합니다.

aws cloudformation create-stack-instances --stack-set-name my-stackset \ --deployment-targets OrganizationalUnitIds=OU1,Accounts=A1,A2,AccountFilterType=DIFFERENCE \ --regions us-west-2 us-east-1
추가 계정 포함

다음 예에서는 OU1의 모든 계정과 다른 OU의 추가 계정 A4에 스택을 배포합니다.

aws cloudformation create-stack-instances --stack-set-name my-stackset \ --deployment-targets OrganizationalUnitIds=OU1,Accounts=A4,AccountFilterType=UNION \ --regions us-west-2 us-east-1