

지원 종료 알림: 2026년 10월 7일에 AWS 에 대한 지원이 종료됩니다 AWS Proton. 2026년 10월 7일 이후에는 AWS Proton 콘솔 또는 AWS Proton 리소스에 더 이상 액세스할 수 없습니다. 배포된 인프라는 그대로 유지됩니다. 자세한 내용은 [AWS Proton 서비스 사용 중단 및 마이그레이션 안내서](https://docs.aws.amazon.com/proton/latest/userguide/proton-end-of-support.html)를 참조하세요.

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

# CloudFormation IaC 파일용 파라미터 필터
<a name="parameter-filters"></a>

 AWS CloudFormation IaC 파일의 [AWS Proton 파라미터를](parameters.md) 참조할 때 *필터*라고 하는 Jinja 한정자를 사용하여 파라미터 값을 렌더링된 템플릿에 삽입하기 전에 검증, 필터링 및 형식을 지정할 수 있습니다. 구성 요소 생성 및 첨부는 개발자가 수행하므로 서비스 인스턴스 템플릿에서 [구성 요소](ag-components.md) 출력을 사용하는 관리자는 구성 요소 출력 파라미터의 존재 여부와 유효성을 확인하고자 할 수 있으므로 필터 검증은 구성 요소 출력 파라미터를 참조할 때 특히 유용합니다. 하지만 Jinja IaC 파일에서는 필터를 사용할 수 있습니다.

다음 섹션에서는 사용 가능한 파라미터 필터를 설명하고 정의하며 example. AWS Proton defines를 제공합니다. `default`은 Jinja 내장 필터입니다.

## ECS 작업의 환경 속성 형식 지정
<a name="parameter-filters.proton.cfn-ecs"></a>

**선언**

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

**설명**

이 필터는 Elastic Container Service(ECS) 태스크 정의 `ContainerDefinition`섹션의 [환경 속성](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions.html#cfn-ecs-taskdefinition-containerdefinition-environment)에 사용될 출력 목록의 형식을 지정합니다.

`raw`을 `False`로 설정하여 파라미터 값의 유효성도 확인합니다. 이 경우 값은 정규 표현식 `^[a-zA-Z0-9_-]*$`과 일치해야 합니다. 값이 이 검증에 실패하면 템플릿 렌더링이 실패합니다.

### 예제
<a name="parameter-filters.proton.cfn-ecs.example"></a>

다음과 같은 사용자 지정 구성 요소 템플릿 사용:

```
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 함수의 환경 속성 형식 지정
<a name="parameter-filters.proton.cfn-lambda"></a>

**선언**

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

**설명**

이 필터는 AWS Lambda 함수 정의의 `Properties` 섹션에 있는 [환경 속성](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html#cfn-lambda-function-environment)에서 사용할 출력 목록의 형식을 지정합니다.

`raw`을 `False`로 설정하여 파라미터 값의 유효성도 확인합니다. 이 경우 값은 정규 표현식 `^[a-zA-Z0-9_-]*$`과 일치해야 합니다. 값이 이 검증에 실패하면 템플릿 렌더링이 실패합니다.

### 예제
<a name="parameter-filters.proton.cfn-lambda.example"></a>

다음과 같은 사용자 지정 구성 요소 템플릿 사용:

```
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 정책 ARN을 추출하여 IAM 역할에 포함시킵니다.
<a name="parameter-filters.proton.cfn-policy-arns"></a>

**선언**

```
dict → proton_cfn_iam_policy_arns → YAML list
```

**설명**

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

### 예제
<a name="parameter-filters.proton.cfn-policy-arns.example"></a>

다음과 같은 사용자 지정 구성 요소 템플릿 사용:

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

## 속성 값 삭제
<a name="parameter-filters.proton.cfn-sanitize"></a>

**선언**

```
string → proton_cfn_sanitize → string
```

**설명**

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

### 예제
<a name="parameter-filters.proton.cfn-sanitize.example"></a>

다음과 같은 사용자 지정 구성 요소 템플릿 사용:

```
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}}
  ```

## 존재하지 않는 참조에 대한 기본값 제공
<a name="parameter-filters.proton.default"></a>

**설명**

`default` 필터는 네임스페이스 참조가 없는 경우 기본값을 제공합니다. 이를 사용하여 참조하는 파라미터가 누락된 경우에도 오류 없이 렌더링할 수 있는 강력한 템플릿을 작성할 수 있습니다.

### 예제
<a name="parameter-filters.default.example"></a>

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

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

이 문제를 방지하려면 `default` 필터를 추가합니다.

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