

サポート終了通知: 2026 年 10 月 7 日、 AWS はサポートを終了します AWS Proton。2026 年 10 月 7 日以降、 AWS Proton コンソールまたは AWS Proton リソースにアクセスできなくなります。デプロイされたインフラストラクチャはそのまま残ります。詳細については、[AWS Proton 「サービス廃止と移行ガイド](https://docs.aws.amazon.com/proton/latest/userguide/proton-end-of-support.html)」を参照してください。

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

# スキーマファイル
<a name="ag-schema"></a>

管理者は、Open API [Data Models (スキーマ) セクション](https://swagger.io/docs/specification/data-models/)を使用してテンプレートバンドルのパラメータスキーマ YAML ファイルを定義すると、スキーマで定義した要件に対してパラメータ値の入力 AWS Proton を検証できます。

形式および使用可能なキーワードの詳細については、OpenAPI の[スキーマオブジェクト](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.3.md#schemaObject)セクションを参照してください。

## 環境テンプレートバンドルのスキーマ要件
<a name="schema-req-env"></a>

スキーマは、YAML 形式の OpenAPI の[データモデル (スキーマ)](https://swagger.io/docs/specification/data-models/)セクションに従う必要があります。また、環境テンプレートバンドルの一部でなければなりません。

環境スキーマの場合、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 種類の環境テンプレートのスキーマを作成できます。詳細については、「[テンプレートを登録してパブリッシュする](template-create.md)」を参照してください。
+ ***標準*環境テンプレート**

  次の例では、説明と入力プロパティを使用して環境入力タイプを定義します。このスキーマの例は、[例 3](ag-infrastructure-tmp-files-cloudformation.md#ag-proton-env-cfn-example) に示す 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 からの出力を複製する出力リストのみが含まれています。出力値の型を (列挙、配列、その他*ではなく*) *文字列のみ*として定義する必要があります。たとえば、次のコードスニペットは、外部 CloudFormation テンプレートの出力セクションを示しています。これは、[例 1](ag-infrastructure-tmp-files-cloudformation.md#ag-env-cfn-example) に示すテンプレートからとったものです。これは、[例 4 ](ag-infrastructure-tmp-files-cloudformation.md#ag-proton-svc-cfn-example)から作成された 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"
  [...]
  ```

## サービステンプレートバンドルのスキーマ要件
<a name="schema-req-svc"></a>

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

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

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

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

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 および例](ag-infrastructure-tmp-files-cloudformation.md#ag-proton-svc-cfn-example) [5](ag-infrastructure-tmp-files-cloudformation.md#ag-proton-pipeline-cfn-example) に示す 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"
```