Control Tower를 활용하여 프로그래밍 방식으로 AWS Account 빠르게 생성하기
Control Tower를 사용하여 여러 계정을 빠르게 생성하는 방법을 확인합니다.
개요
많은 AWS 계정들이 필요하게 되어 계정 생성을 자동화하는 방안을 고민하였습니다.
Service Catalog의 Account Factory를 활용하여 Terraform, CloudFormation으로 Git 업로드시 자동화하는 방법도 있었으나 초기 설정하는 과정이 까다롭고 추가적인 비용이 발생하여 최대한 간단하게 실행할 수 있는 방안을 작성하였습니다.
- https://tech.cloud.nongshim.co.kr/blog/aws/2346/
- AFT Workshop
- https://aws.amazon.com/ko/blogs/mt/how-to-automate-the-creation-of-multiple-accounts-in-aws-control-tower/
Process
Identity Center를 활용하기 때문에 SSO 인증이 필요할 수 있습니다.
aws sso login --profile [profile]
export $(aws configure export-credentials --profile [profile]
계정 초기화를 설정합니다
MasterAcct=$(aws sts get-caller-identity --query 'Account' --output text)
AdminArn=”arn:aws:iam::${MasterAcct}:role/service-role/AWSControlTowerStackSetRole”
Service Catalog를 통해 portfolio 정보 가져옵니다.
pa_id=$(aws servicecatalog describe-product --id $prod_id --region ap-northeast-2 --query "ProvisioningArtifacts[-1].Id" --output text)
prod_id=$(aws servicecatalog search-products --filters FullTextSearch='AWS Control Tower Account Factory' --region ap-northeast-2 --query "ProductViewSummaries[*].ProductId" --output text)
사용할 카탈로그 및 param에서 데이터를 추출합니다.
export CatalogName=$(jq -r '.[4].Value' param.json)
export EmailId=$(jq -r '.[0].Value' param.json)
Service Catalog를 활용하여 provision-product를 수행합니다.
aws servicecatalog provision-product --product-id $prod_id --provisioning-artifact-id $pa_id --provisioned-product-name $CatalogName --provisioning-parameters file://param.json --region ap-northeast-2
Service Catalog를 통해 생성된 것을 확인할 수 있습니다.

주의점
계정 생성 요청은 병렬적으로 최대 5개까지만 수행될 수 있으며 삭제에는 최대 30분이 소요될 수 있습니다.

- https://docs.aws.amazon.com/ko_kr/controltower/latest/userguide/account-factory.html
- https://docs.aws.amazon.com/ko_kr/controltower/latest/userguide/provision-as-end-user.html