기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Enterprise Blueprint Factory 사용
이 섹션에서는 환경에서 블루프린트를 생성, 업데이트 또는 삭제하는 데 도움이 됩니다. 수명 주기 동안 블루프린트를 관리하기 위한 자세한 지침을 제공합니다.
사용자 지정 블루프린트를 생성하거나 업데이트하려면 AWS CloudFormation 템플릿 또는 AWS Cloud Development Kit (AWS CDK) 구문과 같은 IaC 템플릿을 생성하는 방법을 이해해야 합니다. 이 가이드에는 Enterprise Blueprint Factory를 통해 릴리스하는 블루프린트를 정의하는 방법에 대한 정보나 지침은 포함되어 있지 않습니다.
사전 조건
다음은 AWS 환경에서 Enterprise Blueprint Factory를 사용하기 위한 사전 조건입니다.
블루프린트 생성
Enterprise Blueprint Factory 파이프라인은 구성 파일에서 정의한 블루프린트를 배포합니다. 개발자는 구성 파일을 구성 리포지토리에 병합하여 구성 파이프라인을 시작합니다. 그런 다음 Enterprise Blueprint Factory는 ServiceCatalogLaunchConstraintRole를 사용하여 블루프린트를 Service Catalog의 제품으로 배포합니다. 블루프린트를 생성할 때 구성 파이프라인 및 릴리스 파이프라인이 수행하는 작업에 대한 자세한 내용은이 가이드의 블루프린트 생성을 참조하세요.
블루프린트를 제품 리포지토리에 추가하려면
-
이 설명서의 Enterprise Blueprint Factory 설정의 지침에 따라 Enterprise Blueprint Factory를 설정했는지 확인합니다.
-
ServiceCataloglogLaunchConstraintRole역할에 대한 정책이 블루프린트에 정의된 리소스를 프로비저닝할 수 있도록 허용하는지 확인합니다. -
제품 리포지토리(
ServiceCatalog-BlueprintProductRepo)에서 새 블루프린트에 대한 폴더를 생성합니다. -
IaC 템플릿(CloudFormation 템플릿 또는 AWS CDK 구문)을 생성한 폴더에 붙여 넣습니다.
-
생성한 폴더에 product_config.json이라는 파일을 생성합니다.
-
product_config.json 파일을 열고 다음 파일을 파일에 붙여 넣습니다.
{ "SchemaVersion": "1.0", "ProductVersionName": "1.0.1", "Deprecated_Versions" : [], "ProductVersionDescription": "<description>", "ProductType": "CLOUD_FORMATION_TEMPLATE", "Properties": { "TemplateFilePath": "./<folder name>/<file name>" } }위치:
-
<description>는 블루프린트 버전에 대한 간략한 설명입니다. -
<folder name>는 제품 리포지토리에서 생성한 폴더의 이름입니다. -
<file name>는 IaC 템플릿의 이름입니다.
참고
조직의 정책에 맞게 스키마 버전 또는 제품 버전 이름을 업데이트할 수 있습니다.
-
-
product_config.json 파일을 저장하고 닫습니다.
-
다음 명령을 입력하여 변경 사항을 제품 리포지토리에 병합합니다.
cd ServiceCatalog-BlueprintProductRepo git add <folder name>/<file name> <folder name>\product_config.json git commit -m "The first version of <file name> blueprint" git push origin main
구성 파일을 업데이트하려면
-
구성 리포지토리(
ServiceCatalog-ConfigRepo)에서 config.yml 파일을 엽니다. -
새 블루프린트에 필요한 대로
portfolios섹션 및products섹션을 편집합니다. 자세한 내용은이 가이드의 구성 파일을 참조하세요. -
config.yml 파일을 저장하고 닫습니다.
-
다음 명령을 입력하여 변경 사항을 구성 리포지토리에 병합합니다.
cd ServiceCatalog-ConfigRepo git add config.yml git commit -m "<description of change>" git push origin main이 풀 요청을 승인하면 구성 파이프라인이 시작됩니다. 구성 파이프라인은 제품에 대한 릴리스 파이프라인을 생성합니다.
배포 로그를 검토하려면
-
Enterprise Blueprint Factory 관리 계정에 로그인합니다.
-
AWS CodePipeline 콘솔
을 엽니다. -
이름에서 제품의 릴리스 파이프라인을 선택합니다. 기본적으로 파이프라인 이름은 입니다
BluePrint_<Product-Name>-<CloudFormation-Stack-Name>. -
내역 보기를 선택합니다.
-
파이프라인 및 단계 실행의 상태를 봅니다. 상태에 대한 자세한 내용은 CodePipeline 설명서의 실행 상태 보기를 참조하세요.
-
파이프라인이 실패하면 실패 원인을 검토합니다. 파이프라인에 대한 모니터링을 구성하는 방법에 대한 지침은 CodePipeline 설명서의 파이프라인 모니터링을 참조하세요. cfn-lint 또는 cfn_nag 검사로 인해 릴리스 파이프라인이 실패한 경우 템플릿의 오류를 수정합니다. 제품 리포지토리에 또 다른 풀 요청을 제출합니다. 이렇게 하면 릴리스 파이프라인이 다시 시작됩니다. 템플릿 오류 수정에 대한 자세한 내용은이 가이드의 문제 해결 섹션을 참조하세요.
-
릴리스 파이프라인 상태가가 될 때까지 기다립니다
Succeeded.
배포를 검증하려면
-
조직의 소비자 계정에 로그인합니다.
-
ServiceCatalogEndUserRoleIAM 역할을 수임합니다. -
Service Catalog 콘솔
을 엽니다. -
탐색 창에서 제품을 선택합니다.
-
제품 목록에서 새 제품을 사용할 수 있는지 확인합니다.
블루프린트 업데이트
블루프린트를 생성할 때 구성 파이프라인 및 릴리스 파이프라인이 수행하는 작업에 대한 자세한 내용은이 가이드의 블루프린트 업데이트를 참조하세요.
블루프린트를 업데이트하려면
-
제품 리포지토리에서 제품의 폴더로 이동합니다.
-
업데이트된 IaC 템플릿을 붙여넣습니다. 파일 이름이 이전 버전과 동일한지 확인합니다.
-
product_config.json 파일을 엽니다.
-
의 경우 버전 번호를
ProductVersionName업데이트합니다. -
향후 이전 제품 버전이 배포되지 않도록 하려면에 대해 쉼표로 구분된 목록에 이전 버전 번호를
Deprecated_Versions입력합니다. -
다음 명령을 입력하여 변경 사항을 제품 리포지토리에 병합합니다.
cd ServiceCatalog-BlueprintProductRepo git add <folder name>/<file name> <folder name>\product_config.json git commit -m "Version <number> of <file name> blueprint" git push origin main이 풀 요청을 승인하면 제품의 릴리스 파이프라인이 시작됩니다.
배포 로그를 검토하려면
-
Enterprise Blueprint Factory 관리 계정에 로그인합니다.
-
AWS CodePipeline 콘솔
을 엽니다. -
이름에서 릴리스 파이프라인을 선택합니다. 기본적으로 파이프라인 이름은 입니다
BluePrint_<Product-Name>-<CloudFormation-Stack-Name>. -
내역 보기를 선택합니다.
-
파이프라인 및 단계 실행의 상태를 봅니다. 상태에 대한 자세한 내용은 CodePipeline 설명서의 실행 상태 보기를 참조하세요.
-
파이프라인이 실패하면 실패 원인을 검토합니다. 파이프라인에 대한 모니터링을 구성하는 방법에 대한 지침은 CodePipeline 설명서의 파이프라인 모니터링을 참조하세요. cfn-lint 또는 cfn_nag 검사로 인해 릴리스 파이프라인이 실패한 경우 템플릿의 오류를 수정합니다. 제품 리포지토리에 또 다른 풀 요청을 제출합니다. 이렇게 하면 릴리스 파이프라인이 다시 시작됩니다. 템플릿 오류 수정에 대한 자세한 내용은이 가이드의 문제 해결 섹션을 참조하세요.
-
릴리스 파이프라인 상태가가 될 때까지 기다립니다
Succeeded.
업데이트를 검증하려면
-
조직의 소비자 계정에 로그인합니다.
-
ServiceCatalogEndUserRoleIAM 역할을 수임합니다. -
Service Catalog 콘솔
을 엽니다. -
탐색 창에서 제품을 선택합니다.
-
제품 목록에서 새 제품 버전을 사용할 수 있는지 확인합니다.
블루프린트 삭제
제품을 삭제하면 Service Catalog는 제품이 포함된 모든 포트폴리오에서 모든 제품 버전을 제거합니다. 자세한 내용은 Service Catalog 설명서의 제품 삭제를 참조하세요. 블루프린트를 생성할 때 구성 파이프라인 및 릴리스 파이프라인이 수행하는 작업에 대한 자세한 내용은이 가이드의 블루프린트 삭제를 참조하세요.
블루프린트를 삭제하려면
-
구성 리포지토리에서 config.yml 파일을 엽니다.
-
제품 섹션을 편집하고 삭제하려는 제품을 제거하거나 주석 처리합니다.
-
config.yml 파일을 저장하고 닫습니다.
-
다음 명령을 입력하여 변경 사항을 구성 리포지토리에 병합합니다.
cd ServiceCatalog-ConfigRepo git add config.yml git commit -m "<description of change>" git push origin main이 풀 요청을 승인하면 구성 파이프라인이 시작됩니다. 구성 파이프라인은 제품 및 릴리스 파이프라인을 삭제합니다.
-
제품 리포지토리에서 콘텐츠를 포함하여 제품의 폴더를 삭제합니다.
-
다음 명령을 입력하여 변경 사항을 제품 리포지토리에 병합합니다.
cd ServiceCatalog-BlueprintProductRepo git add . git commit -m "Delete <file name> blueprint" git push origin main
삭제를 검증하려면
-
조직의 소비자 계정에 로그인합니다.
-
ServiceCatalogEndUserRoleIAM 역할을 수임합니다. -
Service Catalog 콘솔
을 엽니다. -
탐색 창에서 제품을 선택합니다.
-
삭제된 제품을 더 이상 사용할 수 없는지 확인합니다.
문제 해결
블루프린트를 생성하거나 업데이트하면 cfn-lint 및 cfn-nag 도구가 블루프린트를 검증합니다. 릴리스 파이프라인의 검증에 대한 자세한 내용은이 가이드의 릴리스 파이프라인을 참조하세요. 보고된 구문 또는 보안 오류로 인해 파이프라인이 실패합니다. 릴리스 파이프라인을 통해 블루프린트를 성공적으로 배포하려면 블루프린트의 오류를 수정해야 합니다.
다음은 실패와 경고라는 두 가지 보안 관련 오류를 보여주는 출력의 예입니다.
BP-SNS.yml --------------------------------------------------- BP-SNS.yml --------------------------------------------------- | WARN W47 | | Resource: ["ExampleTopic"] | Line numbers: [5] | | SNS Topic should specify KmsMasterKeyId property --------------------------------------------------- | FAIL F18 | | Resource: ["ExampleTopicPolicy"] | Line numbers: [10] | | SNS topic policy should not allow * principal Failures count: 1 Warnings count: 1
이러한 오류를 수정하려면 블루프린트 파일에서 Amazon Simple Notification Service(Amazon SNS) 주제 정책의 * 보안 주체를 바꾸고 AWS Key Management Service (AWS KMS) 키를 주제와 연결합니다. 다음 코드 예제에서는 이러한 업데이트를 보여줍니다.
ExampleTopic: Type: AWS::SNS::Topic Properties: TopicName: ExampleTopic ExampleTopicPolicy: Type: AWS::SNS::TopicPolicy Properties: KmsMasterKeyId: alias/aws/sns # Added KMS key PolicyDocument: Id: Id1 Version: '2012-10-17' Statement: - Sid: Sid2 Effect: Allow Principal: "Service" : "s3.amazonaws.com" # Replaced "AWS": '*' Action: 'sns:Publish' Resource: !Ref ExampleTopic Topics: - !Ref ExampleTopic