Archivo de esquema - AWS Proton

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

Como administrador, cuando utilizas la sección de modelos de datos de API abierta (esquemas) 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 de OpenAPI.

Requisitos de esquema para los paquetes de plantillas de entorno

El esquema debe seguir la sección de modelos de datos (esquemas) 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_typeDebe 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 incluirtypes. En el siguiente ejemplo, se trata de la línea 6.

A continuacióntypes, debe definir un environment_input_type tipo. Defina los parámetros de entrada de su entorno como propiedades delenvironment_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 descriptiondefault, ypattern.

Los parámetros definidos para el siguiente ejemplo de esquema de plantilla de entorno estándar incluyen vpc_cidrsubnet_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ámetromy_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.

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

    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. AWS CloudFormation Esto es de la plantilla que se muestra en el ejemplo 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 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

El esquema debe seguir la sección de modelos de datos (esquemas) 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_typeDebe 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.

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óntypes, debe definir un service_input_type tipo. Defina los parámetros de entrada de su servicio como propiedades delservice_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, debajo de su service_input_type definición, debe definir unapipeline_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 descriptiondefault, ypattern.

Los parámetros definidos para el esquema de ejemplo incluyen portdesired_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 y 5. 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"