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 API-Datenmodelle (Schemas) öffnen verwenden, um eine YAML-Datei für das Parameterschema für Ihr Vorlagenpaket zu definieren, AWS Proton kann Parameterwerteingaben anhand der Anforderungen validieren, die Sie in Ihrem Schema definiert haben.

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

Schemaanforderungen für Umgebungsvorlagenpakete

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

Für Ihr Umgebungsschema müssen Sie die formatierten Header einschließen, um festzustellen, ob Sie den Abschnitt Datenmodelle (Schemas) der Open API verwenden. In den folgenden Beispielen für Umgebungsschemata werden diese Header in den ersten drei Zeilen angezeigt.

Ein environment_input_type muss enthalten und mit einem von Ihnen angegebenen Namen definiert sein. In den folgenden Beispielen ist dies in Zeile 5 definiert. Durch die Definition dieses Parameters verknüpfen Sie ihn mit einer AWS Proton Umgebungsressource.

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

Im Anschluss an müssen typesSie einen -environment_input_typeTyp definieren. Sie definieren die Eingabeparameter für Ihre Umgebung als Eigenschaften des environment_input_type. Sie müssen mindestens eine Eigenschaft mit einem Namen einschließen, der mindestens einem Parameter entspricht, der in der IaC-Datei (Environment Infrastructure as Code) aufgeführt ist, die dem Schema zugeordnet ist.

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

Zu den definierten Parametern für das folgende Beispiel für ein Standard-Umgebungsvorlagenschema gehören vpc_cidrsubnet_one_cidr, und subnet_two_cidr mit dem default Schlüsselwort und den Standardwerten. Wenn Sie eine Umgebung mit diesem Paketschema für Umgebungsvorlagen 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 Werte dafür angeben, wenn Sie eine Umgebung erstellen.

Das zweite Beispiel für ein Standard-Umgebungsvorlagenschema listet den required Parameter aufmy_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.

  • Standard-Umgebungsvorlagen

    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. Beispiel 3: AWS Proton Umgebungsinfrastruktur als Codedatei

    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
  • Vom Kunden verwaltete Umgebungsvorlagen

    Im folgenden Beispiel enthält das Schema nur eine Liste von Ausgaben, die die Ausgaben von dem IaC replizieren, den Sie zur Bereitstellung Ihrer vom Kunden verwalteten Infrastruktur verwendet haben. Sie müssen Ausgabewerttypen nur als Zeichenfolgen definieren (keine Listen, Arrays oder andere Typen). Der nächste Codeausschnitt zeigt beispielsweise den Abschnitt „Ausgaben“ einer externen AWS CloudFormation Vorlage. Dies stammt aus der Vorlage in Beispiel 1. Es kann verwendet werden, um eine externe vom Kunden verwaltete Infrastruktur für einen AWS Proton Fargate-Service 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 vom Kunden verwalteten Umgebungsvorlagen kompatibel sind. AWS Proton kann Änderungen in Ihrem Namen nicht berücksichtigen, da diese Änderungen für nicht sichtbar sind AWS Proton. Inkonsistenzen führen zu Fehlern.

    Beispiel 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 AWS Proton kundenverwaltete Umgebungsvorlagenpaket 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 Servicevorlagenpakete

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

In den folgenden Serviceschemabeispielen müssen Sie die formatierten Header einschließen. Im folgenden Beispiel befindet sich dies in den ersten drei Zeilen. Dadurch wird festgestellt, dass Sie den Abschnitt Datenmodelle (Schemas) der Open API verwenden.

Ein service_input_type muss enthalten und mit einem von Ihnen angegebenen Namen definiert sein. Im folgenden Beispiel befindet sich dies in Zeile 5. Dadurch werden die Parameter einer - AWS Proton Service-Ressource 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 einschließen, müssen Sie pipeline_input_type mit einem von Ihnen angegebenen Namen angeben. Im folgenden Beispiel befindet sich 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 types im folgenden Beispiel in Zeile 9 angeben.

Im Anschluss an müssen typesSie einen service_input_type Typ definieren. Sie definieren die Eingabeparameter für Ihren Service als Eigenschaften des service_input_type. Sie müssen mindestens eine Eigenschaft mit einem Namen einschließen, der mindestens einem Parameter entspricht, der in der IaC-Datei (Service Infrastructure as Code) aufgeführt ist, die dem Schema zugeordnet ist.

Um eine Service-Pipeline zu definieren, müssen Sie unter Ihrer service_input_type Definition eine definierenpipeline_input_type. Wie oben, müssen Sie mindestens eine Eigenschaft mit einem Namen einschließen, der mindestens einem Parameter entspricht, der in einer Pipeline-IaC-Datei aufgeführt ist, die dem Schema zugeordnet ist. Fügen Sie diese Definition nicht ein, wenn Sie keine - AWS Proton Service-Pipeline einbeziehen.

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

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

Wenn Sie eine Servicevorlage mit einer Service-Pipeline erstellen möchten, fügen Sie die pipeline_input_type in Ihr Schema ein.

Beispiel für eine Serviceschemadatei für einen Service, der eine - AWS Proton Service-Pipeline 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 Servicevorlage ohne Service-Pipeline erstellen möchten, schließen Sie die nicht pipeline_input_type in Ihr Schema ein, wie im folgenden Beispiel gezeigt.

Beispiel für eine Serviceschemadatei 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"