CloudFormation IaC 파일용 파라미터 필터 - AWS Proton

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

CloudFormation IaC 파일용 파라미터 필터

AWS CloudFormationIaC 파일의 AWS Proton매개 변수를 참조할 때 필터라고 하는 Jinja 수정자를 사용하여 렌더링된 템플릿에 삽입되기 전에 매개 변수 값을 검증, 필터링 및 형식 지정할 수 있습니다. 필터 유효성 검사는 구성 요소 출력 매개 변수를 참조할 때 특히 유용합니다. 구성 요소 생성 및 연결은 개발자가 수행하며 서비스 인스턴스 템플릿의 구성 요소 출력을 사용하는 관리자는 구성 요소 출력 매개 변수의 존재와 유효성을 확인하고자 할 수 있기 때문입니다. 그러나 모든 Jinja IaC 파일에서 필터를 사용할 수 있습니다.

다음 섹션에서는 사용 가능한 파라미터 필터를 설명 및 정의하고 예제를 제공합니다. AWS Proton이러한 필터의 대부분을 정의합니다. default필터는 Jinja 내장 필터입니다.

Amazon ECS 태스크에 대한 환경 속성의 형식 지정

선언

dict → proton_cfn_ecs_task_definition_formatted_env_vars (raw: boolean = True) → YAML list of dicts

설명

이 필터는 Amazon Elastic Container Service (Amazon ECS) 작업 정의ContainerDefinition 섹션에 있는 환경 속성에서 사용할 출력 목록의 형식을 지정합니다.

매개 변수 값도rawFalse 검증하려면 로 설정합니다. 이 경우 값은 정규 표현식과 일치해야^[a-zA-Z0-9_-]*$ 합니다. 값이 이 검증에 실패하면 템플릿 렌더링이 실패합니다.

다음 사용자 지정 구성 요소 템플릿을 사용하면

Resources: # ... Outputs: Output1: Description: "Example component output 1" Value: hello Output2: Description: "Example component output 2" Value: world

그리고 다음 서비스 템플릿은 다음과 같습니다.

Resources: TaskDefinition: Type: AWS::ECS::TaskDefinition Properties: # ... ContainerDefinitions: - Name: MyServiceName # ... Environment: {{ service_instance.components.default.outputs | proton_cfn_ecs_task_definition_formatted_env_vars }}

렌더링된 서비스 템플릿은 다음과 같습니다.

Resources: TaskDefinition: Type: AWS::ECS::TaskDefinition Properties: # ... ContainerDefinitions: - Name: MyServiceName # ... Environment: - Name: Output1 Value: hello - Name: Output2 Value: world

Lambda 함수의 서식 환경 속성

선언

dict → proton_cfn_lambda_function_formatted_env_vars (raw: boolean = True) → YAML dict

설명

이 필터는AWS Lambda 함수 정의Properties 섹션의 Environment 속성에서 사용할 출력 목록의 형식을 지정합니다.

매개 변수 값도rawFalse 검증하려면 로 설정합니다. 이 경우 값은 정규 표현식과 일치해야^[a-zA-Z0-9_-]*$ 합니다. 값이 이 검증에 실패하면 템플릿 렌더링이 실패합니다.

다음 사용자 지정 구성 요소 템플릿을 사용하면

Resources: # ... Outputs: Output1: Description: "Example component output 1" Value: hello Output2: Description: "Example component output 2" Value: world

그리고 다음 서비스 템플릿은 다음과 같습니다.

Resources: Lambda: Type: AWS::Lambda::Function Properties: Environment: Variables: {{ service_instance.components.default.outputs | proton_cfn_lambda_function_formatted_env_vars }}

렌더링된 서비스 템플릿은 다음과 같습니다.

Resources: Lambda: Type: AWS::Lambda::Function Properties: Environment: Variables: Output1: hello Output2: world

IAM 역할에 포함할 IAM 정책 ARN 추출

선언

dict → proton_cfn_iam_policy_arns → YAML list

설명

이 필터는AWS Identity and Access Management (IAM) 역할 정의Properties 섹션의 ManagedPolicyArns 속성에 사용할 출력 목록의 형식을 지정합니다. 필터는 정규 표현식을^arn:[a-zA-Z-]+:iam::\d{12}:policy/ 사용하여 출력 파라미터 목록에서 유효한 IAM 정책 ARN을 추출합니다. 이 필터를 사용하여 출력 파라미터 값의 정책을 서비스 템플릿의 IAM 역할 정의에 추가할 수 있습니다.

다음 사용자 지정 구성 요소 템플릿을 사용하면

Resources: # ... ExamplePolicy1: Type: AWS::IAM::ManagedPolicy Properties: # ... ExamplePolicy2: Type: AWS::IAM::ManagedPolicy Properties: # ... # ... Outputs: Output1: Description: "Example component output 1" Value: hello Output2: Description: "Example component output 2" Value: world PolicyArn1: Description: "ARN of policy 1" Value: !Ref ExamplePolicy1 PolicyArn2: Description: "ARN of policy 2" Value: !Ref ExamplePolicy2

그리고 다음 서비스 템플릿은 다음과 같습니다.

Resources: # ... 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: # ...

렌더링된 서비스 템플릿은 다음과 같습니다.

Resources: # ... TaskRole: Type: AWS::IAM::Role Properties: # ... ManagedPolicyArns: - !Ref BaseTaskRoleManagedPolicy - arn:aws:iam::123456789012:policy/cfn-generated-policy-name-1 - arn:aws:iam::123456789012:policy/cfn-generated-policy-name-2 # Basic permissions for the task BaseTaskRoleManagedPolicy: Type: AWS::IAM::ManagedPolicy Properties: # ...

재산 가치 삭제

선언

string → proton_cfn_sanitize → string

설명

범용 필터입니다. 이를 사용하여 매개변수 값의 안전성을 검증할 수 있습니다. 필터는 값이 정규 표현식과 일치하는지^[a-zA-Z0-9_-]*$ 또는 유효한 Amazon 리소스 이름 (ARN) 인지 확인합니다. 값이 이 검증에 실패하면 템플릿 렌더링이 실패합니다.

다음 사용자 지정 구성 요소 템플릿을 사용하면

Resources: # ... Outputs: Output1: Description: "Example of valid output" Value: "This-is_valid_37" Output2: Description: "Example incorrect output" Value: "this::is::incorrect" SomeArn: Description: "Example ARN" Value: arn:aws:some-service::123456789012:some-resource/resource-name
  • 서비스 템플릿의 다음 참조:

    # ... {{ service_instance.components.default.outputs.Output1 | proton_cfn_sanitize }}

    다음과 같이 렌더링합니다.

    # ... This-is_valid_37
  • 서비스 템플릿의 다음 참조:

    # ... {{ service_instance.components.default.outputs.Output2 | proton_cfn_sanitize }}

    다음과 같은 렌더링 오류가 발생한 결과:

    Illegal character(s) detected in "this::is::incorrect". Must match regex ^[a-zA-Z0-9_-]*$ or be a valid ARN
  • 서비스 템플릿의 다음 참조:

    # ... {{ service_instance.components.default.outputs.SomeArn | proton_cfn_sanitize }}

    다음과 같이 렌더링합니다.

    # ... arn:aws:some-service::123456789012:some-resource/resource-name

존재하지 않는 참조에 대한 기본값 제공

설명

default필터는 네임스페이스 참조가 없을 때 기본값을 제공합니다. 참조하는 매개 변수가 누락된 경우에도 오류 없이 렌더링할 수 있는 강력한 템플릿을 작성하는 데 사용하십시오.

서비스 템플릿의 다음 참조로 인해 서비스 인스턴스에 직접 정의된 (기본) 구성 요소가 첨부되지 않았거나 연결된 구성 요소에 이름이 지정된 출력이 없는 경우 템플릿 렌더링이test 실패합니다.

# ... {{ service_instance.components.default.outputs.test }}

이 문제를 방지하려면default 필터를 추가하세요.

# ... {{ service_instance.components.default.outputs.test | default("[optional-value]") }}