

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

# Arquivo de esquema
<a name="ag-schema"></a>

Como administrador, quando você usa a [seção Modelos de dados de API aberta (esquemas)](https://swagger.io/docs/specification/data-models/) para definir um arquivo YAML de esquema de parâmetros para seu pacote de modelos, AWS Proton pode validar as entradas de valores de parâmetros em relação aos requisitos definidos em seu esquema.

Para obter mais informações sobre formatos e palavras-chave disponíveis, consulte a seção [Objeto de esquema](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.3.md#schemaObject) da OpenAPI.

## Requisitos de esquema para pacotes de modelos de ambiente
<a name="schema-req-env"></a>

Seu esquema deve seguir a [seção Modelos de dados (esquemas)](https://swagger.io/docs/specification/data-models/) da OpenAPI no formato YAML. Ele também deve fazer parte do seu pacote de modelos de ambiente.

Para o esquema do seu ambiente, você deve incluir os cabeçalhos formatados para estabelecer que está usando a seção Modelos de dados (esquemas) da API aberta. Nos exemplos de esquema de ambiente a seguir, esses cabeçalhos aparecem nas três primeiras linhas.

Um `environment_input_type` deve ser incluído e definido com um nome fornecido por você. Nos exemplos a seguir, isso é definido na linha 5. Ao definir esse parâmetro, você o associa a um recurso AWS Proton do ambiente. 

Para seguir o modelo de esquema da Open API, você deve incluir `types`. No exemplo a seguir, isso está na linha 6.

Após `types`, você deve definir um tipo de `environment_input_type`. Você define os parâmetros de entrada para seu ambiente como propriedades do `environment_input_type`. Você deve incluir pelo menos uma propriedade com um nome que corresponda a pelo menos um parâmetro listado no arquivo do ambiente de infraestrutura como código (IaC) que está associado ao esquema.

Quando você cria um ambiente e fornece valores de parâmetros personalizados, AWS Proton usa o arquivo de esquema para corresponder, validar e injetá-los nos parâmetros entre colchetes no arquivo IaC associado. CloudFormation Para cada propriedade (parâmetro), forneça um `name` e `type`. Opcionalmente, forneça também um `description`, `default`, e. `pattern`

Os parâmetros definidos para o exemplo de esquema de modelo de ambiente *padrão* a seguir incluem `vpc_cidr`, `subnet_one_cidr` e `subnet_two_cidr` com a palavra-chave `default` e os valores padrão. Ao criar um ambiente com esse esquema de pacote de modelo de ambiente, você pode aceitar os valores padrão ou fornecer os seus próprios. Se um parâmetro *não* tiver um valor padrão e estiver listado como uma propriedade (parâmetro) `required`, você deverá fornecer valores para ele ao criar um ambiente.

O segundo exemplo de esquema de modelo de ambiente *padrão* lista o parâmetro `required` `my_other_sample_input`.

Você pode criar um esquema para dois tipos de modelos de ambiente. Para obter mais informações, consulte [Registre e publique modelos](template-create.md).
+ **Modelos de ambiente *padrão***

  No exemplo a seguir, um tipo de entrada de ambiente é definido com uma descrição e propriedades de entrada. Esse exemplo de esquema pode ser usado com o arquivo AWS Proton CloudFormation IaC mostrado no [Exemplo](ag-infrastructure-tmp-files-cloudformation.md#ag-proton-env-cfn-example) 3.

  Exemplo de esquema para um modelo de ambiente *padrão*:

  ```
  schema:                            # required
    format:                          # required
      openapi: "3.0.0"               # required
    # required              defined by administrator
    environment_input_type: "PublicEnvironmentInput"
    types:                           # required
      # defined by administrator
      PublicEnvironmentInput:
        type: object
        description: "Input properties for my environment"
        properties:
          vpc_cidr:                   # parameter
            type: string
            description: "This CIDR range for your VPC"
            default: 10.0.0.0/16
            pattern: ([0-9]{1,3}\.){3}[0-9]{1,3}($|/(16|24))
          subnet_one_cidr:            # parameter
            type: string
            description: "The CIDR range for subnet one"
            default: 10.0.0.0/24
            pattern: ([0-9]{1,3}\.){3}[0-9]{1,3}($|/(16|24))
          subnet_two_cidr:            # parameter
            type: string
            description: "The CIDR range for subnet one"
            default: 10.0.1.0/24
            pattern: ([0-9]{1,3}\.){3}[0-9]{1,3}($|/(16|24))
  ```

  Exemplo de esquema para um modelo de ambiente *padrão* que inclui um parâmetro de `required`:

  ```
  schema:                            # required
    format:                          # required
      openapi: "3.0.0"               # required
    # required              defined by administrator
    environment_input_type: "MyEnvironmentInputType"
    types:                           # required
      # defined by administrator
      MyEnvironmentInputType:
        type: object
        description: "Input properties for my environment"
        properties:
          my_sample_input:           # parameter
            type: string
            description: "This is a sample input"
            default: "hello world"
          my_other_sample_input:     # parameter
            type: string
            description: "Another sample input"
          another_optional_input:    # parameter
            type: string
            description: "Another optional input"
            default: "!"
        required:
          - my_other_sample_input
  ```
+ **Modelos de ambiente *gerenciado pelo cliente***

  No exemplo a seguir, o esquema inclui apenas uma lista de saídas que replicam as saídas do IaC que você usou para provisionar sua infraestrutura *gerenciada pelo cliente*. Você precisa definir os tipos de valores de saída *somente como strings* (*não* listas, matrizes ou outros tipos). Por exemplo, o próximo trecho de código mostra a seção de saídas de um modelo externo do CloudFormation . Isso é do modelo mostrado no [Exemplo 1](ag-infrastructure-tmp-files-cloudformation.md#ag-env-cfn-example). Ele pode ser usado para criar uma infraestrutura externa *gerenciada pelo cliente* para um serviço AWS Proton Fargate criado a partir do [Exemplo](ag-infrastructure-tmp-files-cloudformation.md#ag-proton-svc-cfn-example) 4.
**Importante**  
Como administrador, você deve garantir que sua infraestrutura provisionada e gerenciada e todos os parâmetros de saída sejam compatíveis com os modelos de ambiente *gerenciado pelo cliente* associados. AWS Proton não pode contabilizar as alterações em seu nome porque essas alterações não estão visíveis para AWS Proton. As inconsistências resultam em falhas.

  Exemplo de CloudFormation saídas de arquivo IaC para um modelo de ambiente *gerenciado pelo cliente*:

  ```
  // Cloudformation Template Outputs
  [...]
  Outputs:
    ClusterName:
      Description: The name of the ECS cluster
      Value: !Ref 'ECSCluster'
    ECSTaskExecutionRole:
      Description: The ARN of the ECS role
      Value: !GetAtt 'ECSTaskExecutionRole.Arn'
    VpcId:
      Description: The ID of the VPC that this stack is deployed in
      Value: !Ref 'VPC'
  [...]
  ```

  O esquema do pacote de modelos de ambiente *gerenciado pelo AWS Proton cliente* correspondente é mostrado no exemplo a seguir. Cada valor de saída é definido como uma string.

  Exemplo de esquema para um modelo de ambiente *gerenciado pelo cliente*:

  ```
  schema:                            # required
    format:                          # required
      openapi: "3.0.0"               # required
    # required              defined by administrator
    environment_input_type: "EnvironmentOutput"
    types:                           # required
      # defined by administrator
      EnvironmentOutput:
        type: object
        description: "Outputs of the environment"
        properties:
          ClusterName:               # parameter
            type: string
            description: "The name of the ECS cluster"
          ECSTaskExecutionRole:      # parameter
            type: string
            description: "The ARN of the ECS role"
          VpcId:                     # parameter
            type: string
            description: "The ID of the VPC that this stack is deployed in"
  [...]
  ```

## Requisitos de esquema para pacotes de modelos de serviço
<a name="schema-req-svc"></a>

Seu esquema deve seguir a [seção Modelos de dados (esquemas)](https://swagger.io/docs/specification/data-models/) da OpenAPI no formato YAML como mostrado nos exemplos seguintes. Você deve fornecer um arquivo de esquema em seu pacote de modelos de serviço.

Nos exemplos de esquema de serviço a seguir, você deve incluir os cabeçalhos formatados. No exemplo a seguir, isso está nas três primeiras linhas. Isso serve para estabelecer que você está usando a seção Modelos de dados (esquemas) da API aberta.

Um `service_input_type` deve ser incluído e definido com um nome fornecido por você. No exemplo a seguir, isso está na linha 5. Isso associa os parâmetros a um recurso AWS Proton de serviço.

Um pipeline AWS Proton de serviço é incluído por padrão quando você usa o console ou a CLI para criar um serviço. Ao incluir um pipeline de serviços para seu serviço, você deve incluir a `pipeline_input_type` com um nome fornecido por você. No exemplo a seguir, isso está na linha 7. *Não* inclua esse parâmetro se você *não* estiver incluindo um pipeline AWS Proton de serviços. Para obter mais informações, consulte [Registre e publique modelos](template-create.md).

Para seguir o modelo de esquema da API aberta, você deve incluir `types`. No exemplo a seguir, isso está na linha 9.

Após `types`, você deve definir um tipo de `service_input_type`. Você define os parâmetros de entrada para seu serviço como propriedades do `service_input_type`. Você deve incluir pelo menos uma propriedade com um nome que corresponda a pelo menos um parâmetro listado no arquivo do serviço de infraestrutura como código (IaC) que está associado ao esquema.

Para definir um pipeline de serviços, abaixo da sua definição de `service_input_type`, você deve definir um `pipeline_input_type`. Como acima, você deve incluir pelo menos uma propriedade com um nome que corresponda a pelo menos um parâmetro listado em um arquivo de pipeline que está associado ao esquema. *Não* inclua essa definição se você *não* estiver incluindo um pipeline AWS Proton de serviços.

Quando você, como administrador ou desenvolvedor, cria um serviço e fornece valores de parâmetros personalizados, AWS Proton usa o arquivo de esquema para corresponder, validar e injetá-los nos parâmetros entre chaves curvas do arquivo CloudFormation IaC associado. Para cada propriedade (parâmetro), forneça um `name` e um `type`. Opcionalmente, forneça também um `description`, `default` e. `pattern`

Os parâmetros definidos para o exemplo de esquema incluem `port`, `desired_count`, `task_size` e `image` com os valores de palavra-chave e padrão `default`. Ao criar um serviço com esse esquema de pacote de modelo de serviço, você pode aceitar os valores padrão ou fornecer os seus próprios. O parâmetro `unique_name` também está incluído no exemplo e *não* tem um valor padrão. Ela é listada como uma propriedade (parâmetro) do `required`. Você, como administrador ou desenvolvedor, deve fornecer valores para os parâmetros do `required` ao criar serviços.

Se você quiser criar um modelo de serviço com um pipeline de serviço, inclua o `pipeline_input_type` em seu esquema.

**Exemplo de arquivo de esquema de serviço para um serviço que inclui um pipeline AWS Proton de serviços.**

 [Esse exemplo de esquema pode ser usado com os arquivos AWS Proton IaC mostrados no [Exemplo 4 e no Exemplo 5](ag-infrastructure-tmp-files-cloudformation.md#ag-proton-svc-cfn-example).](ag-infrastructure-tmp-files-cloudformation.md#ag-proton-pipeline-cfn-example) Um pipeline de serviços está incluído.

```
schema:                            # required
  format:                          # required
    openapi: "3.0.0"               # required
  # required           defined by administrator
  service_input_type: "LoadBalancedServiceInput"
  # only include if including AWS Proton service pipeline, defined by administrator
  pipeline_input_type: "PipelineInputs"

  types:                           # required
    # defined by administrator
    LoadBalancedServiceInput:
      type: object
      description: "Input properties for a loadbalanced Fargate service"
      properties:
        port:                      # parameter
          type: number
          description: "The port to route traffic to"
          default: 80
          minimum: 0
          maximum: 65535
        desired_count:             # parameter
          type: number
          description: "The default number of Fargate tasks you want running"
          default: 1
          minimum: 1
        task_size:                 # parameter
          type: string
          description: "The size of the task you want to run"
          enum: ["x-small", "small", "medium", "large", "x-large"]
          default: "x-small"
        image:                     # parameter
          type: string
          description: "The name/url of the container image"
          default: "public.ecr.aws/z9d2n7e1/nginx:1.19.5"
          minLength: 1
          maxLength: 200
        unique_name:               # parameter
          type: string
          description: "The unique name of your service identifier. This will be used to name your log group, task definition and ECS service"
          minLength: 1
          maxLength: 100
      required:
        - unique_name
    # defined by administrator
    PipelineInputs:
      type: object
      description: "Pipeline input properties"
      properties:
        dockerfile:                # parameter
          type: string
          description: "The location of the Dockerfile to build"
          default: "Dockerfile"
          minLength: 1
          maxLength: 100
        unit_test_command:         # parameter
          type: string
          description: "The command to run to unit test the application code"
          default: "echo 'add your unit test command here'"
          minLength: 1
          maxLength: 200
```

Se você quiser criar um modelo de serviço sem um pipeline de serviço, *não* inclua o `pipeline_input_type` em seu esquema, conforme demonstrado na página seguinte.

**Exemplo de arquivo de esquema de serviço para um serviço que *não* inclui um pipeline AWS Proton de serviços**

```
schema:                            # required
  format:                          # required
    openapi: "3.0.0"               # required
  # required            defined by administrator  
  service_input_type: "MyServiceInstanceInputType"

  types:                           # required
    # defined by administrator
    MyServiceInstanceInputType:
      type: object
      description: "Service instance input properties"
      required:
        - my_sample_service_instance_required_input
      properties:
        my_sample_service_instance_optional_input:   # parameter
          type: string
          description: "This is a sample input"
          default: "hello world"
        my_sample_service_instance_required_input:   # parameter
          type: string
          description: "Another sample input"
```