

Aviso de fin del soporte: el 7 de octubre de 2026 AWS finalizará el soporte para AWS Proton. Después del 7 de octubre de 2026, ya no podrás acceder a la AWS Proton consola ni a AWS Proton los recursos. La infraestructura implementada permanecerá intacta. Para obtener más información, consulte la [Guía AWS Proton de obsolescencia y migración del servicio](https://docs.aws.amazon.com/proton/latest/userguide/proton-end-of-support.html).

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

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

Al hacer referencia a [AWS Proton los parámetros](parameters.md) de los archivos AWS CloudFormation IaC, puede utilizar los modificadores de Jinja, conocidos como *filtros*, para validar, filtrar y formatear los valores de los parámetros antes de insertarlos en la plantilla renderizada. Las validaciones de filtros son especialmente útiles cuando se hace referencia a los parámetros de salida de los [componentes](ag-components.md), ya que los desarrolladores se encargan de crear y conectar los componentes, y un administrador que utilice las salidas de los componentes en una plantilla de instancia de servicio podría querer comprobar su existencia y validez. Sin embargo, puede utilizar filtros en cualquier archivo IaC de Jinja.

En las siguientes secciones se describen y definen los filtros de parámetros disponibles y se proporcionan ejemplos. AWS Proton define la mayoría de estos filtros. El `default` filtro es un filtro integrado por Jinja.

## Propiedades del entorno de formato para las tareas de Amazon ECS
<a name="parameter-filters.proton.cfn-ecs"></a>

**Declaración**

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

**Descripción**

Este filtro da formato a una lista de salidas que se van a utilizar en una [propiedad del entorno](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions.html#cfn-ecs-taskdefinition-containerdefinition-environment) en la `ContainerDefinition` sección de una definición de tarea de Amazon Elastic Container Service (Amazon ECS).

`raw``False`Configúrelo para validar también el valor del parámetro. En este caso, el valor debe coincidir con la expresión regular`^[a-zA-Z0-9_-]*$`. Si el valor no pasa esta validación, se produce un error en la representación de la plantilla.

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

Con la siguiente plantilla de componentes personalizados:

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

Y la siguiente plantilla de servicio:

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

La plantilla de servicio renderizada es la siguiente:

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

## Propiedades del entorno de formato para funciones Lambda
<a name="parameter-filters.proton.cfn-lambda"></a>

**Declaración**

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

**Descripción**

Este filtro formatea una lista de salidas que se utilizarán en una [propiedad de entorno](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html#cfn-lambda-function-environment) en la `Properties` sección de la definición de una AWS Lambda función.

`raw``False`Configúrelo en para validar también el valor del parámetro. En este caso, el valor debe coincidir con la expresión regular`^[a-zA-Z0-9_-]*$`. Si el valor no pasa esta validación, se produce un error en la representación de la plantilla.

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

Con la siguiente plantilla de componentes personalizados:

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

Y la siguiente plantilla de servicio:

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

La plantilla de servicio renderizada es la siguiente:

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

## Extraiga la política de IAM ARNs para incluirla en las funciones de IAM
<a name="parameter-filters.proton.cfn-policy-arns"></a>

**Declaración**

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

**Descripción**

Este filtro formatea una lista de resultados que se van a utilizar en una [ManagedPolicyArns propiedad](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html#cfn-iam-role-managepolicyarns) en la `Properties` sección de una definición de rol AWS Identity and Access Management (IAM). El filtro utiliza la expresión regular `^arn:[a-zA-Z-]+:iam::\d{12}:policy/` para extraer una política de IAM válida ARNs de la lista de parámetros de salida. Puede utilizar este filtro para añadir políticas en los valores de los parámetros de salida a una definición de rol de IAM en una plantilla de servicio.

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

Con la siguiente plantilla de componentes personalizados:

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

Y la siguiente plantilla de servicio:

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

La plantilla de servicio renderizada es la siguiente:

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

## Desinfecte los valores de las propiedades
<a name="parameter-filters.proton.cfn-sanitize"></a>

**Declaración**

```
string → proton_cfn_sanitize → string
```

**Descripción**

Se trata de un filtro de uso general. Utilícelo para validar la seguridad del valor de un parámetro. El filtro valida que el valor coincide con la expresión regular `^[a-zA-Z0-9_-]*$` o que es un nombre de recurso de Amazon (ARN) válido. Si el valor no pasa esta validación, se produce un error en la representación de la plantilla.

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

Con la siguiente plantilla de componentes personalizados:

```
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}}
```
+ La siguiente referencia en una plantilla de servicio:

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

  Se representa de la siguiente manera:

  ```
  # ...
    This-is_valid_37
  ```
+ La siguiente referencia en una plantilla de servicio:

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

  Resultados con el siguiente error de representación:

  ```
  Illegal character(s) detected in "this::is::incorrect". Must match regex ^[a-zA-Z0-9_-]*$ or be a valid ARN
  ```
+ La siguiente referencia en una plantilla de servicio:

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

  Se representa de la siguiente manera:

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

## Provisión de valores predeterminados para referencias inexistentes
<a name="parameter-filters.proton.default"></a>

**Descripción**

El `default` filtro proporciona un valor predeterminado cuando no existe una referencia a un espacio de nombres. Úselo para escribir plantillas sólidas que puedan renderizarse sin errores incluso cuando falte el parámetro al que hace referencia.

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

La siguiente referencia en una plantilla de servicio provoca un error en la representación de la plantilla si la instancia de servicio no tiene un componente adjunto definido directamente (predeterminado) o si el componente adjunto no tiene un nombre de salida`test`.

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

Para evitar este problema, agrega el `default` filtro.

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