

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á.

# AWS Proton parâmetros
<a name="parameters"></a>

Você pode definir e usar parâmetros em seus arquivos de infraestrutura como código (IaC) para torná-los flexíveis e reutilizáveis. Você lê um valor de parâmetro em seus arquivos IaC fazendo referência ao nome do parâmetro no *namespace do AWS Proton parâmetro*. AWS Proton injeta valores de parâmetros nos arquivos IaC renderizados que ele gera durante o provisionamento de recursos. Para processar os parâmetros AWS CloudFormation do IaC, AWS Proton usa o [Jinja](https://jinja.palletsprojects.com/en/2.11.x/). Para processar os parâmetros do Terraform IaC, AWS Proton gera um arquivo de valor do parâmetro do Terraform e conta com a capacidade de parametrização incorporada ao HCL.

Com[CodeBuild aprovisionamento](ag-works-prov-methods.md#ag-works-prov-methods-codebuild), AWS Proton gera um arquivo de entrada que seu código pode importar. O arquivo é um arquivo JSON ou HCL, dependendo de uma propriedade no manifesto do seu modelo. Para obter mais informações, consulte [CodeBuild detalhes e exemplos de parâmetros de provisionamento](parameters-codebuild.md).

Você pode consultar os parâmetros em seus arquivos IaC de ambiente, serviço e componente ou código de provisionamento com os seguintes requisitos:
+ O tamanho de cada nome de parâmetro não excede 100 caracteres.
+ O tamanho do namespace do parâmetro e do nome do recurso combinados não excede o limite de caracteres para o nome do recurso.

AWS Proton o provisionamento falhará se essas cotas forem excedidas.

## Tipos de parâmetros
<a name="param-name-types"></a>

Os seguintes tipos de parâmetros estão disponíveis para referência nos arquivos AWS Proton IaC:

**Parâmetro de entrada**  
Ambientes e instâncias de serviço podem usar parâmetros de entrada que você define em um [arquivo de esquema](ag-schema.md) que você associa ao ambiente ou ao modelo de serviço. Você pode consultar os parâmetros de entrada de um recurso no arquivo IaC do recurso. Os arquivos IaC do componente podem se referir aos parâmetros de entrada da instância de serviço à qual o componente está anexado.  
AWS Proton verifica os nomes dos parâmetros de entrada em relação ao seu arquivo de esquema e os compara com os parâmetros referenciados nos seus arquivos IaC para injetar os valores de entrada que você fornece em um arquivo de especificação durante o provisionamento de recursos.

**Parâmetro de saída**  
Você pode definir saídas em qualquer um dos seus arquivos IaC. Uma saída pode ser, por exemplo, um nome, ID ou ARN de um dos recursos provisionados pelo modelo, ou pode ser uma forma de passar por uma das entradas do modelo. Você pode consultar essas saídas em arquivos IaC de outros recursos.  
Nos arquivos CloudFormation IaC, defina os parâmetros de saída no `Outputs:` bloco. Em um arquivo Terraform IaC, defina cada parâmetro de saída usando uma instrução de `output`.

**Parâmetro de recurso**  
AWS Proton cria automaticamente parâmetros AWS Proton de recursos. Esses parâmetros expõem as propriedades do objeto de AWS Proton recurso. Um exemplo de parâmetro de recurso é `environment.name`.

## Usando AWS Proton parâmetros em seus arquivos IaC
<a name="param-name-spaces"></a>

Para ler um valor de parâmetro em um arquivo IaC, você se refere ao nome do parâmetro no namespace do AWS Proton parâmetro. Para arquivos AWS CloudFormation IaC, você usa a sintaxe *Jinja* e delimita o parâmetro com pares de chaves e aspas.

A tabela a seguir mostra a sintaxe de referência para cada linguagem de modelo compatível, com um exemplo.


| Linguagem do modelo | Sintaxe | Exemplo: entrada de ambiente chamada “VPC” | 
| --- | --- | --- | 
|  CloudFormation  |  `"{{ parameter-name }}"`  |  `"{{ environment.inputs.VPC }}"`  | 
|  Terraform  |  `var.parameter-name`  |  `var.environment.inputs.VPC` [Definições de variáveis do Terraform geradas](ag-infrastructure-tmp-files-terraform.md#compiled-tform)  | 

**nota**  
Se você usar [parâmetros CloudFormation dinâmicos](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/dynamic-references.html) em seu arquivo IaC, deverá [evitá-los para evitar erros de](https://jinja.palletsprojects.com/en/2.11.x/templates/#escaping) interpretação errônea do Jinja. Para obter mais informações, consulte [Solução de problemas AWS Proton](ag-troubleshooting.md).

A tabela a seguir lista os nomes dos namespaces para todos os parâmetros do AWS Proton recurso. Cada tipo de arquivo de modelo pode usar um subconjunto diferente do namespace do parâmetro.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/proton/latest/userguide/parameters.html)

Para obter mais informações e exemplos, consulte os subtópicos sobre parâmetros nos arquivos de modelo de IaC para diferentes tipos de recursos e linguagens de modelo.

**Topics**
+ [Tipos de parâmetros](#param-name-types)
+ [Usando AWS Proton parâmetros em seus arquivos IaC](#param-name-spaces)
+ [Detalhes e CloudFormation exemplos de parâmetros do arquivo Environment IaC](env-parameters.md)
+ [Detalhes e exemplos de parâmetros do arquivo Service CloudFormation IaC](svc-parameters.md)
+ [Detalhes e exemplos de parâmetros do arquivo do componente CloudFormation IaC](comp-parameters.md)
+ [Filtros de parâmetros para arquivos CloudFormation IaC](parameter-filters.md)
+ [CodeBuild detalhes e exemplos de parâmetros de provisionamento](parameters-codebuild.md)
+ [Detalhes e exemplos de parâmetros de arquivo de infraestrutura como código (IaC) do Terraform](env-parameters-tform.md)

# Detalhes e CloudFormation exemplos de parâmetros do arquivo Environment IaC
<a name="env-parameters"></a>

Você pode definir e referenciar parâmetros em seus arquivos de ambiente de infraestrutura como código (IaC). Para obter uma descrição detalhada dos AWS Proton parâmetros, dos tipos de parâmetros, do namespace do parâmetro e de como usar os parâmetros em seus arquivos IaC, consulte. [AWS Proton parâmetros](parameters.md)

## Definir os parâmetros do ambiente
<a name="env-parameters.define"></a>

Você pode definir os parâmetros de entrada e saída para arquivos IaC do ambiente.
+ **Parâmetros de entrada**: Defina os parâmetros de entrada do ambiente em seu [arquivo de esquema](ag-schema.md).

  A lista a seguir inclui exemplos de parâmetros de entrada do ambiente para casos de uso típicos.
  + Valores CIDR de VPC
  + Configurações do load balancer
  + Configurações do banco de dados
  + Tempo limite de verificação de integridade

  Como administrador, você pode fornecer valores para os parâmetros de entrada ao [criar um ambiente](ag-create-env.md):
  + Use o console para preencher um formulário baseado em esquema que AWS Proton fornece.
  + Use a CLI para fornecer uma especificação que inclua os valores.
+ **Parâmetros de saída**: Defina as saídas do ambiente nos arquivos IaC do seu ambiente. Você pode então consultar essas saídas em arquivos IaC de outros recursos.

## Leia valores de parâmetros em arquivos IaC do ambiente
<a name="env-parameters.refer"></a>

Você pode ler os parâmetros relacionados ao ambiente nos arquivos IaC do ambiente. Você lê um valor de parâmetro referindo o nome do parâmetro no namespace do parâmetro do AWS Proton .
+ **Parâmetros de entrada**: Leia um valor de entrada do ambiente fazendo referência a `environment.inputs.input-name`.
+ **Parâmetros do recurso** — Leia os parâmetros do AWS Proton recurso fazendo referência a nomes como`environment.name`.

**nota**  
Nenhum parâmetro de saída de outros recursos está disponível para os arquivos IaC do ambiente.

## Exemplos de arquivos IaC de ambiente e serviço com parâmetros
<a name="env-parameters.example"></a>

O exemplo a seguir demonstra a definição e a referência de parâmetros em um arquivo IaC do ambiente. Em seguida, o exemplo mostra como os parâmetros de saída do ambiente definidos no arquivo IaC do ambiente podem ser referenciados em um arquivo IaC do serviço.

**Example Arquivo de ambiente CloudFormation IaC**  
Neste exemplo, observe o seguinte:  
+ O namespace `environment.inputs.` se refere aos parâmetros de entrada do ambiente.
+ O parâmetro Amazon EC2 Systems Manager (SSM) `StoreInputValue` concatena as entradas do ambiente.
+ A saída `MyEnvParameterValue` expõe a mesma concatenação de parâmetros de entrada que um parâmetro de saída. Três parâmetros de saída adicionais também expõem os parâmetros de entrada individualmente.
+ Seis parâmetros de saída adicionais expõem os recursos que o ambiente fornece.

```
Resources:
  StoreInputValue:
    Type: AWS::SSM::Parameter
    Properties:
      Type: String
      Value: "{{ environment.inputs.my_sample_input }} {{ environment.inputs.my_other_sample_input}} {{ environment.inputs.another_optional_input }}"
              # input parameter references

# These output values are available to service infrastructure as code files as outputs, when given the 
# the 'environment.outputs' namespace, for example, service_instance.environment.outputs.ClusterName.
Outputs:
  MyEnvParameterValue:                                        # output definition
    Value: !GetAtt StoreInputValue.Value
  MySampleInputValue:                                         # output definition
    Value: "{{ environment.inputs.my_sample_input }}"         #   input parameter reference
  MyOtherSampleInputValue:                                    # output definition
    Value: "{{ environment.inputs.my_other_sample_input }}"   #   input parameter reference
  AnotherOptionalInputValue:                                  # output definition
    Value: "{{ environment.inputs.another_optional_input }}"  #   input parameter reference
  ClusterName:                                                # output definition
    Description: The name of the ECS cluster
    Value: !Ref 'ECSCluster'                                  #   provisioned resource
  ECSTaskExecutionRole:                                       # output definition
    Description: The ARN of the ECS role
    Value: !GetAtt 'ECSTaskExecutionRole.Arn'                 #   provisioned resource
  VpcId:                                                      # output definition
    Description: The ID of the VPC that this stack is deployed in
    Value: !Ref 'VPC'                                         #   provisioned resource
  PublicSubnetOne:                                            # output definition
    Description: Public subnet one
    Value: !Ref 'PublicSubnetOne'                             #   provisioned resource
  PublicSubnetTwo:                                            # output definition
    Description: Public subnet two
    Value: !Ref 'PublicSubnetTwo'                             #   provisioned resource
  ContainerSecurityGroup:                                     # output definition
    Description: A security group used to allow Fargate containers to receive traffic
    Value: !Ref 'ContainerSecurityGroup'                      #   provisioned resource
```

**Example Arquivo Service CloudFormation IaC**  
O namespace `environment.outputs.` se refere às saídas do ambiente de um arquivo IaC do ambiente. Por exemplo, o nome `environment.outputs.ClusterName` lê o valor do parâmetro de saída do ambiente `ClusterName`.  

```
AWSTemplateFormatVersion: '2010-09-09'
Description: Deploy a service on AWS Fargate, hosted in a public subnet, and accessible via a public load balancer.
Mappings:
  TaskSize:
    x-small:
      cpu: 256
      memory: 512
    small:
      cpu: 512
      memory: 1024
    medium:
      cpu: 1024
      memory: 2048
    large:
      cpu: 2048
      memory: 4096
    x-large:
      cpu: 4096
      memory: 8192
Resources:
  # A log group for storing the stdout logs from this service's containers
  LogGroup:
    Type: AWS::Logs::LogGroup
    Properties:
      LogGroupName: '{{service_instance.name}}' # resource parameter

  # The task definition. This is a simple metadata description of what
  # container to run, and what resource requirements it has.
  TaskDefinition:
    Type: AWS::ECS::TaskDefinition
    Properties:
      Family: '{{service_instance.name}}' # resource parameter
      Cpu: !FindInMap [TaskSize, {{service_instance.inputs.task_size}}, cpu] # input parameter
      Memory: !FindInMap [TaskSize, {{service_instance.inputs.task_size}}, memory] 
      NetworkMode: awsvpc
      RequiresCompatibilities:
        - FARGATE
      ExecutionRoleArn: '{{environment.outputs.ECSTaskExecutionRole}}'  # output reference to an environment infrastructure code file
      TaskRoleArn: !Ref "AWS::NoValue"
      ContainerDefinitions:
        - Name: '{{service_instance.name}}'  # resource parameter
          Cpu: !FindInMap [TaskSize, {{service_instance.inputs.task_size}}, cpu]
          Memory: !FindInMap [TaskSize, {{service_instance.inputs.task_size}}, memory]
          Image: '{{service_instance.inputs.image}}'
          PortMappings:
            - ContainerPort: '{{service_instance.inputs.port}}' # input parameter
          LogConfiguration:
            LogDriver: 'awslogs'
            Options:
              awslogs-group: '{{service_instance.name}}' # resource parameter
              awslogs-region: !Ref 'AWS::Region'
              awslogs-stream-prefix: '{{service_instance.name}}' # resource parameter

  # The service_instance. The service is a resource which allows you to run multiple
  # copies of a type of task, and gather up their logs and metrics, as well
  # as monitor the number of running tasks and replace any that have crashed
  Service:
    Type: AWS::ECS::Service
    DependsOn: LoadBalancerRule
    Properties:
      ServiceName: '{{service_instance.name}}'  # resource parameter
      Cluster: '{{environment.outputs.ClusterName}}' # output reference to an environment infrastructure as code file
      LaunchType: FARGATE
      DeploymentConfiguration:
        MaximumPercent: 200
        MinimumHealthyPercent: 75
      DesiredCount: '{{service_instance.inputs.desired_count}}'# input parameter
      NetworkConfiguration:
        AwsvpcConfiguration:
          AssignPublicIp: ENABLED
          SecurityGroups:
            - '{{environment.outputs.ContainerSecurityGroup}}' # output reference to an environment infrastructure as code file
          Subnets:
            - '{{environment.outputs.PublicSubnetOne}}' # output reference to an environment infrastructure as code file
            - '{{environment.outputs.PublicSubnetTwo}}' # output reference to an environment infrastructure as code file
      TaskDefinition: !Ref 'TaskDefinition'
      LoadBalancers:
        - ContainerName: '{{service_instance.name}}'  # resource parameter
          ContainerPort: '{{service_instance.inputs.port}}' # input parameter
          TargetGroupArn: !Ref 'TargetGroup'
[...]
```

# Detalhes e exemplos de parâmetros do arquivo Service CloudFormation IaC
<a name="svc-parameters"></a>

Você pode definir e referenciar parâmetros em seus arquivos de serviço e pipeline de infraestrutura como código (IaC). Para obter uma descrição detalhada dos parâmetros do AWS Proton , dos tipos de parâmetros, do namespace do parâmetro e de como usar os parâmetros em seus arquivos IaC, consulte [AWS Proton parâmetros](parameters.md).

## Definir parâmetros de serviço
<a name="svc-parameters.define"></a>

Você pode definir os parâmetros de entrada e saída para arquivos IaC do serviço.
+ **Parâmetros de entrada**: Defina os parâmetros de instância de serviço do ambiente em seu [arquivo de esquema](ag-schema.md).

  A lista a seguir inclui exemplos de parâmetros de entrada de serviço para casos de uso típicos.
  + Porta
  + Tamanho da tarefa
  + Imagem
  + Contagem desejada
  + Arquivo Docker
  + Comando de teste unitário

  Você fornece valores para os parâmetros de entrada ao [criar um serviço](ag-create-svc.md):
  + Use o console para preencher um formulário baseado em esquema que AWS Proton fornece.
  + Use a CLI para fornecer uma especificação que inclua os valores.
+ **Parâmetros de saída**: Defina as saídas da instância de serviço em seus arquivos IaC de serviço. Você pode então consultar essas saídas em arquivos IaC de outros recursos.

## Leia valores de parâmetros em arquivos IaC de serviço
<a name="svc-parameters.refer"></a>

Você pode ler os parâmetros relacionados ao serviço e a outros recursos nos arquivos do serviço IaC. Você lê o valor de um parâmetro fazendo referência ao nome do parâmetro no namespace do AWS Proton parâmetro.
+ **Parâmetros de entrada**: Leia um valor de instância do serviço fazendo referência a `service_instance.inputs.input-name`.
+ **Parâmetros** do AWS Proton recurso — Leia os parâmetros do recurso fazendo referência a nomes como `service.name``service_instance.name`, e. `environment.name`
+ **Parâmetros de saída**: Leia as saídas de outros recursos referenciando `environment.outputs.output-name` ou `service_instance.components.default.outputs.output-name`.

## Exemplo de arquivo IaC de serviço com parâmetros
<a name="svc-parameters.example"></a>

O exemplo a seguir é um trecho de um arquivo CloudFormation IaC de serviço. O namespace `environment.outputs.` se refere às saídas do ambiente de um arquivo IaC do ambiente. O namespace `service_instance.inputs.` se refere aos parâmetros de entrada da instância de serviço. A `service_instance.name` propriedade se refere a um parâmetro AWS Proton de recurso.

```
Resources:
  StoreServiceInstanceInputValue:
    Type: AWS::SSM::Parameter
    Properties:
      Type: String
      Value: "{{ service.name }} {{ service_instance.name }} {{ service_instance.inputs.my_sample_service_instance_required_input }} {{ service_instance.inputs.my_sample_service_instance_optional_input }} {{ environment.outputs.MySampleInputValue }} {{ environment.outputs.MyOtherSampleInputValue }}"
              #  resource parameter references               # input parameter references                                                                                                                    # output references to an environment infrastructure as code file
Outputs:
  MyServiceInstanceParameter:                                                         # output definition
    Value: !Ref StoreServiceInstanceInputValue 
  MyServiceInstanceRequiredInputValue:                                                # output definition
    Value: "{{ service_instance.inputs.my_sample_service_instance_required_input }}"  # input parameter reference
  MyServiceInstanceOptionalInputValue:                                                # output definition
    Value: "{{ service_instance.inputs.my_sample_service_instance_optional_input }}"  # input parameter reference
  MyServiceInstancesEnvironmentSampleOutputValue:                                     # output definition
    Value: "{{ environment.outputs.MySampleInputValue }}"                             # output reference to an environment IaC file
  MyServiceInstancesEnvironmentOtherSampleOutputValue:                                # output definition
    Value: "{{ environment.outputs.MyOtherSampleInputValue }}"                        # output reference to an environment IaC file
```

# Detalhes e exemplos de parâmetros do arquivo do componente CloudFormation IaC
<a name="comp-parameters"></a>

Você pode definir e referenciar parâmetros em seus arquivos de componente de infraestrutura como código (IaC). Para obter uma descrição detalhada dos AWS Proton parâmetros, dos tipos de parâmetros, do namespace do parâmetro e de como usar os parâmetros em seus arquivos IaC, consulte. [AWS Proton parâmetros](parameters.md) Para obter mais informações sobre componentes, consulte [AWS Proton componentes](ag-components.md).

## Defina os parâmetros de saída do componente
<a name="comp-parameters.define"></a>

Você pode definir os parâmetros de saída nos arquivos IaC do componente. Você pode então consultar essas saídas em arquivos IaC de serviço.

**nota**  
Você não pode definir entradas para arquivos IaC de componentes. Os componentes conectados podem obter entradas da instância de serviço à qual estão conectados. Os componentes separados não têm entradas.

## Leia valores de parâmetros em arquivos IaC de componente
<a name="comp-parameters.refer"></a>

Você pode ler os parâmetros relacionados ao componente e a outros recursos nos arquivos do componente IaC. Você lê o valor de um parâmetro fazendo referência ao nome do parâmetro no namespace do AWS Proton parâmetro.
+ **Parâmetros de entrada**: Leia um valor anexo de instância de serviço fazendo referência a `service_instance.inputs.input-name`.
+ **Parâmetros** do AWS Proton recurso — Leia os parâmetros do recurso fazendo referência a nomes como `component.name``service.name`,`service_instance.name`, e. `environment.name`
+ **Parâmetros de saída**: Leia as saídas do ambiente referindo `environment.outputs.output-name`.

## Exemplos de arquivos IaC de componente e serviço com parâmetros
<a name="comp-parameters.example"></a>

O exemplo a seguir mostra um componente que provisiona um bucket do Amazon Simple Storage Service (Amazon S3) e uma política de acesso relacionada e expõe os Amazon Resource Names ARNs () de ambos os recursos como saídas de componentes. Um modelo de serviço IaC adiciona as saídas do componente como variáveis de ambiente de contêiner de uma tarefa do Amazon Elastic Container Service (Amazon ECS) para disponibilizar as saídas para o código executado no contêiner e adiciona a política de acesso ao bucket ao perfil da tarefa. O nome do bucket é baseado nos nomes do ambiente, serviço, instância de serviço e componente, o que significa que o bucket é acoplado a uma instância específica do modelo de componente que estende uma instância de serviço específica. Os desenvolvedores podem criar vários componentes personalizados com base nesse modelo de componente para provisionar buckets do Amazon S3 para diferentes instâncias de serviço e necessidades funcionais.

O exemplo mostra como você usa a sintaxe de `{{ ... }}` Jinja para se referir a componentes e outros parâmetros de recursos em seu arquivo IaC de serviço. Você pode usar instruções de `{% if ... %}` para adicionar blocos de instruções somente quando um componente é anexado à instância de serviço. As palavras-chave `proton_cfn_*` são *filtros* que você pode usar para limpar e formatar os valores dos parâmetros de saída. Para obter mais informações sobre os filtros, consulte [Filtros de parâmetros para arquivos CloudFormation IaC](parameter-filters.md).

 Como administrador, você cria o arquivo de modelo do serviço IaC.

**Example arquivo CloudFormation IaC de serviço usando um componente**  

```
# service/instance_infrastructure/cloudformation.yaml

Resources: 
  TaskDefinition:
    Type: AWS::ECS::TaskDefinition
    Properties:
      TaskRoleArn: !Ref TaskRole
      ContainerDefinitions:
        - Name: '{{service_instance.name}}'
          # ...
          {% if service_instance.components.default.outputs | length > 0 %}
          Environment:
            {{ service_instance.components.default.outputs |
                proton_cfn_ecs_task_definition_formatted_env_vars }}
          {% endif %}

  # ...

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

Como desenvolvedor, você cria o arquivo de modelo do componente IaC.

**Example arquivo CloudFormation IaC do componente**  

```
# cloudformation.yaml

# A component that defines an S3 bucket and a policy for accessing the bucket.
Resources:
  S3Bucket:
    Type: AWS::S3::Bucket
    Properties:
      BucketName: '{{environment.name}}-{{service.name}}-{{service_instance.name}}-{{component.name}}'
  S3BucketAccessPolicy:
    Type: AWS::IAM::ManagedPolicy
    Properties:
      PolicyDocument:
        Version: "2012-10-17"		 	 	 
        Statement:
          - Effect: Allow
            Action:
              - 's3:Get*'
              - 's3:List*'
              - 's3:PutObject'
            Resource: !GetAtt S3Bucket.Arn
Outputs:
  BucketName:
    Description: "Bucket to access"
    Value: !GetAtt S3Bucket.Arn
  BucketAccessPolicyArn:
    Value: !Ref S3BucketAccessPolicy
```

Quando AWS Proton renderiza um CloudFormation modelo para sua instância de serviço e substitui todos os parâmetros por valores reais, o modelo pode ter a aparência do arquivo a seguir.

**Example arquivo IaC CloudFormation renderizado por instância de serviço**  

```
Resources: 
  TaskDefinition:
    Type: AWS::ECS::TaskDefinition
    Properties:
      TaskRoleArn: !Ref TaskRole
      ContainerDefinitions:
        - Name: '{{service_instance.name}}'
          # ...
          Environment:
            - Name: BucketName
              Value: arn:aws:s3:us-east-1:123456789012:environment_name-service_name-service_instance_name-component_name
            - Name: BucketAccessPolicyArn
              Value: arn:aws:iam::123456789012:policy/cfn-generated-policy-name
  # ...

  TaskRole:
    Type: AWS::IAM::Role
    Properties:
      # ...
      ManagedPolicyArns:
        - !Ref BaseTaskRoleManagedPolicy
        - arn:aws:iam::123456789012:policy/cfn-generated-policy-name

  # Basic permissions for the task
  BaseTaskRoleManagedPolicy:
    Type: AWS::IAM::ManagedPolicy
    Properties:
      # ...
```

# 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]") }}
```

# CodeBuild detalhes e exemplos de parâmetros de provisionamento
<a name="parameters-codebuild"></a>

Você pode definir parâmetros em seus modelos para AWS Proton recursos CodeBuild baseados e referenciar esses parâmetros em seu código de provisionamento. Para obter uma descrição detalhada dos AWS Proton parâmetros, dos tipos de parâmetros, do namespace do parâmetro e de como usar os parâmetros em seus arquivos IaC, consulte. [AWS Proton parâmetros](parameters.md)

**nota**  
Você pode usar o CodeBuild provisionamento com ambientes e serviços. No momento, você não pode provisionar componentes dessa forma.

## Parâmetros de entrada
<a name="parameters-codebuild.input"></a>

Ao criar um AWS Proton recurso, como um ambiente ou um serviço, você fornece valores para os parâmetros de entrada definidos no [arquivo de esquema](ag-schema.md) do seu modelo. Quando o recurso que você cria usa[CodeBuild aprovisionamento](ag-works-prov-methods.md#ag-works-prov-methods-codebuild), AWS Proton renderiza esses valores de entrada em um arquivo de entrada. Seu código de aprovisionamento pode importar e obter valores de parâmetros desse arquivo.

Para obter um exemplo de um CodeBuild modelo, consulte[CodeBuild pacote de modelos de provisionamento](ag-infrastructure-tmp-files-codebuild.md). Para obter mais informações sobre arquivos manifesto, consulte [Encapsular arquivos de modelo para AWS Proton](ag-wrap-up.md).

O exemplo a seguir é um arquivo de entrada JSON gerado durante o provisionamento CodeBuild baseado de uma instância de serviço.

### Exemplo: usando o AWS CDK com CodeBuild provisionamento
<a name="parameters-codebuild.example"></a>

```
{
  "service_instance": {
    "name": "my-service-staging",
    "inputs": {
      "port": "8080",
      "task_size": "medium"
    }
  },
  "service": {
    "name": "my-service"
  },
  "environment": {
    "account_id": "123456789012",
    "name": "my-env-staging",
    "outputs": {
      "vpc-id": "hdh2323423"
    }
  }
}
```

## Parâmetros de saída
<a name="parameters-codebuild.output"></a>

[Para comunicar as saídas do provisionamento de recursos AWS Proton, seu código de provisionamento pode gerar um arquivo JSON nomeado `proton-outputs.json` com valores para os parâmetros de saída definidos no arquivo de esquema do seu modelo.](ag-schema.md) Por exemplo, o `cdk deploy` comando tem o `--outputs-file` argumento que instrui o AWS CDK a gerar um arquivo JSON com saídas de provisionamento. Se seu recurso usa o AWS CDK, especifique o seguinte comando no manifesto CodeBuild do modelo:

```
aws proton notify-resource-deployment-status-change
```

AWS Proton procura esse arquivo JSON. Se o arquivo existir após a conclusão bem-sucedida do código de provisionamento, AWS Proton lerá os valores dos parâmetros de saída dele.

# Detalhes e exemplos de parâmetros de arquivo de infraestrutura como código (IaC) do Terraform
<a name="env-parameters-tform"></a>

Você pode incluir variáveis de entrada do Terraform em arquivos `variable.tf` em seu pacote de modelos. Você também pode criar um esquema para criar variáveis AWS Proton gerenciadas. AWS Proton cria uma variável `.tf files` a partir do seu arquivo de esquema. Para obter mais informações, consulte [Arquivos Terraform IaC](ag-infrastructure-tmp-files-terraform.md).

Para referenciar AWS Proton as variáveis definidas pelo esquema em sua infraestrutura`.tf files`, você usa os AWS Proton namespaces mostrados na tabela *Parâmetros e namespaces do Terraform IaC*. Por exemplo, você poderá usar o `var.environment.inputs.vpc_cidr`. Entre aspas, coloque essas variáveis entre colchetes simples e adicione um cifrão na frente da primeira chave (por exemplo, `“${var.environment.inputs.vpc_cidr}”`).

O exemplo a seguir mostra como usar namespaces para incluir AWS Proton parâmetros em um ambiente. `.tf file`

```
terraform {
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 3.0"
    }
  }
  // This tells terraform to store the state file in s3 at the location
  // s3://terraform-state-bucket/tf-os-sample/terraform.tfstate
  backend "s3" {
    bucket = "terraform-state-bucket"
    key    = "tf-os-sample/terraform.tfstate"
    region = "us-east-1"
  }
}

// Configure the AWS Provider
provider "aws" {
  region = "us-east-1"
  default_tags {
    tags = var.proton_tags
  }
}

resource "aws_ssm_parameter" "my_ssm_parameter" {
  name  = "my_ssm_parameter"
  type  = "String"
  // Use the Proton environment.inputs. namespace
  value = var.environment.inputs.ssm_parameter_value
}
```