翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
スキーマファイル
管理者は、Open API データモデル (スキーマ) セクション
形式および使用可能なキーワードの詳細については、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 ファイルの中括弧で囲まれたパラメータに挿入します。プロパティ (パラメータ) ごとに name
と type
を指定します。オプションで、description
、default
、pattern
を指定します。
次の標準環境スキーマの例に示す定義済みパラメータには、vpc_cidr
、subnet_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 ファイルの中括弧で囲まれたパラメータに挿入します。プロパティ (パラメータ) ごとに name
と type
を指定します。オプションで、description
、default
、pattern
も指定します。
スキーマの例に示す定義済みパラメータは、port
、desired_count
、task_size
および image
で default
キーワードとデフォルト値が付いています。このサービステンプレートバンドルスキーマを使用してサービスを作成する際には、デフォルト値を受け入れるか、または独自の値を指定できます。パラメータ 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"