

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.

# AWS Proton parameter
<a name="parameters"></a>

Anda dapat menentukan dan menggunakan parameter dalam infrastruktur Anda sebagai file kode (IAc) untuk membuatnya fleksibel dan dapat digunakan kembali. Anda membaca nilai parameter dalam file IAC Anda dengan mengacu pada nama parameter di *namespace AWS Proton parameter*. AWS Proton menyuntikkan nilai parameter ke dalam file IAc yang dirender yang dihasilkannya selama penyediaan sumber daya. Untuk memproses parameter AWS CloudFormation IAc, AWS Proton gunakan [Jinja](https://jinja.palletsprojects.com/en/2.11.x/). Untuk memproses parameter Terraform IAc, AWS Proton buat file nilai parameter Terraform dan bergantung pada kemampuan parametriisasi yang dibangun ke dalam HCL.

Dengan[CodeBuild penyediaan](ag-works-prov-methods.md#ag-works-prov-methods-codebuild), AWS Proton menghasilkan file input yang dapat diimpor kode Anda. File tersebut adalah file JSON atau HCL, tergantung pada properti di manifes template Anda. Untuk informasi selengkapnya, lihat [CodeBuild rincian parameter penyediaan dan contoh](parameters-codebuild.md).

Anda dapat merujuk ke parameter di lingkungan, layanan, dan file iAc komponen atau kode penyediaan dengan persyaratan berikut:
+ Panjang setiap nama parameter tidak melebihi 100 karakter.
+ Panjang namespace parameter dan nama sumber daya digabungkan tidak melebihi batas karakter untuk nama sumber daya.

AWS Proton penyediaan gagal jika kuota ini terlampaui.

## Jenis parameter
<a name="param-name-types"></a>

Jenis parameter berikut tersedia untuk Anda untuk referensi dalam file AWS Proton IAC:

**Parameter masukan**  
Lingkungan dan instance layanan dapat mengambil parameter input yang Anda tentukan dalam [file skema](ag-schema.md) yang Anda kaitkan dengan template lingkungan atau layanan. Anda dapat merujuk ke parameter input sumber daya dalam file IAC sumber daya. File komponen IAC dapat merujuk ke parameter input dari instance layanan tempat komponen dilampirkan.  
AWS Proton memeriksa nama parameter input terhadap file skema Anda, dan mencocokkannya dengan parameter yang direferensikan dalam file IAC Anda untuk menyuntikkan nilai input yang Anda berikan dalam file spesifikasi selama penyediaan sumber daya.

**Parameter keluaran**  
Anda dapat menentukan output di salah satu file IAC Anda. Output dapat berupa, misalnya, nama, ID, atau ARN dari salah satu sumber daya yang disediakan template, atau dapat menjadi cara untuk melewati salah satu input template. Anda dapat merujuk ke output ini dalam file IAC dari sumber daya lain.  
Dalam file CloudFormation IAC, tentukan parameter output di `Outputs:` blok. Dalam file Terraform IAc, tentukan setiap parameter output menggunakan pernyataan. `output`

**Parameter sumber daya**  
AWS Proton secara otomatis membuat parameter AWS Proton sumber daya. Parameter ini mengekspos properti dari objek AWS Proton sumber daya. Contoh parameter sumber daya adalah`environment.name`.

## Menggunakan AWS Proton parameter dalam file IAC Anda
<a name="param-name-spaces"></a>

Untuk membaca nilai parameter dalam file IAc, Anda merujuk ke nama parameter di namespace AWS Proton parameter. Untuk file AWS CloudFormation IAc, Anda menggunakan sintaks *Jinja* dan mengelilingi parameter dengan pasangan kurawal kurawal dan tanda kutip.

Tabel berikut menunjukkan sintaks referensi untuk setiap bahasa template yang didukung, dengan contoh.


| Bahasa template | Sintaksis | Contoh: masukan lingkungan bernama “VPC” | 
| --- | --- | --- | 
|  CloudFormation  |  `"{{ parameter-name }}"`  |  `"{{ environment.inputs.VPC }}"`  | 
|  Terraform  |  `var.parameter-name`  |  `var.environment.inputs.VPC` [Definisi variabel Terraform yang dihasilkan](ag-infrastructure-tmp-files-terraform.md#compiled-tform)  | 

**catatan**  
Jika Anda menggunakan [parameter CloudFormation dinamis](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/dynamic-references.html) dalam file IAC Anda, Anda harus [menghindarinya](https://jinja.palletsprojects.com/en/2.11.x/templates/#escaping) untuk mencegah kesalahan salah tafsir Jinja. Untuk informasi selengkapnya, lihat [Pemecahan masalah AWS Proton](ag-troubleshooting.md)

Tabel berikut mencantumkan nama namespace untuk semua parameter AWS Proton sumber daya. Setiap jenis file template dapat menggunakan subset yang berbeda dari namespace parameter.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/proton/latest/userguide/parameters.html)

Untuk informasi dan contoh selengkapnya, lihat subtopik tentang parameter dalam file templat IAC untuk berbagai jenis sumber daya dan bahasa templat.

**Topics**
+ [Jenis parameter](#param-name-types)
+ [Menggunakan AWS Proton parameter dalam file IAC Anda](#param-name-spaces)
+ [Rincian dan contoh parameter file CloudFormation IAC lingkungan](env-parameters.md)
+ [Detail parameter file layanan CloudFormation IAC dan contoh](svc-parameters.md)
+ [Detail dan contoh parameter file CloudFormation iAc komponen](comp-parameters.md)
+ [Filter parameter untuk CloudFormation file IAc](parameter-filters.md)
+ [CodeBuild rincian parameter penyediaan dan contoh](parameters-codebuild.md)
+ [Infrastruktur Terraform sebagai detail dan contoh parameter file kode (IAc)](env-parameters-tform.md)

# Rincian dan contoh parameter file CloudFormation IAC lingkungan
<a name="env-parameters"></a>

Anda dapat menentukan dan mereferensikan parameter di infrastruktur lingkungan Anda sebagai file kode (IAc). Untuk penjelasan rinci tentang AWS Proton parameter, jenis parameter, namespace parameter, dan cara menggunakan parameter dalam file IAC Anda, lihat. [AWS Proton parameter](parameters.md)

## Tentukan parameter lingkungan
<a name="env-parameters.define"></a>

Anda dapat menentukan parameter input dan output untuk file iAC lingkungan.
+ **Parameter input** - Tentukan parameter input lingkungan dalam [file skema](ag-schema.md) Anda.

  Daftar berikut mencakup contoh parameter input lingkungan untuk kasus penggunaan umum.
  + Nilai VPC CIDR
  + Pengaturan penyeimbang beban
  + Pengaturan basis data
  + Batas waktu pemeriksaan kesehatan

  Sebagai administrator, Anda dapat memberikan nilai untuk parameter masukan saat [membuat lingkungan](ag-create-env.md):
  + Gunakan konsol untuk mengisi formulir berbasis skema yang AWS Proton menyediakan.
  + Gunakan CLI untuk memberikan spesifikasi yang menyertakan nilai.
+ **Parameter keluaran** — Tentukan output lingkungan di file iAC lingkungan Anda. Anda kemudian dapat merujuk ke output ini dalam file IAC dari sumber daya lain.

## Baca nilai parameter dalam file iAc lingkungan
<a name="env-parameters.refer"></a>

Anda dapat membaca parameter yang terkait dengan lingkungan di lingkungan file IAC. Anda membaca nilai parameter dengan mereferensikan nama parameter di namespace AWS Proton parameter.
+ **Parameter masukan** — Baca nilai input lingkungan dengan referensi`environment.inputs.input-name`.
+ **Parameter sumber daya** — Baca parameter AWS Proton sumber daya dengan mereferensikan nama seperti`environment.name`.

**catatan**  
Tidak ada parameter output dari sumber daya lain yang tersedia untuk file iAC lingkungan.

## Contoh lingkungan dan layanan file IAc dengan parameter
<a name="env-parameters.example"></a>

Contoh berikut menunjukkan definisi parameter dan referensi dalam file iAc lingkungan. Contoh kemudian menunjukkan bagaimana parameter keluaran lingkungan yang didefinisikan dalam file iAc lingkungan dapat direferensikan dalam file iAc layanan.

**Example File CloudFormation iAc lingkungan**  
Perhatikan hal berikut dalam contoh ini:  
+ `environment.inputs.`Namespace mengacu pada parameter input lingkungan.
+ Parameter Amazon EC2 Systems Manager (SSM) `StoreInputValue` menggabungkan input lingkungan.
+ `MyEnvParameterValue`Output memperlihatkan rangkaian parameter input yang sama sebagai parameter output. Tiga parameter output tambahan juga mengekspos parameter input secara individual.
+ Enam parameter output tambahan mengekspos sumber daya yang disediakan lingkungan.

```
Resources:
  StoreInputValue:
    Type: AWS::SSM::Parameter
    Properties:
      Type: String
      Value: "{{ environment.inputs.my_sample_input }} {{ environment.inputs.my_other_sample_input}} {{ environment.inputs.another_optional_input }}"
              # input parameter references

# These output values are available to service infrastructure as code files as outputs, when given the 
# the 'environment.outputs' namespace, for example, service_instance.environment.outputs.ClusterName.
Outputs:
  MyEnvParameterValue:                                        # output definition
    Value: !GetAtt StoreInputValue.Value
  MySampleInputValue:                                         # output definition
    Value: "{{ environment.inputs.my_sample_input }}"         #   input parameter reference
  MyOtherSampleInputValue:                                    # output definition
    Value: "{{ environment.inputs.my_other_sample_input }}"   #   input parameter reference
  AnotherOptionalInputValue:                                  # output definition
    Value: "{{ environment.inputs.another_optional_input }}"  #   input parameter reference
  ClusterName:                                                # output definition
    Description: The name of the ECS cluster
    Value: !Ref 'ECSCluster'                                  #   provisioned resource
  ECSTaskExecutionRole:                                       # output definition
    Description: The ARN of the ECS role
    Value: !GetAtt 'ECSTaskExecutionRole.Arn'                 #   provisioned resource
  VpcId:                                                      # output definition
    Description: The ID of the VPC that this stack is deployed in
    Value: !Ref 'VPC'                                         #   provisioned resource
  PublicSubnetOne:                                            # output definition
    Description: Public subnet one
    Value: !Ref 'PublicSubnetOne'                             #   provisioned resource
  PublicSubnetTwo:                                            # output definition
    Description: Public subnet two
    Value: !Ref 'PublicSubnetTwo'                             #   provisioned resource
  ContainerSecurityGroup:                                     # output definition
    Description: A security group used to allow Fargate containers to receive traffic
    Value: !Ref 'ContainerSecurityGroup'                      #   provisioned resource
```

**Example Layanan file CloudFormation iAc**  
`environment.outputs.`Namespace mengacu pada output lingkungan dari file iAc lingkungan. Misalnya, nama `environment.outputs.ClusterName` membaca nilai parameter keluaran `ClusterName` lingkungan.  

```
AWSTemplateFormatVersion: '2010-09-09'
Description: Deploy a service on AWS Fargate, hosted in a public subnet, and accessible via a public load balancer.
Mappings:
  TaskSize:
    x-small:
      cpu: 256
      memory: 512
    small:
      cpu: 512
      memory: 1024
    medium:
      cpu: 1024
      memory: 2048
    large:
      cpu: 2048
      memory: 4096
    x-large:
      cpu: 4096
      memory: 8192
Resources:
  # A log group for storing the stdout logs from this service's containers
  LogGroup:
    Type: AWS::Logs::LogGroup
    Properties:
      LogGroupName: '{{service_instance.name}}' # resource parameter

  # The task definition. This is a simple metadata description of what
  # container to run, and what resource requirements it has.
  TaskDefinition:
    Type: AWS::ECS::TaskDefinition
    Properties:
      Family: '{{service_instance.name}}' # resource parameter
      Cpu: !FindInMap [TaskSize, {{service_instance.inputs.task_size}}, cpu] # input parameter
      Memory: !FindInMap [TaskSize, {{service_instance.inputs.task_size}}, memory] 
      NetworkMode: awsvpc
      RequiresCompatibilities:
        - FARGATE
      ExecutionRoleArn: '{{environment.outputs.ECSTaskExecutionRole}}'  # output reference to an environment infrastructure code file
      TaskRoleArn: !Ref "AWS::NoValue"
      ContainerDefinitions:
        - Name: '{{service_instance.name}}'  # resource parameter
          Cpu: !FindInMap [TaskSize, {{service_instance.inputs.task_size}}, cpu]
          Memory: !FindInMap [TaskSize, {{service_instance.inputs.task_size}}, memory]
          Image: '{{service_instance.inputs.image}}'
          PortMappings:
            - ContainerPort: '{{service_instance.inputs.port}}' # input parameter
          LogConfiguration:
            LogDriver: 'awslogs'
            Options:
              awslogs-group: '{{service_instance.name}}' # resource parameter
              awslogs-region: !Ref 'AWS::Region'
              awslogs-stream-prefix: '{{service_instance.name}}' # resource parameter

  # The service_instance. The service is a resource which allows you to run multiple
  # copies of a type of task, and gather up their logs and metrics, as well
  # as monitor the number of running tasks and replace any that have crashed
  Service:
    Type: AWS::ECS::Service
    DependsOn: LoadBalancerRule
    Properties:
      ServiceName: '{{service_instance.name}}'  # resource parameter
      Cluster: '{{environment.outputs.ClusterName}}' # output reference to an environment infrastructure as code file
      LaunchType: FARGATE
      DeploymentConfiguration:
        MaximumPercent: 200
        MinimumHealthyPercent: 75
      DesiredCount: '{{service_instance.inputs.desired_count}}'# input parameter
      NetworkConfiguration:
        AwsvpcConfiguration:
          AssignPublicIp: ENABLED
          SecurityGroups:
            - '{{environment.outputs.ContainerSecurityGroup}}' # output reference to an environment infrastructure as code file
          Subnets:
            - '{{environment.outputs.PublicSubnetOne}}' # output reference to an environment infrastructure as code file
            - '{{environment.outputs.PublicSubnetTwo}}' # output reference to an environment infrastructure as code file
      TaskDefinition: !Ref 'TaskDefinition'
      LoadBalancers:
        - ContainerName: '{{service_instance.name}}'  # resource parameter
          ContainerPort: '{{service_instance.inputs.port}}' # input parameter
          TargetGroupArn: !Ref 'TargetGroup'
[...]
```

# Detail parameter file layanan CloudFormation IAC dan contoh
<a name="svc-parameters"></a>

Anda dapat menentukan dan mereferensikan parameter dalam layanan dan infrastruktur pipa sebagai file kode (IAc). Untuk penjelasan rinci tentang AWS Proton parameter, jenis parameter, namespace parameter, dan cara menggunakan parameter dalam file IAC Anda, lihat. [AWS Proton parameter](parameters.md)

## Tentukan parameter layanan
<a name="svc-parameters.define"></a>

Anda dapat menentukan parameter input dan output untuk file iAC layanan.
+ **Parameter input** - Tentukan parameter input instance layanan dalam [file skema](ag-schema.md) Anda.

  Daftar berikut mencakup contoh parameter input layanan untuk kasus penggunaan umum.
  + *Port*
  + Ukuran tugas
  + Citra
  + Jumlah yang diinginkan
  + Berkas Docker
  + Perintah uji unit

  Anda memberikan nilai untuk parameter masukan saat [membuat layanan](ag-create-svc.md):
  + Gunakan konsol untuk mengisi formulir berbasis skema yang AWS Proton menyediakan.
  + Gunakan CLI untuk memberikan spesifikasi yang menyertakan nilai.
+ **Parameter keluaran** — Tentukan output instance layanan dalam file iAC layanan Anda. Anda kemudian dapat merujuk ke output ini dalam file IAC dari sumber daya lain.

## Baca nilai parameter dalam file iAc layanan
<a name="svc-parameters.refer"></a>

Anda dapat membaca parameter yang terkait dengan layanan dan sumber daya lain dalam file iAC layanan. Anda membaca nilai parameter dengan mereferensikan nama parameter di namespace AWS Proton parameter.
+ **Parameter input** — Baca nilai input instance layanan dengan referensi`service_instance.inputs.input-name`.
+ **Parameter sumber daya** — Baca parameter AWS Proton sumber daya dengan mereferensikan nama seperti`service.name`,`service_instance.name`, dan`environment.name`.
+ **Parameter keluaran** — Baca output sumber daya lain dengan referensi `environment.outputs.output-name` atau. `service_instance.components.default.outputs.output-name`

## Contoh layanan file iAc dengan parameter
<a name="svc-parameters.example"></a>

Contoh berikut adalah cuplikan dari file layanan CloudFormation IAc. `environment.outputs.`Namespace mengacu pada output dari file iAc lingkungan. `service_instance.inputs.`Namespace mengacu pada parameter input instance layanan. `service_instance.name`Properti mengacu pada parameter AWS Proton sumber daya.

```
Resources:
  StoreServiceInstanceInputValue:
    Type: AWS::SSM::Parameter
    Properties:
      Type: String
      Value: "{{ service.name }} {{ service_instance.name }} {{ service_instance.inputs.my_sample_service_instance_required_input }} {{ service_instance.inputs.my_sample_service_instance_optional_input }} {{ environment.outputs.MySampleInputValue }} {{ environment.outputs.MyOtherSampleInputValue }}"
              #  resource parameter references               # input parameter references                                                                                                                    # output references to an environment infrastructure as code file
Outputs:
  MyServiceInstanceParameter:                                                         # output definition
    Value: !Ref StoreServiceInstanceInputValue 
  MyServiceInstanceRequiredInputValue:                                                # output definition
    Value: "{{ service_instance.inputs.my_sample_service_instance_required_input }}"  # input parameter reference
  MyServiceInstanceOptionalInputValue:                                                # output definition
    Value: "{{ service_instance.inputs.my_sample_service_instance_optional_input }}"  # input parameter reference
  MyServiceInstancesEnvironmentSampleOutputValue:                                     # output definition
    Value: "{{ environment.outputs.MySampleInputValue }}"                             # output reference to an environment IaC file
  MyServiceInstancesEnvironmentOtherSampleOutputValue:                                # output definition
    Value: "{{ environment.outputs.MyOtherSampleInputValue }}"                        # output reference to an environment IaC file
```

# Detail dan contoh parameter file CloudFormation iAc komponen
<a name="comp-parameters"></a>

Anda dapat menentukan dan mereferensikan parameter dalam infrastruktur komponen Anda sebagai file kode (IAc). Untuk penjelasan rinci tentang AWS Proton parameter, jenis parameter, namespace parameter, dan cara menggunakan parameter dalam file IAC Anda, lihat. [AWS Proton parameter](parameters.md) Untuk informasi selengkapnya tentang komponen, lihat[AWS Proton komponen](ag-components.md).

## Tentukan parameter keluaran komponen
<a name="comp-parameters.define"></a>

Anda dapat menentukan parameter output dalam file iAc komponen Anda. Anda kemudian dapat merujuk ke output ini dalam file layanan IAC.

**catatan**  
Anda tidak dapat menentukan input untuk file komponen IAC. Komponen terlampir bisa mendapatkan masukan dari instance layanan yang mereka lampirkan. Komponen terpisah tidak memiliki input.

## Baca nilai parameter dalam file iAc komponen
<a name="comp-parameters.refer"></a>

Anda dapat membaca parameter yang terkait dengan komponen dan sumber daya lain dalam file komponen IAc. Anda membaca nilai parameter dengan mereferensikan nama parameter di namespace AWS Proton parameter.
+ **Parameter input** — Baca nilai input instance layanan terlampir dengan referensi`service_instance.inputs.input-name`.
+ **Parameter sumber daya** — Baca parameter AWS Proton sumber daya dengan mereferensikan nama seperti`component.name`,`service.name`,`service_instance.name`, dan`environment.name`.
+ **Parameter keluaran** — Baca output lingkungan dengan referensi`environment.outputs.output-name`.

## Contoh komponen dan layanan file IAc dengan parameter
<a name="comp-parameters.example"></a>

Contoh berikut menunjukkan komponen yang menyediakan bucket Amazon Simple Storage Service (Amazon S3) dan kebijakan akses terkait serta mengekspos Amazon Resource Names ARNs () dari kedua sumber daya sebagai output komponen. Template Service IAC menambahkan output komponen sebagai variabel lingkungan container dari tugas Amazon Elastic Container Service (Amazon ECS) untuk membuat output tersedia untuk kode yang berjalan di container, dan menambahkan kebijakan akses bucket ke peran tugas. Nama bucket didasarkan pada nama lingkungan, layanan, instance layanan, dan komponen, yang berarti bahwa bucket digabungkan dengan instance spesifik dari template komponen yang memperluas instance layanan tertentu. Pengembang dapat membuat beberapa komponen kustom berdasarkan templat komponen ini, untuk menyediakan bucket Amazon S3 untuk berbagai instans layanan dan kebutuhan fungsional.

Contoh menunjukkan bagaimana Anda menggunakan `{{ ... }}` sintaks Jinja untuk merujuk ke komponen dan parameter sumber daya lainnya dalam file iAc layanan Anda. Anda dapat menggunakan `{% if ... %}` pernyataan untuk menambahkan blok pernyataan hanya ketika komponen dilampirkan ke instance layanan. `proton_cfn_*`Kata kunci adalah *filter* yang dapat Anda gunakan untuk membersihkan dan memformat nilai parameter output. Untuk informasi lebih lanjut tentang filter, lihat [Filter parameter untuk CloudFormation file IAc](parameter-filters.md).

 Sebagai administrator, Anda membuat file template layanan IAC.

**Example layanan file CloudFormation iAc menggunakan komponen**  

```
# service/instance_infrastructure/cloudformation.yaml

Resources: 
  TaskDefinition:
    Type: AWS::ECS::TaskDefinition
    Properties:
      TaskRoleArn: !Ref TaskRole
      ContainerDefinitions:
        - Name: '{{service_instance.name}}'
          # ...
          {% if service_instance.components.default.outputs | length > 0 %}
          Environment:
            {{ service_instance.components.default.outputs |
                proton_cfn_ecs_task_definition_formatted_env_vars }}
          {% endif %}

  # ...

  TaskRole:
    Type: AWS::IAM::Role
    Properties:
      # ...
      ManagedPolicyArns:
        - !Ref BaseTaskRoleManagedPolicy
        {{ service_instance.components.default.outputs
            | proton_cfn_iam_policy_arns }}

  # Basic permissions for the task
  BaseTaskRoleManagedPolicy:
    Type: AWS::IAM::ManagedPolicy
    Properties:
      # ...
```

Sebagai pengembang, Anda membuat file template komponen IAC.

**Example file komponen CloudFormation iAc**  

```
# cloudformation.yaml

# A component that defines an S3 bucket and a policy for accessing the bucket.
Resources:
  S3Bucket:
    Type: AWS::S3::Bucket
    Properties:
      BucketName: '{{environment.name}}-{{service.name}}-{{service_instance.name}}-{{component.name}}'
  S3BucketAccessPolicy:
    Type: AWS::IAM::ManagedPolicy
    Properties:
      PolicyDocument:
        Version: "2012-10-17"		 	 	 
        Statement:
          - Effect: Allow
            Action:
              - 's3:Get*'
              - 's3:List*'
              - 's3:PutObject'
            Resource: !GetAtt S3Bucket.Arn
Outputs:
  BucketName:
    Description: "Bucket to access"
    Value: !GetAtt S3Bucket.Arn
  BucketAccessPolicyArn:
    Value: !Ref S3BucketAccessPolicy
```

Saat AWS Proton merender CloudFormation template untuk instance layanan Anda dan mengganti semua parameter dengan nilai aktual, template mungkin terlihat seperti file berikut.

**Example contoh layanan yang CloudFormation diberikan file IAc**  

```
Resources: 
  TaskDefinition:
    Type: AWS::ECS::TaskDefinition
    Properties:
      TaskRoleArn: !Ref TaskRole
      ContainerDefinitions:
        - Name: '{{service_instance.name}}'
          # ...
          Environment:
            - Name: BucketName
              Value: arn:aws:s3:us-east-1:123456789012:environment_name-service_name-service_instance_name-component_name
            - Name: BucketAccessPolicyArn
              Value: arn:aws:iam::123456789012:policy/cfn-generated-policy-name
  # ...

  TaskRole:
    Type: AWS::IAM::Role
    Properties:
      # ...
      ManagedPolicyArns:
        - !Ref BaseTaskRoleManagedPolicy
        - arn:aws:iam::123456789012:policy/cfn-generated-policy-name

  # Basic permissions for the task
  BaseTaskRoleManagedPolicy:
    Type: AWS::IAM::ManagedPolicy
    Properties:
      # ...
```

# Filter parameter untuk CloudFormation file IAc
<a name="parameter-filters"></a>

Saat Anda membuat referensi ke [AWS Proton parameter](parameters.md) dalam file AWS CloudFormation IAC Anda, Anda dapat menggunakan pengubah Jinja yang dikenal sebagai *filter* untuk memvalidasi, memfilter, dan memformat nilai parameter sebelum dimasukkan ke dalam templat yang dirender. Validasi filter sangat berguna ketika mengacu pada parameter keluaran [komponen](ag-components.md), karena pembuatan dan lampiran komponen dilakukan oleh pengembang, dan administrator yang menggunakan output komponen dalam templat instance layanan mungkin ingin memverifikasi keberadaan dan validitasnya. Namun, Anda dapat menggunakan filter di file Jinja IAc apa pun.

Bagian berikut menjelaskan dan menentukan filter parameter yang tersedia, dan memberikan contoh. AWS Proton mendefinisikan sebagian besar filter ini. `default`Filternya adalah filter bawaan Jinja.

## Memformat properti lingkungan untuk tugas Amazon ECS
<a name="parameter-filters.proton.cfn-ecs"></a>

**Deklarasi**

```
dict → proton_cfn_ecs_task_definition_formatted_env_vars (raw: boolean = True) → YAML list of dicts
```

**Deskripsi**

Filter ini memformat daftar output yang akan digunakan dalam [properti Lingkungan](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions.html#cfn-ecs-taskdefinition-containerdefinition-environment) di `ContainerDefinition` bagian definisi tugas Amazon Elastic Container Service (Amazon ECS) Service Elastic Container ECS).

Setel `raw` `False` untuk juga memvalidasi nilai parameter. Dalam hal ini, nilai diperlukan untuk mencocokkan ekspresi reguler`^[a-zA-Z0-9_-]*$`. Jika nilai gagal validasi ini, rendering template gagal.

### Contoh
<a name="parameter-filters.proton.cfn-ecs.example"></a>

Dengan template komponen kustom berikut:

```
Resources:
  # ...
Outputs:
  Output1:
    Description: "Example component output 1"
    Value: hello
  Output2:
    Description: "Example component output 2"
    Value: world
```

Dan template layanan berikut:

```
Resources:
  TaskDefinition:
    Type: AWS::ECS::TaskDefinition
    Properties:
      # ...
      ContainerDefinitions:
        - Name: MyServiceName
          # ...
          Environment:
            {{ service_instance.components.default.outputs
              | proton_cfn_ecs_task_definition_formatted_env_vars }}
```

Template layanan yang diberikan adalah sebagai berikut:

```
Resources:
  TaskDefinition:
    Type: AWS::ECS::TaskDefinition
    Properties:
      # ...
      ContainerDefinitions:
        - Name: MyServiceName
          # ...
          Environment:
            - Name: Output1
              Value: hello
            - Name: Output2
              Value: world
```

## Format properti lingkungan untuk fungsi Lambda
<a name="parameter-filters.proton.cfn-lambda"></a>

**Deklarasi**

```
dict → proton_cfn_lambda_function_formatted_env_vars (raw: boolean = True) → YAML dict
```

**Deskripsi**

Filter ini memformat daftar output yang akan digunakan dalam [properti Lingkungan](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html#cfn-lambda-function-environment) di `Properties` bagian definisi AWS Lambda fungsi.

Setel `raw` `False` untuk juga memvalidasi nilai parameter. Dalam hal ini, nilai diperlukan untuk mencocokkan ekspresi reguler`^[a-zA-Z0-9_-]*$`. Jika nilai gagal validasi ini, rendering template gagal.

### Contoh
<a name="parameter-filters.proton.cfn-lambda.example"></a>

Dengan template komponen kustom berikut:

```
Resources:
  # ...
Outputs:
  Output1:
    Description: "Example component output 1"
    Value: hello
  Output2:
    Description: "Example component output 2"
    Value: world
```

Dan template layanan berikut:

```
Resources:
  Lambda:
    Type: AWS::Lambda::Function
    Properties:
      Environment:
        Variables:
          {{ service_instance.components.default.outputs
            | proton_cfn_lambda_function_formatted_env_vars }}
```

Template layanan yang diberikan adalah sebagai berikut:

```
Resources:
  Lambda:
    Type: AWS::Lambda::Function
    Properties:
      Environment:
        Variables:
          Output1: hello
          Output2: world
```

## Ekstrak kebijakan IAM ARNs untuk dimasukkan dalam peran IAM
<a name="parameter-filters.proton.cfn-policy-arns"></a>

**Deklarasi**

```
dict → proton_cfn_iam_policy_arns → YAML list
```

**Deskripsi**

Filter ini memformat daftar output yang akan digunakan dalam [ManagedPolicyArns properti](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html#cfn-iam-role-managepolicyarns) di `Properties` bagian definisi peran AWS Identity and Access Management (IAM). Filter menggunakan ekspresi reguler `^arn:[a-zA-Z-]+:iam::\d{12}:policy/` untuk mengekstrak kebijakan IAM yang valid ARNs dari daftar parameter keluaran. Anda dapat menggunakan filter ini untuk menambahkan kebijakan dalam nilai parameter keluaran ke definisi peran IAM dalam templat layanan.

### Contoh
<a name="parameter-filters.proton.cfn-policy-arns.example"></a>

Dengan template komponen kustom berikut:

```
Resources:
  # ...
  ExamplePolicy1:
    Type: AWS::IAM::ManagedPolicy
    Properties:
      # ...
  ExamplePolicy2:
    Type: AWS::IAM::ManagedPolicy
    Properties:
      # ...

  # ...

Outputs:
  Output1:
    Description: "Example component output 1"
    Value: hello
  Output2:
    Description: "Example component output 2"
    Value: world
  PolicyArn1:
    Description: "ARN of policy 1"
    Value: !Ref ExamplePolicy1
  PolicyArn2:
    Description: "ARN of policy 2"
    Value: !Ref ExamplePolicy2
```

Dan template layanan berikut:

```
Resources: 

  # ...

  TaskRole:
    Type: AWS::IAM::Role
    Properties:
      # ...
      ManagedPolicyArns:
        - !Ref BaseTaskRoleManagedPolicy
        {{ service_instance.components.default.outputs
            | proton_cfn_iam_policy_arns }}

  # Basic permissions for the task
  BaseTaskRoleManagedPolicy:
    Type: AWS::IAM::ManagedPolicy
    Properties:
      # ...
```

Template layanan yang diberikan adalah sebagai berikut:

```
Resources: 

  # ...

  TaskRole:
    Type: AWS::IAM::Role
    Properties:
      # ...
      ManagedPolicyArns:
        - !Ref BaseTaskRoleManagedPolicy
        - arn:aws:iam::123456789012:policy/cfn-generated-policy-name-1
        - arn:aws:iam::123456789012:policy/cfn-generated-policy-name-2

  # Basic permissions for the task
  BaseTaskRoleManagedPolicy:
    Type: AWS::IAM::ManagedPolicy
    Properties:
      # ...
```

## Sanitasi nilai properti
<a name="parameter-filters.proton.cfn-sanitize"></a>

**Deklarasi**

```
string → proton_cfn_sanitize → string
```

**Deskripsi**

Ini adalah filter tujuan umum. Gunakan untuk memvalidasi keamanan nilai parameter. Filter memvalidasi bahwa nilainya cocok dengan ekspresi reguler `^[a-zA-Z0-9_-]*$` atau merupakan Nama Sumber Daya Amazon (ARN) yang valid. Jika nilai gagal validasi ini, rendering template gagal.

### Contoh
<a name="parameter-filters.proton.cfn-sanitize.example"></a>

Dengan template komponen kustom berikut:

```
Resources:
  # ...
Outputs:
  Output1:
    Description: "Example of valid output"
    Value: "This-is_valid_37"
  Output2:
    Description: "Example incorrect output"
    Value: "this::is::incorrect"
  SomeArn:
    Description: "Example ARN"
    Value: arn:aws:some-service::123456789012:some-resource/resource-name
```
+ Referensi berikut dalam template layanan:

  ```
  # ...
    {{ service_instance.components.default.outputs.Output1
      | proton_cfn_sanitize }}
  ```

  Render sebagai berikut:

  ```
  # ...
    This-is_valid_37
  ```
+ Referensi berikut dalam template layanan:

  ```
  # ...
    {{ service_instance.components.default.outputs.Output2
      | proton_cfn_sanitize }}
  ```

  Hasil dengan kesalahan rendering berikut:

  ```
  Illegal character(s) detected in "this::is::incorrect". Must match regex ^[a-zA-Z0-9_-]*$ or be a valid ARN
  ```
+ Referensi berikut dalam template layanan:

  ```
  # ...
    {{ service_instance.components.default.outputs.SomeArn
      | proton_cfn_sanitize }}
  ```

  Render sebagai berikut:

  ```
  # ...
    arn:aws:some-service::123456789012:some-resource/resource-name
  ```

## Berikan nilai default untuk referensi yang tidak ada
<a name="parameter-filters.proton.default"></a>

**Deskripsi**

`default`Filter memberikan nilai default ketika referensi namespace tidak ada. Gunakan untuk menulis template yang kuat yang dapat dirender tanpa kegagalan bahkan ketika parameter yang Anda rujuk hilang.

### Contoh
<a name="parameter-filters.default.example"></a>

Referensi berikut dalam template layanan menyebabkan rendering template gagal jika instance layanan tidak memiliki komponen terlampir yang didefinisikan secara langsung (default), atau jika komponen terlampir tidak memiliki output bernama`test`.

```
# ...
  {{ service_instance.components.default.outputs.test }}
```

Untuk menghindari masalah ini, tambahkan `default` filter.

```
# ...
  {{ service_instance.components.default.outputs.test | default("[optional-value]") }}
```

# CodeBuild rincian parameter penyediaan dan contoh
<a name="parameters-codebuild"></a>

Anda dapat menentukan parameter dalam template untuk AWS Proton sumber daya CodeBuild berbasis dan mereferensikan parameter ini dalam kode penyediaan Anda. Untuk penjelasan rinci tentang AWS Proton parameter, jenis parameter, namespace parameter, dan cara menggunakan parameter dalam file IAC Anda, lihat. [AWS Proton parameter](parameters.md)

**catatan**  
Anda dapat menggunakan CodeBuild penyediaan dengan lingkungan dan layanan. Saat ini Anda tidak dapat menyediakan komponen dengan cara ini.

## Parameter input
<a name="parameters-codebuild.input"></a>

Saat Anda membuat AWS Proton sumber daya, seperti lingkungan atau layanan, Anda memberikan nilai untuk parameter masukan yang ditentukan dalam [file skema](ag-schema.md) template Anda. Saat sumber daya yang Anda buat menggunakan[CodeBuild penyediaan](ag-works-prov-methods.md#ag-works-prov-methods-codebuild), AWS Proton merender nilai input ini ke dalam file input. Kode penyediaan Anda dapat mengimpor dan mendapatkan nilai parameter dari file ini.

Untuk contoh CodeBuild templat, lihat[CodeBuild bundel templat penyediaan](ag-infrastructure-tmp-files-codebuild.md). Untuk informasi selengkapnya tentang file manifes, lihat[Bungkus file template untuk AWS Proton](ag-wrap-up.md).

Contoh berikut adalah file input JSON yang dihasilkan selama penyediaan CodeBuild berbasis instance layanan.

### Contoh: menggunakan CodeBuild penyediaan AWS CDK with
<a name="parameters-codebuild.example"></a>

```
{
  "service_instance": {
    "name": "my-service-staging",
    "inputs": {
      "port": "8080",
      "task_size": "medium"
    }
  },
  "service": {
    "name": "my-service"
  },
  "environment": {
    "account_id": "123456789012",
    "name": "my-env-staging",
    "outputs": {
      "vpc-id": "hdh2323423"
    }
  }
}
```

## Parameter output
<a name="parameters-codebuild.output"></a>

[Untuk mengkomunikasikan output penyediaan sumber daya kembali ke AWS Proton, kode penyediaan Anda dapat menghasilkan file JSON bernama `proton-outputs.json` dengan nilai untuk parameter keluaran yang ditentukan dalam file skema template Anda.](ag-schema.md) Misalnya, `cdk deploy` perintah memiliki `--outputs-file` argumen yang menginstruksikan AWS CDK untuk menghasilkan file JSON dengan output penyediaan. Jika sumber daya Anda menggunakan AWS CDK, tentukan perintah berikut dalam manifes CodeBuild template Anda:

```
aws proton notify-resource-deployment-status-change
```

AWS Proton mencari file JSON ini. Jika file ada setelah kode penyediaan Anda berhasil diselesaikan, AWS Proton baca nilai parameter keluaran darinya.

# Infrastruktur Terraform sebagai detail dan contoh parameter file kode (IAc)
<a name="env-parameters-tform"></a>

Anda dapat menyertakan variabel input Terraform dalam `variable.tf` file di bundel template Anda. Anda juga dapat membuat skema untuk membuat variabel AWS Proton terkelola. AWS Proton membuat variabel `.tf files` dari file skema Anda. Untuk informasi selengkapnya, lihat [File Terraform IAc](ag-infrastructure-tmp-files-terraform.md).

Untuk mereferensikan AWS Proton variabel yang ditentukan skema di infrastruktur Anda`.tf files`, Anda menggunakan AWS Proton ruang nama yang ditampilkan di *Parameter dan ruang nama* untuk tabel Terraform IAc. Misalnya, Anda dapat menggunakan`var.environment.inputs.vpc_cidr`. Di dalam tanda kutip, kelilingi variabel-variabel ini dengan tanda kurung tunggal dan tambahkan tanda dolar di depan penjepit pertama (misalnya,). `“${var.environment.inputs.vpc_cidr}”`

Contoh berikut menunjukkan cara menggunakan ruang nama untuk menyertakan AWS Proton parameter dalam lingkungan. `.tf file`

```
terraform {
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 3.0"
    }
  }
  // This tells terraform to store the state file in s3 at the location
  // s3://terraform-state-bucket/tf-os-sample/terraform.tfstate
  backend "s3" {
    bucket = "terraform-state-bucket"
    key    = "tf-os-sample/terraform.tfstate"
    region = "us-east-1"
  }
}

// Configure the AWS Provider
provider "aws" {
  region = "us-east-1"
  default_tags {
    tags = var.proton_tags
  }
}

resource "aws_ssm_parameter" "my_ssm_parameter" {
  name  = "my_ssm_parameter"
  type  = "String"
  // Use the Proton environment.inputs. namespace
  value = var.environment.inputs.ssm_parameter_value
}
```