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. default
Filternya 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
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.
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]
") }}