Fichier de schéma - AWS Proton

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

En tant qu'administrateur, lorsque vous utilisez la section Modèles de données d'API ouvertes (schémas) 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 de l'OpenAPI.

Exigences relatives au schéma pour les ensembles de modèles d'environnement

Votre schéma doit suivre la section Modèles de données (schémas) 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 incluretypes. Dans l'exemple suivant, il s'agit de la ligne 6.

Ensuitetypes, 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 duenvironment_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 ettype. Facultativement, fournissez également un descriptiondefault, etpattern.

Les paramètres définis pour l'exemple de schéma de modèle d'environnement standard suivant incluent vpc_cidrsubnet_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ètremy_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 Enregistrer et publier des modèles.

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

    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 AWS CloudFormation . Cela provient du modèle présenté dans l'exemple 1. 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.

    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

Votre schéma doit suivre la section Modèles de données (schémas) 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 Enregistrer et publier des modèles.

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.

Ensuitetypes, 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 duservice_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 unpipeline_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 descriptiondefault, etpattern.

Les paramètres définis pour l'exemple de schéma incluent portdesired_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 et 5. 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"