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 in Ihren AWS CloudFormation IaC-Dateien auf AWS Proton Parameter verweisen, können Sie Jinja-Modifikatoren, sogenannte Filter, verwenden, um Parameterwerte zu überprüfen, zu filtern und zu formatieren, bevor sie in die gerenderte Vorlage eingefügt werden. Filtervalidierungen sind besonders nützlich, wenn auf Ausgabeparameter von Komponenten verwiesen wird, da die Erstellung und das Anhängen von Komponenten von Entwicklern vorgenommen werden und ein Administrator, der Komponentenausgaben in einer Service-Instanzvorlage verwendet, möglicherweise deren Existenz und Gültigkeit überprüfen möchte. Sie können jedoch Filter in jeder Jinja-IaC-Datei verwenden.
In den folgenden Abschnitten werden die verfügbaren Parameterfilter beschrieben und definiert und es werden Beispiele bereitgestellt. AWS Proton definiert die meisten dieser Filter. Der default
Filter ist ein eingebauter Jinja-Filter.
Umgebungseigenschaften für Amazon ECS-Aufgaben formatieren
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 Environment-Eigenschaft im ContainerDefinition
Abschnitt einer Amazon Elastic Container Service (Amazon ECS) -Aufgabendefinition verwendet werden sollen.
Wird raw
auf gesetztFalse
, um auch den Parameterwert zu überprüfen. In diesem Fall muss der Wert mit dem regulären Ausdruck übereinstimmen^[a-zA-Z0-9_-]*$
. Wenn der Wert diese Überprüfung 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 Vorlage für den gerenderten Dienst sieht wie folgt aus:
Resources:
TaskDefinition:
Type: AWS::ECS::TaskDefinition
Properties:
# ...
ContainerDefinitions:
- Name: MyServiceName
# ...
Environment:
- Name: Output1
Value: hello
- Name: Output2
Value: world
Formatieren Sie 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 Environment-Eigenschaft im Properties
Abschnitt einer AWS Lambda Funktionsdefinition verwendet werden sollen.
Wird raw
auf gesetztFalse
, um auch den Parameterwert zu überprüfen. In diesem Fall muss der Wert mit dem regulären Ausdruck übereinstimmen^[a-zA-Z0-9_-]*$
. Wenn der Wert diese Überprüfung 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 Vorlage für den gerenderten Dienst sieht wie folgt aus:
Resources:
Lambda:
Type: AWS::Lambda::Function
Properties:
Environment:
Variables:
Output1: hello
Output2: world
Extrahieren Sie die IAM-Richtlinie ARNs , um sie in IAM-Rollen aufzunehmen
Erklärung
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 eine gültige IAM-Richtlinie ARNs aus der Liste der Ausgabeparameter zu extrahieren. Sie können diesen Filter verwenden, um Richtlinien in Ausgabeparameterwerten an eine IAM-Rollendefinition in einer Dienstvorlage 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 Vorlage für den gerenderten Dienst sieht wie folgt aus:
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:
# ...
Desinfizieren Sie die Immobilienwerte
Erklärung
string → proton_cfn_sanitize → string
Beschreibung
Dies ist ein Allzweckfilter. Verwenden Sie ihn, um die Sicherheit eines Parameterwerts zu überprüfen. Der Filter überprüft, ob der Wert entweder dem regulären Ausdruck entspricht ^[a-zA-Z0-9_-]*$
oder ob es sich um einen gültigen Amazon-Ressourcennamen (ARN) handelt. Wenn der Wert diese Überprüfung 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 Dienstvorlage:
# ... {{ service_instance.components.default.outputs.Output1 | proton_cfn_sanitize }}
Wird wie folgt gerendert:
# ... This-is_valid_37
-
Die folgende Referenz in einer Dienstvorlage:
# ... {{ service_instance.components.default.outputs.Output2 | proton_cfn_sanitize }}
Ergebnisse mit dem folgenden Renderfehler:
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 Dienstvorlage:
# ... {{ service_instance.components.default.outputs.SomeArn | proton_cfn_sanitize }}
Wird wie folgt gerendert:
# ... arn:aws:
some-service
::123456789012:some-resource
/resource-name
Geben Sie Standardwerte für nicht existierende Verweise an
Beschreibung
Der default
Filter stellt einen Standardwert bereit, wenn kein Namespace-Verweis vorhanden ist. Verwenden Sie ihn, um robuste Vorlagen zu schreiben, die auch dann fehlerfrei gerendert werden können, wenn der Parameter, auf den Sie verweisen, fehlt.
Der folgende Verweis in einer Dienstvorlage führt dazu, dass das Rendern von Vorlagen fehlschlägt, wenn der Dienstinstanz keine direkt definierte (Standard-) Komponente angehängt ist oder wenn die angehängte 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]
") }}