기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
CloudFormation IaC 파일용 파라미터 필터
AWS CloudFormation IaC 파일의 AWS Proton 파라미터를 참조할 때 필터라고 하는 Jinja 한정자를 사용하여 파라미터 값을 렌더링된 템플릿에 삽입하기 전에 검증, 필터링 및 형식을 지정할 수 있습니다. 구성 요소 생성 및 첨부는 개발자가 수행하므로 서비스 인스턴스 템플릿에서 구성 요소 출력을 사용하는 관리자는 구성 요소 출력 파라미터의 존재 여부와 유효성을 확인하고자 할 수 있으므로 필터 검증은 구성 요소 출력 파라미터를 참조할 때 특히 유용합니다. 하지만 Jinja IaC 파일에서는 필터를 사용할 수 있습니다.
다음 섹션에서는 사용 가능한 파라미터 필터를 설명하고 정의하며 example. AWS Proton defines를 제공합니다. default은 Jinja 내장 필터입니다.
ECS 작업의 환경 속성 형식 지정
선언
dict → proton_cfn_ecs_task_definition_formatted_env_vars (raw: boolean = True) → YAML list of dicts설명
이 필터는 Elastic Container Service(ECS) 태스크 정의 ContainerDefinition섹션의 환경 속성에 사용될 출력 목록의 형식을 지정합니다.
raw을 False로 설정하여 파라미터 값의 유효성도 확인합니다. 이 경우 값은 정규 표현식 ^[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: worldLambda 함수의 환경 속성 형식 지정
선언
dict → proton_cfn_lambda_function_formatted_env_vars (raw: boolean = True) → YAML dict설명
이 필터는 AWS Lambda 함수 정의의 Properties 섹션에 있는 환경 속성에서 사용할 출력 목록의 형식을 지정합니다.
raw을 False로 설정하여 파라미터 값의 유효성도 확인합니다. 이 경우 값은 정규 표현식 ^[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: worldIAM 정책 ARN을 추출하여 IAM 역할에 포함시킵니다.
선언
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_-]*$과 일치하는지 또는 유효한 리소스 이름(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]") }}