Parameterfilter für CloudFormation IaC-Dateien - AWS Proton

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