スキーマファイル - AWS Proton

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

スキーマファイル

管理者は、Open API データモデル (スキーマ) セクションを使用してテンプレートバンドルのパラメータスキーマ YAML ファイルを定義すると、スキーマで定義した要件に照らしてパラメータ値の入力 AWS Proton を検証できます。

形式および使用可能なキーワードの詳細については、OpenAPI のスキーマオブジェクトセクションを参照してください。

環境テンプレートバンドルのスキーマ要件

スキーマは、YAML 形式の OpenAPI のデータモデル (スキーマ)セクションに従う必要があります。また、環境テンプレートバンドルの一部でなければなりません。

環境スキーマの場合、Open API のデータモデル (スキーマ) セクションに従っていることを立証するために、書式付きヘッダーを含める必要があります。次の環境スキーマの例では、これらのヘッダーが先頭の 3 行に表示されます。

environment_input_type を含めて所与の名前で定義する必要があります。次の例では、5 行目で定義されています。このパラメータを定義することで、 AWS Proton 環境リソースに関連付けます。

Open API スキーマモデルに従うには、types を含める必要があります。次の例では、6 行目が該当します。

types に続いて、environment_input_type タイプを定義する必要があります。環境の入力パラメータを environment_input_type のプロパティとして定義します。スキーマに関連付けられた環境 Infrastructure as Code (IaC) ファイル内にリストのある 1 つ以上のパラメータと一致する名前のプロパティを 1 つ以上含める必要があります。

環境を作成してカスタマイズされたパラメータ値を指定すると、 はスキーマファイル AWS Proton を使用してそれらを照合し、検証し、関連する CloudFormation IaC ファイルの中括弧で囲まれたパラメータに挿入します。プロパティ (パラメータ) ごとに nametype を指定します。オプションで、descriptiondefaultpattern を指定します。

次の標準環境スキーマの例に示す定義済みパラメータには、vpc_cidrsubnet_one_cidr、および subnet_two_cidr があり、default キーワードとデフォルト値が与えられています。この環境テンプレートバンドルスキーマを使用して環境を作成する際には、デフォルト値を受け入れるか、または独自の値を指定できます。パラメータが required プロパティ (パラメータ) としてリストに示され、デフォルト値がない場合、環境の作成時に値を入力する必要があります。

2 つ目の例の標準環境テンプレートスキーマには required パラメータ my_other_sample_input のリストがあります。

2 種類の環境テンプレートのスキーマを作成できます。詳細については、「テンプレートを登録してパブリッシュする」を参照してください。

  • 標準環境テンプレート

    次の例では、説明と入力プロパティを使用して環境入力タイプを定義します。このスキーマの例は、例 3 に示す AWS Proton CloudFormation IaC ファイルで使用できます。

    標準環境テンプレートのスキーマの例:

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

    required パラメータを含む標準環境テンプレートのスキーマの例:

    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
  • カスタマーマネージド環境テンプレート

    次の例では、スキーマには、カスタマーマネージドインフラストラクチャのプロビジョニングに使用した IaC からの出力を複製する出力リストのみが含まれています。出力値の型を (列挙、配列、その他ではなく) 文字列のみとして定義する必要があります。たとえば、次のコードスニペットは、外部 AWS CloudFormation テンプレートの出力セクションを示しています。これは、例 1 に示すテンプレートからとったものです。これは、例 4 で作成した AWS Proton Fargate サービス用の外部カスタマーマネージドインフラストラクチャの作成に使用できます。

    重要

    管理者として、プロビジョニングされたマネージドインフラストラクチャとすべての出力パラメータが、関連するカスタマーマネージド環境テンプレートと互換性があることを確認する必要があります。これらの変更は AWS Proton には表示されないため、ユーザーに代わって変更を考慮することはできません AWS Proton。一貫性がない場合、結果はエラーになります。

    カスタマーマネージド環境テンプレートの CloudFormation IaC ファイル出力例:

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

    対応する AWS Proton カスタマーマネージド環境テンプレートバンドルのスキーマを次の例に示します。各出力値は文字列として定義されます。

    カスタマーマネージド環境テンプレートのスキーマの例:

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

サービステンプレートバンドルのスキーマ要件

次の例に示すように、スキーマは YAML 形式の OpenAPI のデータモデル (スキーマ)セクションに従う必要があります。サービステンプレートバンドルでスキーマファイルを指定する必要があります。

次のサービススキーマの例では、書式付きヘッダーを含める必要があります。次の例では、先頭の 3 行が該当します。これは、Open API のデータモデル (スキーマ) セクションに従っていることを立証するためです。

service_input_type を含めて所与の名前で定義する必要があります。次の例では、5 行目が該当します。これにより、パラメータが AWS Proton サービスリソースに関連付けられます。

コンソールまたは CLI を使用して AWS Proton サービスを作成する場合、 サービスパイプラインがデフォルトで含まれます。サービスにサービスパイプラインを含めるには、名前を指定して pipeline_input_type を含める必要があります。次の例では、7 行目が該当します。 AWS Proton サービスパイプラインを含めない場合はこのパラメータを含めないでください。詳細については、「テンプレートを登録してパブリッシュする」を参照してください。

Open API スキーマモデルに従うには、types を含める必要があります。次の例では、9 行目が該当します。

types に続いて、service_input_type タイプを定義する必要があります。サービスの入力パラメータを service_input_type のプロパティとして定義します。スキーマに関連付けられたサービス Infrastructure as Code (IaC) ファイル内にリストのある 1 つ以上のパラメータと一致する名前のプロパティを 1 つ以上含める必要があります。

サービスパイプラインを定義するには、service_input_type 定義の下で pipeline_input_type を定義する必要があります。上記のように、スキーマに関連付けられた IaC ファイル内にリストのある 1 つ以上のパラメータと一致する名前のプロパティを 1 つ以上含める必要があります。 AWS Proton サービスパイプラインを含めない場合はこの定義を含めないでください

管理者またはデベロッパーとしてサービスを作成し、カスタマイズされたパラメータ値を指定すると、 はスキーマファイル AWS Proton を使用してそれらを照合し、検証し、関連付けられた CloudFormation IaC ファイルの中括弧で囲まれたパラメータに挿入します。プロパティ (パラメータ) ごとに nametype を指定します。オプションで、descriptiondefaultpattern も指定します。

スキーマの例に示す定義済みパラメータは、portdesired_counttask_size および imagedefault キーワードとデフォルト値が付いています。このサービステンプレートバンドルスキーマを使用してサービスを作成する際には、デフォルト値を受け入れるか、または独自の値を指定できます。パラメータ unique_name は例に含まれ、デフォルト値はありません。リストには required プロパティ (パラメータ) として表示されます。管理者または開発者としてのあなたは、サービスの作成時に required パラメータの値を指定する必要があります。

サービスパイプライン付きでサービステンプレートを作成しようとする場合、スキーマに pipeline_input_type を含めます。

サービスパイプラインを含む AWS Proton サービスのサービススキーマファイルの例。

このスキーマの例は、例 4 と例 5 に示す AWS Proton IaC ファイルで使用できます。サービスパイプラインが含まれています。

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

サービスパイプラインなしでサービステンプレートを作成しようとする場合、次の例に示すように、スキーマに pipeline_input_type含めません

サービスパイプラインを含まないサービスの AWS Proton サービススキーマファイルの例

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"