Filter parameter untuk CloudFormation file IAc - AWS Proton

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

Saat Anda membuat referensi ke AWS Proton parameter 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, 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. defaultFilternya adalah filter bawaan Jinja.

Memformat properti lingkungan untuk tugas Amazon ECS

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 di ContainerDefinition bagian definisi tugas Amazon Elastic Container Service (Amazon ECS) Service Elastic Container ECS).

Set 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.

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

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 di Properties bagian definisi AWS Lambda fungsi.

Set 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.

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 ARN kebijakan IAM untuk dimasukkan dalam peran IAM

Deklarasi

dict → proton_cfn_iam_policy_arns → YAML list

Deskripsi

Filter ini memformat daftar output yang akan digunakan dalam ManagedPolicyArns properti 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 ARN kebijakan IAM yang valid dari daftar parameter keluaran. Anda dapat menggunakan filter ini untuk menambahkan kebijakan dalam nilai parameter keluaran ke definisi peran IAM dalam templat layanan.

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

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.

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

Deskripsi

defaultFilter 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.

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 bernamatest.

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

Untuk menghindari masalah ini, tambahkan default filter.

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