

Pemberitahuan akhir dukungan: Pada 7 Oktober 2026, AWS akan mengakhiri dukungan untuk AWS Proton. Setelah 7 Oktober 2026, Anda tidak akan lagi dapat mengakses AWS Proton konsol atau AWS Proton sumber daya. Infrastruktur yang Anda gunakan akan tetap utuh. Untuk informasi selengkapnya, lihat Panduan [AWS Proton Pengakhiran Layanan dan Migrasi](https://docs.aws.amazon.com/proton/latest/userguide/proton-end-of-support.html).

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Berkas skema
<a name="ag-schema"></a>

Sebagai administrator, saat Anda menggunakan [bagian Open API Data Models (schemas)](https://swagger.io/docs/specification/data-models/) untuk menentukan skema parameter file YAMB untuk paket template Anda, AWS Proton dapat memvalidasi input nilai parameter terhadap persyaratan yang Anda tetapkan dalam skema Anda.

Untuk informasi selengkapnya tentang format dan kata kunci yang tersedia, lihat bagian [objek Skema](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.3.md#schemaObject) di OpenAPI.

## Persyaratan skema untuk bundel templat lingkungan
<a name="schema-req-env"></a>

Skema Anda harus mengikuti [bagian Model Data (skema)](https://swagger.io/docs/specification/data-models/) OpenAPI dalam format YAMAL. Itu juga harus menjadi bagian dari bundel template lingkungan Anda.

Untuk skema lingkungan Anda, Anda harus menyertakan header yang diformat untuk menetapkan bahwa Anda menggunakan bagian Model Data (skema) dari Open API. Dalam contoh skema lingkungan berikut, header ini muncul di tiga baris pertama.

An `environment_input_type` harus disertakan dan didefinisikan dengan nama yang Anda berikan. Dalam contoh berikut, ini didefinisikan pada baris 5. Dengan mendefinisikan parameter ini, Anda mengaitkannya dengan sumber daya AWS Proton lingkungan. 

Untuk mengikuti model skema Open API, Anda harus menyertakan`types`. Dalam contoh berikut, ini adalah baris 6.

Berikut`types`, Anda harus menentukan `environment_input_type` tipe. Anda menentukan parameter input untuk lingkungan Anda sebagai properti dari`environment_input_type`. Anda harus menyertakan setidaknya satu properti dengan nama yang cocok dengan setidaknya satu parameter yang tercantum dalam infrastruktur lingkungan sebagai file kode (IAc) yang terkait dengan skema.

Saat Anda membuat lingkungan dan memberikan nilai parameter yang disesuaikan, AWS Proton gunakan file skema untuk mencocokkan, memvalidasi, dan menyuntikkannya ke dalam parameter kurawal kurawal dalam file IAc terkait. CloudFormation Untuk setiap properti (parameter), berikan `name` dan`type`. Secara opsional, juga menyediakan`description`,`default`, dan`pattern`.

Parameter yang ditentukan untuk contoh skema template lingkungan *standar* berikut meliputi`vpc_cidr`,`subnet_one_cidr`, dan `subnet_two_cidr` dengan `default` kata kunci dan nilai default. Saat Anda membuat lingkungan dengan skema bundel template lingkungan ini, Anda dapat menerima nilai default atau memberikan nilai Anda sendiri. Jika parameter *tidak* memiliki nilai default dan terdaftar sebagai `required` properti (parameter), Anda harus memberikan nilai untuk itu ketika Anda membuat lingkungan.

Contoh kedua skema template lingkungan *standar* mencantumkan `required` parameter`my_other_sample_input`.

Anda dapat membuat skema untuk dua jenis template lingkungan. Untuk informasi selengkapnya, lihat [Daftarkan dan terbitkan templat](template-create.md).
+ **Template lingkungan *standar***

  Dalam contoh berikut, jenis input lingkungan didefinisikan dengan deskripsi dan properti input. Contoh skema ini dapat digunakan dengan file AWS Proton CloudFormation IAc yang ditunjukkan pada [Contoh](ag-infrastructure-tmp-files-cloudformation.md#ag-proton-env-cfn-example) 3.

  Contoh skema untuk template lingkungan *standar*:

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

  Contoh skema untuk template lingkungan *standar* yang menyertakan `required` parameter:

  ```
  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
  ```
+ **Templat lingkungan yang *dikelola pelanggan***

  *Dalam contoh berikut, skema hanya menyertakan daftar output yang mereplikasi output dari IAc yang Anda gunakan untuk menyediakan infrastruktur yang dikelola pelanggan Anda.* Anda perlu mendefinisikan jenis nilai output sebagai *string saja* (*bukan* daftar, array atau tipe lainnya). Misalnya, cuplikan kode berikutnya menunjukkan bagian output dari template eksternal. CloudFormation Ini dari template yang ditunjukkan pada [Contoh 1](ag-infrastructure-tmp-files-cloudformation.md#ag-env-cfn-example). Ini dapat digunakan untuk membuat infrastruktur yang *dikelola pelanggan* eksternal untuk layanan AWS Proton Fargate yang dibuat dari [Contoh](ag-infrastructure-tmp-files-cloudformation.md#ag-proton-svc-cfn-example) 4.
**penting**  
Sebagai administrator, Anda harus memastikan bahwa infrastruktur yang disediakan dan dikelola serta semua parameter keluaran kompatibel dengan templat lingkungan *terkelola pelanggan* terkait. AWS Proton tidak dapat memperhitungkan perubahan atas nama Anda karena perubahan ini tidak terlihat AWS Proton. Inkonsistensi mengakibatkan kegagalan.

  Contoh output file CloudFormation IAC untuk template lingkungan yang *dikelola pelanggan*:

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

  Skema untuk bundel template lingkungan *terkelola AWS Proton pelanggan* yang sesuai ditunjukkan dalam contoh berikut. Setiap nilai output didefinisikan sebagai string.

  Contoh skema untuk template lingkungan yang *dikelola pelanggan*:

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

## Persyaratan skema untuk bundel templat layanan
<a name="schema-req-svc"></a>

Skema Anda harus mengikuti [bagian Model Data (skema)](https://swagger.io/docs/specification/data-models/) OpenAPI dalam format YAMAL seperti yang ditunjukkan pada contoh berikut. Anda harus menyediakan file skema dalam paket template layanan Anda.

Dalam contoh skema layanan berikut, Anda harus menyertakan header yang diformat. Dalam contoh berikut, ini ada di tiga baris pertama. Ini untuk menetapkan bahwa Anda menggunakan bagian Model Data (skema) dari Open API.

A `service_input_type` harus disertakan dan didefinisikan dengan nama yang Anda berikan. Dalam contoh berikut, ini ada di baris 5. Ini mengaitkan parameter dengan sumber daya AWS Proton layanan.

Pipeline AWS Proton layanan disertakan secara default saat Anda menggunakan konsol atau CLI untuk membuat layanan. Ketika Anda menyertakan saluran layanan untuk layanan Anda, Anda harus menyertakan `pipeline_input_type` dengan nama yang Anda berikan. Dalam contoh berikut, ini ada di baris 7. *Jangan* sertakan parameter ini jika Anda *tidak* menyertakan pipeline AWS Proton layanan. Untuk informasi selengkapnya, lihat [Daftarkan dan terbitkan templat](template-create.md).

Untuk mengikuti model skema Open API, Anda harus menyertakan `types` Dalam contoh berikut, ini ada di baris 9.

Berikut`types`, Anda harus menentukan `service_input_type` tipe. Anda menentukan parameter input untuk layanan Anda sebagai properti dari`service_input_type`. Anda harus menyertakan setidaknya satu properti dengan nama yang cocok dengan setidaknya satu parameter yang tercantum dalam file service infrastructure as code (IAc) yang terkait dengan skema.

Untuk menentukan pipeline layanan, di bawah `service_input_type` definisi Anda, Anda harus menentukan`pipeline_input_type`. Seperti di atas, Anda harus menyertakan setidaknya satu properti dengan nama yang cocok dengan setidaknya satu parameter yang tercantum dalam file iAc pipeline yang terkait dengan skema. *Jangan* sertakan definisi ini jika Anda *tidak* menyertakan pipeline AWS Proton layanan.

Saat Anda, sebagai administrator atau pengembang, membuat layanan dan memberikan nilai parameter yang disesuaikan, AWS Proton menggunakan file skema untuk mencocokkan, memvalidasi, dan menyuntikkannya ke dalam parameter kurung kurawal file CloudFormation IAC terkait. Untuk setiap properti (parameter), berikan a `name` dan a`type`. Secara opsional, juga menyediakan`description`,`default`, dan`pattern`.

Parameter yang ditentukan untuk skema contoh meliputi`port`,`desired_count`, `task_size` dan `image` dengan `default` kata kunci dan nilai default. Saat Anda membuat layanan dengan skema bundel template layanan ini, Anda dapat menerima nilai default atau memberikan nilai Anda sendiri. Parameter `unique_name` ini juga disertakan dalam contoh dan *tidak* memiliki nilai default. Ini terdaftar sebagai `required` properti (parameter). Anda, sebagai administrator atau pengembang, harus memberikan nilai untuk `required` parameter saat Anda membuat layanan.

Jika Anda ingin membuat template layanan dengan pipeline layanan, sertakan `pipeline_input_type` dalam skema Anda.

**Contoh file skema layanan untuk layanan yang menyertakan pipeline AWS Proton layanan.**

 Contoh skema ini dapat digunakan dengan file AWS Proton IAc yang ditunjukkan pada [Contoh 4 dan [Contoh](ag-infrastructure-tmp-files-cloudformation.md#ag-proton-pipeline-cfn-example) 5](ag-infrastructure-tmp-files-cloudformation.md#ag-proton-svc-cfn-example). Pipa layanan disertakan.

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

Jika Anda ingin membuat template layanan tanpa pipeline layanan, *jangan* sertakan `pipeline_input_type` dalam skema Anda, seperti yang ditunjukkan pada contoh berikut.

**Contoh file skema layanan untuk layanan yang *tidak* menyertakan pipeline AWS Proton layanan**

```
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"
```