구성 요소 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, service_instance.name, 등의 이름을 참조하여 AWS Proton 리소스 파라미터를 읽습니다environment.name.

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

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

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

예 서비스 인스턴스 CloudFormation 렌더링 IaC 파일
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: # ...