

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.

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

Como administrador, cuando utilizas la [sección de modelos de datos de API abierta (esquemas)](https://swagger.io/docs/specification/data-models/) para definir un archivo YAML de esquema de parámetros para tu paquete de plantillas, AWS Proton puedes validar las entradas de los valores de los parámetros según los requisitos que hayas definido en tu esquema.

Para obtener más información sobre los formatos y las palabras clave disponibles, consulte la sección de [objetos Schema](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.3.md#schemaObject) de OpenAPI.

## Requisitos de esquema para los paquetes de plantillas de entorno
<a name="schema-req-env"></a>

El esquema debe seguir la [sección de modelos de datos (esquemas)](https://swagger.io/docs/specification/data-models/) de OpenAPI en formato YAML. También debe formar parte del paquete de plantillas de entorno.

En el esquema de su entorno, debe incluir los encabezados formateados para comprobar que está utilizando la sección de modelos de datos (esquemas) de la API abierta. En los siguientes ejemplos de esquemas de entorno, estos encabezados aparecen en las tres primeras líneas.

`environment_input_type`Debe incluirse y definirse con un nombre que usted proporcione. En los ejemplos siguientes, esto se define en la línea 5. Al definir este parámetro, lo asocia a un recurso AWS Proton del entorno. 

Para seguir el modelo de esquema de API abierta, debe incluir`types`. En el siguiente ejemplo, se trata de la línea 6.

A continuación`types`, debe definir un `environment_input_type` tipo. Defina los parámetros de entrada de su entorno como propiedades del`environment_input_type`. Debe incluir al menos una propiedad con un nombre que coincida con al menos un parámetro que aparezca en la infraestructura del entorno como un archivo de código (IaC) asociado al esquema.

Al crear un entorno y proporcionar valores de parámetros personalizados, AWS Proton utiliza el archivo de esquema para compararlos, validarlos e incorporarlos a los parámetros entre corchetes del archivo IaC asociado. CloudFormation Para cada propiedad (parámetro), introduzca una y. `name` `type` Si lo desea, proporcione también un `description``default`, y`pattern`.

Los parámetros definidos para el siguiente ejemplo de esquema de plantilla de entorno *estándar* incluyen `vpc_cidr``subnet_one_cidr`, y `subnet_two_cidr` con la `default` palabra clave y los valores predeterminados. Al crear un entorno con este esquema de paquete de plantillas de entorno, puede aceptar los valores predeterminados o proporcionar los suyos propios. Si un parámetro *no tiene* un valor predeterminado y aparece como una `required` propiedad (parámetro), debe proporcionarle valores al crear un entorno.

El segundo ejemplo de esquema de plantilla de entorno *estándar* muestra el `required` parámetro`my_other_sample_input`.

Puede crear un esquema para dos tipos de plantillas de entorno. Para obtener más información, consulte [Registro y publicación de plantillas](template-create.md).
+ **Plantillas de entorno *estándar***

  En el siguiente ejemplo, se define un tipo de entrada de entorno con una descripción y propiedades de entrada. Este ejemplo de esquema se puede utilizar con el archivo AWS Proton CloudFormation IaC que se muestra en el [ejemplo 3](ag-infrastructure-tmp-files-cloudformation.md#ag-proton-env-cfn-example).

  Ejemplo de esquema para una plantilla *de entorno estándar*:

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

  Ejemplo de esquema para una plantilla de entorno *estándar* que incluye un `required` parámetro:

  ```
  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
  ```
+ **Plantillas de entorno *gestionadas por el cliente***

  En el siguiente ejemplo, el esquema solo incluye una lista de salidas que replican las salidas del IaC que utilizó para aprovisionar la infraestructura *gestionada por el cliente*. Debe definir los tipos de valores de salida *únicamente como cadenas* (*no* como listas, matrices u otros tipos). Por ejemplo, el siguiente fragmento de código muestra la sección de salidas de una plantilla externa. CloudFormation Esto es de la plantilla que se muestra en el [ejemplo](ag-infrastructure-tmp-files-cloudformation.md#ag-env-cfn-example) 1. Se puede utilizar para crear una infraestructura externa *gestionada por el cliente* para un servicio de AWS Proton Fargate creado a partir del [ejemplo](ag-infrastructure-tmp-files-cloudformation.md#ag-proton-svc-cfn-example) 4.
**importante**  
Como administrador, debe asegurarse de que la infraestructura aprovisionada y gestionada y todos los parámetros de salida sean compatibles con las plantillas de entorno *gestionado por el cliente* asociadas. AWS Proton no puede contabilizar los cambios en su nombre porque estos cambios no son visibles para AWS Proton usted. Las inconsistencias producen errores.

  Ejemplos de resultados de un archivo CloudFormation IaC para una plantilla de entorno *gestionado por el 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'
  [...]
  ```

  El esquema del paquete de plantillas de entorno *gestionado por el AWS Proton cliente* correspondiente se muestra en el siguiente ejemplo. Cada valor de salida se define como una cadena.

  Ejemplo de esquema para una plantilla de entorno *gestionado por el 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 del esquema para los paquetes de plantillas de servicio
<a name="schema-req-svc"></a>

El esquema debe seguir la [sección de modelos de datos (esquemas)](https://swagger.io/docs/specification/data-models/) de OpenAPI en formato YAML, como se muestra en los siguientes ejemplos. Debes incluir un archivo de esquema en tu paquete de plantillas de servicio.

En los siguientes ejemplos de esquemas de servicio, debe incluir los encabezados formateados. En el ejemplo siguiente, se encuentra en las tres primeras líneas. Esto sirve para establecer que está utilizando la sección de modelos de datos (esquemas) de la API abierta.

`service_input_type`Debe incluirse y definirse con el nombre que usted proporcione. En el siguiente ejemplo, se encuentra en la línea 5. Esto asocia los parámetros a un recurso AWS Proton de servicio.

De forma predeterminada, se incluye una canalización de AWS Proton servicios cuando se utiliza la consola o la CLI para crear un servicio. Cuando incluye una canalización de servicios para su servicio, debe `pipeline_input_type` incluirla con el nombre que proporcione. En el siguiente ejemplo, se encuentra en la línea 7. *No* incluyas este parámetro si *no* vas a incluir una canalización AWS Proton de servicios. Para obtener más información, consulte [Registro y publicación de plantillas](template-create.md).

Para seguir el modelo de esquema de API abierta, debes incluir: `types` en el siguiente ejemplo, esto está en la línea 9.

A continuación`types`, debe definir un `service_input_type` tipo. Defina los parámetros de entrada de su servicio como propiedades del`service_input_type`. Debe incluir al menos una propiedad con un nombre que coincida con al menos uno de los parámetros enumerados en la infraestructura del servicio como archivo de código (IaC) asociado al esquema.

Para definir una canalización de servicios, por debajo de su `service_input_type` definición, debe definir una`pipeline_input_type`. Como se indica anteriormente, debe incluir al menos una propiedad con un nombre que coincida con al menos un parámetro incluido en un archivo IaC de canalización asociado al esquema. *No* incluyas esta definición si *no* vas a incluir una canalización AWS Proton de servicios.

Cuando usted, como administrador o desarrollador, crea un servicio y proporciona valores de parámetros personalizados, AWS Proton utiliza el archivo de esquema para compararlos, validarlos e insertarlos en los parámetros entrecruzados del archivo CloudFormation IaC asociado. Para cada propiedad (parámetro), proporcione a y a. `name` `type` Si lo desea, proporcione también un `description``default`, y`pattern`.

Los parámetros definidos para el esquema de ejemplo incluyen `port``desired_count`, `task_size` y `image` con la `default` palabra clave y los valores predeterminados. Al crear un servicio con este esquema de paquete de plantillas de servicio, puede aceptar los valores predeterminados o proporcionar los suyos propios. El parámetro también `unique_name` se incluye en el ejemplo y *no* tiene un valor predeterminado. Se muestra como una `required` propiedad (parámetro). Usted, como administrador o desarrollador, debe proporcionar valores para `required` los parámetros al crear los servicios.

Si desea crear una plantilla de servicio con una canalización de servicios, `pipeline_input_type` inclúyala en su esquema.

**Ejemplo de archivo de esquema de servicio para un servicio que incluye una canalización AWS Proton de servicios.**

 Este ejemplo de esquema se puede utilizar con los archivos AWS Proton IaC que se muestran en los [ejemplos 4](ag-infrastructure-tmp-files-cloudformation.md#ag-proton-svc-cfn-example) y [5](ag-infrastructure-tmp-files-cloudformation.md#ag-proton-pipeline-cfn-example). Se incluye una canalización de servicios.

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

Si quieres crear una plantilla de servicio sin una canalización de servicios, *no* la incluyas `pipeline_input_type` en tu esquema, como se muestra en el siguiente ejemplo.

**Ejemplo de archivo de esquema de servicio para un servicio que *no* incluye una canalización AWS Proton de servicios**

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