

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.

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

## Memformat 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]}}") }}
```