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