

Avis de fin de support : le 7 octobre 2026, AWS le support de AWS Proton. Après le 7 octobre 2026, vous ne pourrez plus accéder à la AWS Proton console ni aux AWS Proton ressources. Votre infrastructure déployée restera intacte. Pour plus d'informations, consultez le Guide [AWS Proton de dépréciation et de migration des services](https://docs.aws.amazon.com/proton/latest/userguide/proton-end-of-support.html).

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Fichier de schéma
<a name="ag-schema"></a>

En tant qu'administrateur, lorsque vous utilisez la [section Modèles de données d'API ouvertes (schémas)](https://swagger.io/docs/specification/data-models/) pour définir un fichier YAML de schéma de paramètres pour votre ensemble de modèles, vous AWS Proton pouvez valider les entrées de valeurs de paramètres par rapport aux exigences que vous avez définies dans votre schéma.

Pour plus d'informations sur les formats et les mots clés disponibles, consultez la section relative aux [objets Schema](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.3.md#schemaObject) de l'OpenAPI.

## Exigences relatives au schéma pour les ensembles de modèles d'environnement
<a name="schema-req-env"></a>

Votre schéma doit suivre la [section Modèles de données (schémas)](https://swagger.io/docs/specification/data-models/) de l'OpenAPI au format YAML. Il doit également faire partie de votre ensemble de modèles d'environnement.

Pour votre schéma d'environnement, vous devez inclure les en-têtes formatés pour indiquer que vous utilisez la section Modèles de données (schémas) de l'Open API. Dans les exemples de schéma d'environnement suivants, ces en-têtes apparaissent dans les trois premières lignes.

Un `environment_input_type` doit être inclus et défini avec un nom que vous fournissez. Dans les exemples suivants, cela est défini à la ligne 5. En définissant ce paramètre, vous l'associez à une ressource d' AWS Proton environnement. 

Pour suivre le modèle de schéma Open API, vous devez inclure`types`. Dans l'exemple suivant, il s'agit de la ligne 6.

Ensuite`types`, vous devez définir un `environment_input_type` type. Vous définissez les paramètres d'entrée de votre environnement en tant que propriétés du`environment_input_type`. Vous devez inclure au moins une propriété dont le nom correspond à au moins un paramètre répertorié dans le fichier de code (IAc) de l'infrastructure environnementale associé au schéma.

Lorsque vous créez un environnement et que vous fournissez des valeurs de paramètres AWS Proton personnalisées, utilisez le fichier de schéma pour les associer, les valider et les injecter dans les paramètres frisés du fichier CloudFormation iAC associé. Pour chaque propriété (paramètre), indiquez un `name` et`type`. Facultativement, fournissez également un `description``default`, et`pattern`.

Les paramètres définis pour l'exemple de schéma de modèle d'environnement *standard* suivant incluent `vpc_cidr``subnet_one_cidr`, et `subnet_two_cidr` avec le `default` mot-clé et les valeurs par défaut. Lorsque vous créez un environnement avec ce schéma de bundle de modèles d'environnement, vous pouvez accepter les valeurs par défaut ou fournir les vôtres. Si un paramètre *n'a pas* de valeur par défaut et est répertorié en tant que `required` propriété (paramètre), vous devez lui fournir des valeurs lorsque vous créez un environnement.

Le deuxième exemple de schéma de modèle d'environnement *standard* répertorie le `required` paramètre`my_other_sample_input`.

Vous pouvez créer un schéma pour deux types de modèles d'environnement. Pour de plus amples informations, veuillez consulter [Enregistrez et publiez des modèles](template-create.md).
+ **Modèles d'environnement *standard***

  Dans l'exemple suivant, un type d'entrée d'environnement est défini avec une description et des propriétés d'entrée. Cet exemple de schéma peut être utilisé avec le fichier AWS Proton CloudFormation IaC présenté dans l'[exemple 3](ag-infrastructure-tmp-files-cloudformation.md#ag-proton-env-cfn-example).

  Exemple de schéma pour un modèle d'environnement *standard* :

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

  Exemple de schéma pour un modèle d'environnement *standard* qui inclut un `required` paramètre :

  ```
  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
  ```
+ **Modèles d'environnement *gérés par le client***

  Dans l'exemple suivant, le schéma inclut uniquement une liste de sorties qui reproduisent les sorties de l'iAc que vous avez utilisé pour approvisionner votre infrastructure *gérée par le client*. Vous devez définir les types de valeurs de sortie sous forme de *chaînes uniquement* (et *non* sous forme de listes, de tableaux ou d'autres types). Par exemple, l'extrait de code suivant montre la section des sorties d'un modèle externe CloudFormation . Cela provient du modèle présenté dans l'[exemple 1](ag-infrastructure-tmp-files-cloudformation.md#ag-env-cfn-example). [Il peut être utilisé pour créer une infrastructure externe *gérée par le client* pour un service AWS Proton Fargate créé à partir de l'exemple 4.](ag-infrastructure-tmp-files-cloudformation.md#ag-proton-svc-cfn-example)
**Important**  
En tant qu'administrateur, vous devez vous assurer que votre infrastructure provisionnée et gérée ainsi que tous les paramètres de sortie sont compatibles avec les modèles d'environnement *gérés par le client* associés. AWS Proton Je ne peux pas comptabiliser les modifications en votre nom, car elles ne sont pas visibles par AWS Proton. Les incohérences entraînent des échecs.

  Exemples de sorties de fichiers CloudFormation IaC pour un modèle d'environnement *géré par le client* :

  ```
  // 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'
  [...]
  ```

  Le schéma du bundle de modèles d'environnement *géré par le AWS Proton client* correspondant est illustré dans l'exemple suivant. Chaque valeur de sortie est définie sous forme de chaîne.

  Exemple de schéma pour un modèle d'environnement *géré par le client* :

  ```
  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"
  [...]
  ```

## Exigences relatives au schéma pour les ensembles de modèles de services
<a name="schema-req-svc"></a>

Votre schéma doit suivre la [section Modèles de données (schémas)](https://swagger.io/docs/specification/data-models/) de l'OpenAPI au format YAML, comme indiqué dans les exemples suivants. Vous devez fournir un fichier de schéma dans votre ensemble de modèles de services.

Dans les exemples de schéma de service suivants, vous devez inclure les en-têtes formatés. Dans l'exemple suivant, cela se trouve dans les trois premières lignes. Cela permet de vérifier que vous utilisez la section Modèles de données (schémas) de l'Open API.

A `service_input_type` doit être inclus et défini avec un nom que vous fournissez. Dans l'exemple suivant, il s'agit de la ligne 5. Cela associe les paramètres à une ressource AWS Proton de service.

Un pipeline AWS Proton de services est inclus par défaut lorsque vous utilisez la console ou la CLI pour créer un service. Lorsque vous incluez un pipeline de services pour votre service, vous devez l'inclure `pipeline_input_type` avec un nom que vous fournissez. Dans l'exemple suivant, il s'agit de la ligne 7. *N'incluez pas* ce paramètre si vous *n'incluez pas* de pipeline AWS Proton de services. Pour de plus amples informations, veuillez consulter [Enregistrez et publiez des modèles](template-create.md).

Pour suivre le modèle de schéma Open API, vous devez inclure `types` dans l'exemple suivant, cela se trouve dans la ligne 9.

Ensuite`types`, vous devez définir un `service_input_type` type. Vous définissez les paramètres d'entrée de votre service en tant que propriétés du`service_input_type`. Vous devez inclure au moins une propriété dont le nom correspond à au moins un paramètre répertorié dans le fichier d'infrastructure de service sous forme de code (IAc) associé au schéma.

Pour définir un pipeline de services, en dessous de votre `service_input_type` définition, vous devez définir un`pipeline_input_type`. Comme ci-dessus, vous devez inclure au moins une propriété dont le nom correspond à au moins un paramètre répertorié dans un fichier iAc de pipeline associé au schéma. *N'incluez pas* cette définition si vous *n'incluez pas* de pipeline AWS Proton de services.

Lorsque, en tant qu'administrateur ou développeur, vous créez un service et que vous fournissez des valeurs de paramètres personnalisées, vous AWS Proton utilisez le fichier de schéma pour les faire correspondre, les valider et les injecter dans les paramètres frisés du fichier CloudFormation IaC associé. Pour chaque propriété (paramètre), indiquez a `name` et `type` a. Facultativement, fournissez également un `description``default`, et`pattern`.

Les paramètres définis pour l'exemple de schéma incluent `port``desired_count`, `task_size` et `image` avec le `default` mot-clé et les valeurs par défaut. Lorsque vous créez un service avec ce schéma de bundle de modèles de services, vous pouvez accepter les valeurs par défaut ou fournir les vôtres. Le paramètre `unique_name` est également inclus dans l'exemple et *ne possède pas* de valeur par défaut. Il est répertorié en tant que `required` propriété (paramètre). En tant qu'administrateur ou développeur, vous devez fournir des valeurs pour `required` les paramètres lorsque vous créez des services.

Si vous souhaitez créer un modèle de service avec un pipeline de services, incluez-le `pipeline_input_type` dans votre schéma.

**Exemple de fichier de schéma de service pour un service qui inclut un pipeline AWS Proton de services.**

 Cet exemple de schéma peut être utilisé avec les AWS Proton fichiers IaC présentés dans les [exemples 4](ag-infrastructure-tmp-files-cloudformation.md#ag-proton-svc-cfn-example) [et 5](ag-infrastructure-tmp-files-cloudformation.md#ag-proton-pipeline-cfn-example). Un pipeline de services est inclus.

```
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 vous souhaitez créer un modèle de service sans pipeline de services, *ne l'incluez pas* `pipeline_input_type` dans votre schéma, comme indiqué dans l'exemple suivant.

**Exemple de fichier de schéma de service pour un service qui *n'inclut pas* de pipeline AWS Proton de services**

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