구성 요소 CloudFormation IAC 파일 매개 변수 세부 정보 및 예 - AWS Proton

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

구성 요소 CloudFormation IAC 파일 매개 변수 세부 정보 및 예

구성요소 코드형 인프라(IaC) 파일에서 파라미터를 정의하고 참조할 수 있습니다. 파라미터, 파라미터 유형, AWS Proton 파라미터 네임스페이스, IaC 파일의 파라미터 사용 방법에 대한 자세한 설명은 을 참조하십시오. AWS Proton 파라미터 구성 요소에 대한 자세한 내용은 AWS Proton 구성 요소를 참조하세요.

구성 요소 출력 파라미터를 정의합니다.

구성 요소 IaC 파일에서 출력 파라미터를 정의할 수 있습니다. 다른 리소스의 서비스 IaC 파일에서 이러한 출력을 참조할 수 있습니다.

참고

구성 요소 IaC 파일의 입력은 정의할 수 없습니다. 연결된 구성 요소는 연결된 서비스 인스턴스에서 입력을 가져올 수 있습니다. 분리된 구성 요소에는 입력이 없습니다.

구성 요소 IaC 파일에서 파라미터 값 읽기

구성 요소와 관련된 파라미터 및 구성 요소 IaC 파일에서 다른 리소스를 읽을 수 있습니다. 파라미터 네임스페이스에서 파라미터 이름을 참조하여 파라미터 값을 읽습니다. AWS Proton

  • 입력 파라미터 - service_instance.inputs.input-name를 참조하여 첨부된 서비스 인스턴스 입력 값을 읽습니다.

  • 리소스 파라미터 -component.name,,, service.name 등의 이름을 참조하여 AWS Proton 리소스 파라미터를 읽습니다. service_instance.name environment.name

  • 출력 파라미터 - environment.outputs.output-name 참조를 통해 환경 출력을 읽습니다.

파라미터가 포함된 구성 요소 및 서비스 IaC 파일 예시

다음 예에서는 Amazon Simple Storage Service(S3) 버킷과 관련 액세스 정책을 프로비저닝하고 두 리소스의 Amazon 리소스 이름(ARN) 을 구성 요소 출력으로 노출하는 구성 요소를 보여줍니다. 서비스 IaC 템플릿은 구성 요소 출력을 Amazon Elastic Container Service(Amazon ECS) 작업의 컨테이너 환경 변수로 추가하여 컨테이너에서 실행 중인 코드에서 출력을 사용할 수 있도록 하고, 작업 역할에 버킷 액세스 정책을 추가합니다. 버킷 이름은 환경, 서비스, 서비스 인스턴스 및 구성 요소의 이름을 기반으로 합니다. 즉, 버킷은 특정 서비스 인스턴스를 확장하는 구성 요소 템플릿의 특정 인스턴스와 결합됩니다. 개발자는 이 구성 요소 템플릿을 기반으로 여러 사용자 지정 구성 요소를 생성하여 다양한 서비스 인스턴스 및 기능 요구 사항에 맞게 Amazon S3 버킷을 프로비저닝할 수 있습니다.

이 예제는 Jinja {{ ... }} 구문을 사용하여 서비스 IaC 파일의 구성 요소 및 기타 리소스 파라미터를 참조하는 방법을 보여줍니다. 구성 요소가 서비스 인스턴스에 연결된 경우에만 {% if ... %} 명령문을 사용하여 명령문 블록을 추가할 수 있습니다. proton_cfn_* 키워드는 출력 파라미터 값을 삭제하고 형식을 지정하는 데 사용할 수 있는 필터입니다. 필터에 대한 자세한 내용은 CloudFormation IaC 파일용 파라미터 필터 단원을 참조하세요.

관리자는 서비스 IaC 템플릿 파일을 작성합니다.

예 구성 요소를 사용한 서비스 CloudFormation IaC 파일
# service/instance_infrastructure/cloudformation.yaml Resources: TaskDefinition: Type: AWS::ECS::TaskDefinition Properties: TaskRoleArn: !Ref TaskRole ContainerDefinitions: - Name: '{{service_instance.name}}' # ... {% if service_instance.components.default.outputs | length > 0 %} Environment: {{ service_instance.components.default.outputs | proton_cfn_ecs_task_definition_formatted_env_vars }} {% endif %} # ... TaskRole: Type: AWS::IAM::Role Properties: # ... ManagedPolicyArns: - !Ref BaseTaskRoleManagedPolicy {{ service_instance.components.default.outputs | proton_cfn_iam_policy_arns }} # Basic permissions for the task BaseTaskRoleManagedPolicy: Type: AWS::IAM::ManagedPolicy Properties: # ...

개발자는 구성 요소 IaC 템플릿 파일을 작성합니다.

예 구성 요소 CloudFormation IAc 파일
# cloudformation.yaml # A component that defines an S3 bucket and a policy for accessing the bucket. Resources: S3Bucket: Type: 'AWS::S3::Bucket' Properties: BucketName: '{{environment.name}}-{{service.name}}-{{service_instance.name}}-{{component.name}}' S3BucketAccessPolicy: Type: AWS::IAM::ManagedPolicy Properties: PolicyDocument: Version: "2012-10-17" Statement: - Effect: Allow Action: - 's3:Get*' - 's3:List*' - 's3:PutObject' Resource: !GetAtt S3Bucket.Arn Outputs: BucketName: Description: "Bucket to access" Value: !GetAtt S3Bucket.Arn BucketAccessPolicyArn: Value: !Ref S3BucketAccessPolicy

서비스 인스턴스용 AWS CloudFormation 템플릿을 AWS Proton 렌더링하고 모든 매개변수를 실제 값으로 바꾸는 경우 템플릿은 다음 파일과 같을 수 있습니다.

예 서비스 인스턴스가 IaC 파일을 CloudFormation 렌더링했습니다.
Resources: TaskDefinition: Type: AWS::ECS::TaskDefinition Properties: TaskRoleArn: !Ref TaskRole ContainerDefinitions: - Name: '{{service_instance.name}}' # ... Environment: - Name: BucketName Value: arn:aws:s3:us-east-1:123456789012:environment_name-service_name-service_instance_name-component_name - Name: BucketAccessPolicyArn Value: arn:aws:iam::123456789012:policy/cfn-generated-policy-name # ... TaskRole: Type: AWS::IAM::Role Properties: # ... ManagedPolicyArns: - !Ref BaseTaskRoleManagedPolicy - arn:aws:iam::123456789012:policy/cfn-generated-policy-name # Basic permissions for the task BaseTaskRoleManagedPolicy: Type: AWS::IAM::ManagedPolicy Properties: # ...