Schemadatei - AWS Proton

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Schemadatei

Wenn Sie als Administrator den Abschnitt „Offene API-Datenmodelle (Schemas)“ verwenden, um eine Parameterschema-YAML-Datei für Ihr Vorlagenpaket zu definieren, AWS Proton können Sie Parameterwerteingaben anhand der Anforderungen überprüfen, die Sie in Ihrem Schema definiert haben.

Weitere Informationen zu Formaten und verfügbaren Schlüsselwörtern finden Sie im Abschnitt Schema-Objekt der OpenAPI.

Schemaanforderungen für Umgebungsvorlagenpakete

Ihr Schema muss dem Abschnitt Datenmodelle (Schemas) der OpenAPI im YAML-Format entsprechen. Es muss auch Teil Ihres Umgebungsvorlagenpakets sein.

Für Ihr Umgebungsschema müssen Sie die formatierten Header angeben, um sicherzustellen, dass Sie den Abschnitt Datenmodelle (Schemas) der Open API verwenden. In den folgenden Beispielen für Umgebungsschemas erscheinen diese Header in den ersten drei Zeilen.

Ein environment_input_type muss enthalten und mit einem von Ihnen angegebenen Namen definiert werden. In den folgenden Beispielen ist dies in Zeile 5 definiert. Indem Sie diesen Parameter definieren, verknüpfen Sie ihn mit einer AWS Proton Umgebungsressource.

Um dem Open-API-Schemamodell zu folgen, müssen Sie Folgendes einbeziehentypes. Im folgenden Beispiel ist dies Zeile 6.

typesIm Folgenden müssen Sie einen environment_input_type Typ definieren. Sie definieren die Eingabeparameter für Ihre Umgebung als Eigenschaften vonenvironment_input_type. Sie müssen mindestens eine Eigenschaft angeben, deren Name mit mindestens einem Parameter übereinstimmt, der in der Umgebungsinfrastrukturdatei als Codedatei (IaC) aufgeführt ist, die dem Schema zugeordnet ist.

Wenn Sie eine Umgebung erstellen und benutzerdefinierte Parameterwerte angeben, AWS Proton verwendet er die Schemadatei, um sie abzugleichen, zu validieren und in die Parameter mit geschweiften Klammern in der zugehörigen IaC-Datei einzufügen. CloudFormation Geben Sie für jede Eigenschaft (Parameter) ein und ein. name type Geben Sie optional auch ein descriptiondefault, und anpattern.

Zu den definierten Parametern für das folgende Beispielschema für eine Standardumgebungsvorlage gehörenvpc_cidr,subnet_one_cidr, und subnet_two_cidr zusammen mit dem default Schlüsselwort und den Standardwerten. Wenn Sie eine Umgebung mit diesem Umgebungsvorlagen-Bundle-Schema erstellen, können Sie die Standardwerte akzeptieren oder Ihre eigenen angeben. Wenn ein Parameter keinen Standardwert hat und als required Eigenschaft (Parameter) aufgeführt ist, müssen Sie beim Erstellen einer Umgebung Werte dafür angeben.

Im zweiten Beispiel eines Schemas für eine Standardumgebungsvorlage ist der required Parameter aufgeführtmy_other_sample_input.

Sie können ein Schema für zwei Arten von Umgebungsvorlagen erstellen. Weitere Informationen finden Sie unter Vorlagen registrieren und veröffentlichen.

  • Vorlagen für Standardumgebungen

    Im folgenden Beispiel wird ein Umgebungseingabetyp mit einer Beschreibung und Eingabeeigenschaften definiert. Dieses Schemabeispiel kann mit der in Beispiel 3 gezeigten AWS Proton CloudFormation IaC-Datei verwendet werden.

    Beispielschema für eine Standardumgebungsvorlage:

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

    Beispielschema für eine Standardumgebungsvorlage, die einen required Parameter enthält:

    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
  • Vorlagen für vom Kunden verwaltete Umgebungen

    Im folgenden Beispiel enthält das Schema nur eine Liste von Ausgaben, die die Ausgaben der IaC replizieren, mit der Sie Ihre vom Kunden verwaltete Infrastruktur bereitgestellt haben. Sie müssen Ausgabewerttypen nur als Zeichenfolgen definieren (nicht als Listen, Arrays oder andere Typen). Der nächste Codeausschnitt zeigt beispielsweise den Ausgabebereich einer externen Vorlage. AWS CloudFormation Dies ist aus der in Beispiel 1 gezeigten Vorlage. Es kann verwendet werden, um eine externe, vom Kunden verwaltete Infrastruktur für einen AWS Proton Fargate-Dienst zu erstellen, der aus Beispiel 4 erstellt wurde.

    Wichtig

    Als Administrator müssen Sie sicherstellen, dass Ihre bereitgestellte und verwaltete Infrastruktur und alle Ausgabeparameter mit den zugehörigen kundenverwalteten Umgebungsvorlagen kompatibel sind. AWS Proton kann Änderungen in Ihrem Namen nicht berücksichtigen, da diese Änderungen für Sie nicht sichtbar sind. AWS Proton Inkonsistenzen führen zu Fehlern.

    Beispiele für CloudFormation IaC-Dateiausgaben für eine vom Kunden verwaltete Umgebungsvorlage:

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

    Das Schema für das entsprechende Vorlagenpaket für vom AWS Proton Kunden verwaltete Umgebungen wird im folgenden Beispiel gezeigt. Jeder Ausgabewert ist als Zeichenfolge definiert.

    Beispielschema für eine vom Kunden verwaltete Umgebungsvorlage:

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

Schemaanforderungen für Service-Vorlagen-Pakete

Ihr Schema muss dem Abschnitt Datenmodelle (Schemas) der OpenAPI im YAML-Format entsprechen, wie in den folgenden Beispielen gezeigt. Sie müssen eine Schemadatei in Ihrem Service-Template-Paket bereitstellen.

In den folgenden Beispielen für ein Serviceschema müssen Sie die formatierten Header einbeziehen. Im folgenden Beispiel ist dies in den ersten drei Zeilen. Damit stellen Sie sicher, dass Sie den Abschnitt Datenmodelle (Schemas) der Open API verwenden.

A service_input_type muss enthalten und mit einem von Ihnen angegebenen Namen definiert werden. Im folgenden Beispiel befindet sich dies in Zeile 5. Dadurch werden die Parameter einer AWS Proton Dienstressource zugeordnet.

Eine AWS Proton Service-Pipeline ist standardmäßig enthalten, wenn Sie die Konsole oder die CLI verwenden, um einen Service zu erstellen. Wenn Sie eine Service-Pipeline für Ihren Service hinzufügen, müssen Sie sie pipeline_input_type mit einem von Ihnen angegebenen Namen angeben. Im folgenden Beispiel ist dies in Zeile 7. Fügen Sie diesen Parameter nicht ein, wenn Sie keine AWS Proton Service-Pipeline einbeziehen. Weitere Informationen finden Sie unter Vorlagen registrieren und veröffentlichen.

Um dem Open-API-Schemamodell zu folgen, müssen Sie Folgendes angeben: Im folgenden Beispiel steht dies in Zeile 9. types

typesIm Folgenden müssen Sie einen service_input_type Typ definieren. Sie definieren die Eingabeparameter für Ihren Service als Eigenschaften vonservice_input_type. Sie müssen mindestens eine Eigenschaft mit einem Namen angeben, der mit mindestens einem Parameter übereinstimmt, der in der Datei Service Infrastructure as Code (IaC) aufgeführt ist, die dem Schema zugeordnet ist.

Um eine Service-Pipeline zu definieren, müssen Sie unterhalb Ihrer service_input_type Definition eine pipeline_input_type definieren. Wie oben müssen Sie mindestens eine Eigenschaft mit einem Namen angeben, der mit mindestens einem Parameter übereinstimmt, der in einer Pipeline-IaC-Datei aufgeführt ist, die dem Schema zugeordnet ist. Nehmen Sie diese Definition nicht auf, wenn Sie keine AWS Proton Service-Pipeline einbeziehen.

Wenn Sie als Administrator oder Entwickler einen Service erstellen und benutzerdefinierte Parameterwerte angeben, AWS Proton verwendet er die Schemadatei, um sie abzugleichen, zu validieren und in die Parameter der zugehörigen CloudFormation IaC-Datei mit geschweiften Klammern einzufügen. Geben Sie für jede Eigenschaft (Parameter) a und a an. name type Geben Sie optional auch ein descriptiondefault, und anpattern.

Zu den definierten Parametern für das Beispielschema gehören portdesired_count, task_size und image zusammen mit dem default Schlüsselwort und den Standardwerten. Wenn Sie einen Service mit diesem Dienstvorlagen-Bundle-Schema erstellen, können Sie die Standardwerte akzeptieren oder eigene Werte angeben. Der Parameter unique_name ist auch im Beispiel enthalten und hat keinen Standardwert. Er ist als required Eigenschaft (Parameter) aufgeführt. Sie als Administrator oder Entwickler müssen Werte für required Parameter angeben, wenn Sie Dienste erstellen.

Wenn Sie eine Dienstvorlage mit einer Service-Pipeline erstellen möchten, nehmen Sie die pipeline_input_type in Ihr Schema auf.

Beispiel für eine Dienstschemadatei für einen Dienst, der eine AWS Proton Dienstpipeline enthält.

Dieses Schemabeispiel kann mit den in Beispiel 4 und Beispiel 5 gezeigten AWS Proton IaC-Dateien verwendet werden. Eine Service-Pipeline ist enthalten.

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

Wenn Sie eine Dienstvorlage ohne Service-Pipeline erstellen möchten, nehmen Sie die nicht pipeline_input_type in Ihr Schema auf, wie im folgenden Beispiel gezeigt.

Beispiel für eine Dienstschemadatei für einen Service, der keine AWS Proton Service-Pipeline enthält

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"