Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Parameterfilter für CloudFormation IaC-Dateien
Wenn Sie Verweise auf AWS Proton Parameter in Ihren AWS CloudFormation IaC-Dateien vornehmen, können Sie Jinja-Modifikatoren verwenden, die als Filter bezeichnet werden, um Parameterwerte zu validieren, zu filtern und zu formatieren, bevor sie in die gerenderte Vorlage eingefügt werden. Filtervalidierungen sind besonders nützlich, wenn sie auf Komponentenausgabeparameter verweisen, da die Erstellung und Anfügung von Komponenten von Entwicklern durchgeführt werden und ein Administrator, der Komponentenausgaben in einer Service-Instance-Vorlage verwendet, möglicherweise überprüfen möchte, ob sie vorhanden und gültig sind. Sie können jedoch Filter in jeder Jinja-IaC-Datei verwenden.
In den folgenden Abschnitten werden die verfügbaren Parameterfilter beschrieben und definiert und Beispiele bereitgestellt. AWS Proton definiert die meisten dieser Filter. Der default
Filter ist ein integrierter Jinja-Filter.
Formatieren von Umgebungseigenschaften für Amazon-ECS-Aufgaben
Deklaration
dict → proton_cfn_ecs_task_definition_formatted_env_vars (raw: boolean = True) → YAML list of dicts
Beschreibung
Dieser Filter formatiert eine Liste von Ausgaben, die in einer Umgebungseigenschaft im -ContainerDefinition
Abschnitt einer Amazon Elastic Container Service (Amazon ECS)-Aufgabendefinition verwendet werden sollen.
Setzen Sie diesen Wert raw
auf False
, um auch den Parameterwert zu validieren. In diesem Fall muss der Wert mit dem regulären Ausdruck übereinstimmen^[a-zA-Z0-9_-]*$
. Wenn der Wert diese Validierung nicht besteht, schlägt das Rendern der Vorlage fehl.
Mit der folgenden benutzerdefinierten Komponentenvorlage:
Resources:
# ...
Outputs:
Output1:
Description: "Example component output 1"
Value: hello
Output2:
Description: "Example component output 2"
Value: world
Und die folgende Servicevorlage:
Resources:
TaskDefinition:
Type: AWS::ECS::TaskDefinition
Properties:
# ...
ContainerDefinitions:
- Name: MyServiceName
# ...
Environment:
{{ service_instance.components.default.outputs
| proton_cfn_ecs_task_definition_formatted_env_vars }}
Die gerenderte Servicevorlage lautet wie folgt:
Resources:
TaskDefinition:
Type: AWS::ECS::TaskDefinition
Properties:
# ...
ContainerDefinitions:
- Name: MyServiceName
# ...
Environment:
- Name: Output1
Value: hello
- Name: Output2
Value: world
Formatieren von Umgebungseigenschaften für Lambda-Funktionen
Deklaration
dict → proton_cfn_lambda_function_formatted_env_vars (raw: boolean = True) → YAML dict
Beschreibung
Dieser Filter formatiert eine Liste von Ausgaben, die in einer Umgebungseigenschaft im -Properties
Abschnitt einer - AWS Lambda Funktionsdefinition verwendet werden sollen.
Setzen Sie diesen Wert raw
auf False
, um auch den Parameterwert zu validieren. In diesem Fall muss der Wert mit dem regulären Ausdruck übereinstimmen^[a-zA-Z0-9_-]*$
. Wenn der Wert diese Validierung nicht besteht, schlägt das Rendern der Vorlage fehl.
Mit der folgenden benutzerdefinierten Komponentenvorlage:
Resources:
# ...
Outputs:
Output1:
Description: "Example component output 1"
Value: hello
Output2:
Description: "Example component output 2"
Value: world
Und die folgende Servicevorlage:
Resources:
Lambda:
Type: AWS::Lambda::Function
Properties:
Environment:
Variables:
{{ service_instance.components.default.outputs
| proton_cfn_lambda_function_formatted_env_vars }}
Die gerenderte Servicevorlage lautet wie folgt:
Resources:
Lambda:
Type: AWS::Lambda::Function
Properties:
Environment:
Variables:
Output1: hello
Output2: world
Extrahieren von IAM-Richtlinien-ARNs, die in IAM-Rollen aufgenommen werden sollen
Deklaration
dict → proton_cfn_iam_policy_arns → YAML list
Beschreibung
Dieser Filter formatiert eine Liste von Ausgaben, die in einer ManagedPolicyArns Eigenschaft im -Properties
Abschnitt einer AWS Identity and Access Management (IAM)-Rollendefinition verwendet werden sollen. Der Filter verwendet den regulären Ausdruck^arn:[a-zA-Z-]+:iam::\d{12}:policy/
, um gültige IAM-Richtlinien-ARNs aus der Liste der Ausgabeparameter zu extrahieren. Sie können diesen Filter verwenden, um Richtlinien in Ausgabeparameterwerten an eine IAM-Rollendefinition in einer Servicevorlage anzuhängen.
Mit der folgenden benutzerdefinierten Komponentenvorlage:
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
Und die folgende Servicevorlage:
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:
# ...
Die gerenderte Servicevorlage lautet wie folgt:
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:
# ...
Eigenschaftswerte bereinigen
Deklaration
string → proton_cfn_sanitize → string
Beschreibung
Dies ist ein Allzweckfilter. Verwenden Sie sie, um die Sicherheit eines Parameterwerts zu überprüfen. Der Filter überprüft, ob der Wert entweder mit dem regulären Ausdruck übereinstimmt ^[a-zA-Z0-9_-]*$
oder ein gültiger Amazon-Ressourcenname (ARN) ist. Wenn der Wert diese Validierung nicht besteht, schlägt das Rendern der Vorlage fehl.
Mit der folgenden benutzerdefinierten Komponentenvorlage:
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
-
Die folgende Referenz in einer Servicevorlage:
# ... {{ service_instance.components.default.outputs.Output1 | proton_cfn_sanitize }}
Rendern Sie wie folgt:
# ... This-is_valid_37
-
Die folgende Referenz in einer Servicevorlage:
# ... {{ service_instance.components.default.outputs.Output2 | proton_cfn_sanitize }}
Ergebnisse mit dem folgenden Rendering-Fehler:
Illegal character(s) detected in "this::is::incorrect". Must match regex ^[a-zA-Z0-9_-]*$ or be a valid ARN
-
Die folgende Referenz in einer Servicevorlage:
# ... {{ service_instance.components.default.outputs.SomeArn | proton_cfn_sanitize }}
Rendern Sie wie folgt:
# ... arn:aws:
some-service
::123456789012:some-resource
/resource-name
Geben Sie Standardwerte für nicht vorhandene Referenzen an
Beschreibung
Der default
Filter stellt einen Standardwert bereit, wenn keine Namespace-Referenz vorhanden ist. Verwenden Sie sie, um robuste Vorlagen zu schreiben, die ohne Fehler rendern können, auch wenn der Parameter, auf den Sie verweisen, fehlt.
Die folgende Referenz in einer Servicevorlage führt dazu, dass das Rendern von Vorlagen fehlschlägt, wenn der Service-Instance keine direkt definierte (Standard-)Komponente angefügt ist oder wenn die angefügte Komponente keine Ausgabe mit dem Namen hattest
.
# ...
{{ service_instance.components.default.outputs.test }}
Um dieses Problem zu vermeiden, fügen Sie den default
Filter hinzu.
# ...
{{ service_instance.components.default.outputs.test | default("[optional-value]
") }}