

Aviso de fim do suporte: em 7 de outubro de 2026, AWS encerrará o suporte para AWS Proton. Depois de 7 de outubro de 2026, você não poderá mais acessar o AWS Proton console ou os AWS Proton recursos. Sua infraestrutura implantada permanecerá intacta. Para obter mais informações, consulte o Guia [AWS Proton de descontinuação e migração de serviços](https://docs.aws.amazon.com/proton/latest/userguide/proton-end-of-support.html).

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Filtros de parâmetros para arquivos CloudFormation IaC
<a name="parameter-filters"></a>

Ao fazer referências a [AWS Proton parâmetros](parameters.md) em seus arquivos AWS CloudFormation IaC, você pode usar modificadores Jinja conhecidos como *filtros* para validar, filtrar e formatar valores de parâmetros antes de serem inseridos no modelo renderizado. As validações de filtro são particularmente úteis quando se referem aos parâmetros de saída do [componente](ag-components.md), porque a criação e a anexação do componente são feitas pelos desenvolvedores, e um administrador que usa as saídas do componente em um modelo de instância de serviço pode querer verificar sua existência e validade. No entanto, você pode usar filtros em qualquer arquivo do Jinja IaC.

As seções a seguir descrevem e definem os filtros de parâmetros disponíveis e fornecem exemplos. AWS Proton define a maioria desses filtros. O filtro `default` é um filtro Jinja embutido.

## Propriedades do ambiente de formato para tarefas do Amazon ECS
<a name="parameter-filters.proton.cfn-ecs"></a>

**Declaração**

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

**Descrição**

Esse filtro formata uma lista de saídas a serem usadas em uma [propriedade de ambiente](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions.html#cfn-ecs-taskdefinition-containerdefinition-environment) na seção `ContainerDefinition` de definição de tarefa do Amazon Elastic Container Service (Amazon ECS).

Defina `raw` como `False` para também validar o valor do parâmetro. Nesse caso, o valor é necessário para corresponder à expressão regular `^[a-zA-Z0-9_-]*$`. Se o valor falhar nessa validação, a renderização do modelo falhará.

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

Com o seguinte modelo de componente personalizado:

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

E o seguinte modelo de serviço:

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

O modelo de serviço renderizado é o seguinte:

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

## Formatar propriedades do ambiente para funções do Lambda
<a name="parameter-filters.proton.cfn-lambda"></a>

**Declaração**

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

**Descrição**

Esse filtro formata uma lista de saídas a serem usadas em uma [propriedade Environment](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html#cfn-lambda-function-environment) na `Properties` seção de uma definição de AWS Lambda função.

Defina `raw` como `False` para também validar o valor do parâmetro. Nesse caso, o valor é necessário para corresponder à expressão regular `^[a-zA-Z0-9_-]*$`. Se o valor falhar nessa validação, a renderização do modelo falhará.

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

Com o seguinte modelo de componente personalizado:

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

E o seguinte modelo de serviço:

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

O modelo de serviço renderizado é o seguinte:

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

## Extraia ARNs a política do IAM para incluir nas funções do IAM
<a name="parameter-filters.proton.cfn-policy-arns"></a>

**Declaração**

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

**Descrição**

Esse filtro formata uma lista de saídas a serem usadas em uma [ManagedPolicyArns propriedade](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html#cfn-iam-role-managepolicyarns) na `Properties` seção de uma definição de função AWS Identity and Access Management (IAM). O filtro usa a expressão regular `^arn:[a-zA-Z-]+:iam::\d{12}:policy/` para extrair uma política do IAM válida ARNs da lista de parâmetros de saída. Você pode usar esse filtro para acrescentar políticas nos valores dos parâmetros de saída a uma definição de perfil do IAM em um modelo de serviço.

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

Com o seguinte modelo de componente personalizado:

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

E o seguinte modelo de serviço:

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

O modelo de serviço renderizado é o seguinte:

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

## Higienize os valores das propriedades
<a name="parameter-filters.proton.cfn-sanitize"></a>

**Declaração**

```
string → proton_cfn_sanitize → string
```

**Descrição**

Esse é um filtro de uso geral. Use-o para validar a segurança do valor de um parâmetro. O filtro valida se o valor corresponde à expressão regular `^[a-zA-Z0-9_-]*$` ou se é um nome do recurso da Amazon (ARN) válido. Se o valor falhar nessa validação, a renderização do modelo falhará.

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

Com o seguinte modelo de componente personalizado:

```
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
```
+ A seguinte referência em um modelo de serviço:

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

  Renderiza da seguinte forma:

  ```
  # ...
    This-is_valid_37
  ```
+ A seguinte referência em um modelo de serviço:

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

  Resultados com o seguinte erro de renderização:

  ```
  Illegal character(s) detected in "this::is::incorrect". Must match regex ^[a-zA-Z0-9_-]*$ or be a valid ARN
  ```
+ A seguinte referência em um modelo de serviço:

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

  Renderiza da seguinte forma:

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

## Fornecer valores padrão para referências inexistentes
<a name="parameter-filters.proton.default"></a>

**Descrição**

O filtro `default` fornece um valor padrão quando não existe uma referência de namespace. Use-o para escrever modelos robustos que possam ser renderizados sem falhas, mesmo quando o parâmetro ao qual você se refere estiver ausente.

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

A referência a seguir em um modelo de serviço faz com que a renderização do modelo falhe se a instância de serviço não tiver um componente anexado diretamente definido (padrão) ou se o componente anexado não tiver uma saída chamada `test`.

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

Para evitar esse problema, adicione o filtro `default`.

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