Filtres de paramètres pour les fichiers CloudFormation IaC - AWS Proton

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Filtres de paramètres pour les fichiers CloudFormation IaC

Lorsque vous faites référence à des AWS Proton paramètres dans vos fichiers AWS CloudFormation iAc, vous pouvez utiliser des modificateurs Jinja appelés filtres pour valider, filtrer et formater les valeurs des paramètres avant qu'elles ne soient insérées dans le modèle de rendu. Les validations de filtres sont particulièrement utiles lorsqu'il s'agit de faire référence aux paramètres de sortie des composants, car la création et l'attachement des composants sont effectués par les développeurs, et un administrateur utilisant les sorties des composants dans un modèle d'instance de service peut souhaiter vérifier leur existence et leur validité. Cependant, vous pouvez utiliser des filtres dans n'importe quel fichier Jinja iAc.

Les sections suivantes décrivent et définissent les filtres de paramètres disponibles, et fournissent des exemples. AWS Proton définit la plupart de ces filtres. Le default filtre est un filtre intégré à Jinja.

Formater les propriétés de l'environnement pour les tâches Amazon ECS

Déclaration

dict → proton_cfn_ecs_task_definition_formatted_env_vars (raw: boolean = True) → YAML list of dicts

Description

Ce filtre met en forme une liste de sorties à utiliser dans une propriété d'environnement dans la ContainerDefinition section d'une définition de tâche Amazon Elastic Container Service (Amazon ECS).

Définissez raw sur False pour valider également la valeur du paramètre. Dans ce cas, la valeur doit correspondre à l'expression régulière^[a-zA-Z0-9_-]*$. Si la valeur échoue à cette validation, le rendu du modèle échoue.

Avec le modèle de composant personnalisé suivant :

Resources: # ... Outputs: Output1: Description: "Example component output 1" Value: hello Output2: Description: "Example component output 2" Value: world

Et le modèle de service suivant :

Resources: TaskDefinition: Type: AWS::ECS::TaskDefinition Properties: # ... ContainerDefinitions: - Name: MyServiceName # ... Environment: {{ service_instance.components.default.outputs | proton_cfn_ecs_task_definition_formatted_env_vars }}

Le modèle de service rendu est le suivant :

Resources: TaskDefinition: Type: AWS::ECS::TaskDefinition Properties: # ... ContainerDefinitions: - Name: MyServiceName # ... Environment: - Name: Output1 Value: hello - Name: Output2 Value: world

Propriétés de l'environnement de formatage pour les fonctions Lambda

Déclaration

dict → proton_cfn_lambda_function_formatted_env_vars (raw: boolean = True) → YAML dict

Description

Ce filtre met en forme une liste de sorties à utiliser dans une propriété d'environnement dans la Properties section de définition d'une AWS Lambda fonction.

Définissez raw sur False pour valider également la valeur du paramètre. Dans ce cas, la valeur doit correspondre à l'expression régulière^[a-zA-Z0-9_-]*$. Si la valeur échoue à cette validation, le rendu du modèle échoue.

Avec le modèle de composant personnalisé suivant :

Resources: # ... Outputs: Output1: Description: "Example component output 1" Value: hello Output2: Description: "Example component output 2" Value: world

Et le modèle de service suivant :

Resources: Lambda: Type: AWS::Lambda::Function Properties: Environment: Variables: {{ service_instance.components.default.outputs | proton_cfn_lambda_function_formatted_env_vars }}

Le modèle de service rendu est le suivant :

Resources: Lambda: Type: AWS::Lambda::Function Properties: Environment: Variables: Output1: hello Output2: world

Extraire les ARN de la politique IAM à inclure dans les rôles IAM

Déclaration

dict → proton_cfn_iam_policy_arns → YAML list

Description

Ce filtre met en forme une liste de sorties à utiliser dans une ManagedPolicyArns propriété dans la Properties section de définition d'un rôle AWS Identity and Access Management (IAM). Le filtre utilise l'expression régulière ^arn:[a-zA-Z-]+:iam::\d{12}:policy/ pour extraire les ARN de politique IAM valides de la liste des paramètres de sortie. Vous pouvez utiliser ce filtre pour ajouter des politiques dans les valeurs des paramètres de sortie à une définition de rôle IAM dans un modèle de service.

Avec le modèle de composant personnalisé suivant :

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

Et le modèle de service suivant :

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: # ...

Le modèle de service rendu est le suivant :

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: # ...

Nettoyez les valeurs des propriétés

Déclaration

string → proton_cfn_sanitize → string

Description

Il s'agit d'un filtre à usage général. Utilisez-le pour valider la sécurité d'une valeur de paramètre. Le filtre vérifie que la valeur correspond à l'expression régulière ^[a-zA-Z0-9_-]*$ ou qu'il s'agit d'un Amazon Resource Name (ARN) valide. Si la valeur échoue à cette validation, le rendu du modèle échoue.

Avec le modèle de composant personnalisé suivant :

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
  • La référence suivante dans un modèle de service :

    # ... {{ service_instance.components.default.outputs.Output1 | proton_cfn_sanitize }}

    S'affiche comme suit :

    # ... This-is_valid_37
  • La référence suivante dans un modèle de service :

    # ... {{ service_instance.components.default.outputs.Output2 | proton_cfn_sanitize }}

    Résultats avec l'erreur de rendu suivante :

    Illegal character(s) detected in "this::is::incorrect". Must match regex ^[a-zA-Z0-9_-]*$ or be a valid ARN
  • La référence suivante dans un modèle de service :

    # ... {{ service_instance.components.default.outputs.SomeArn | proton_cfn_sanitize }}

    S'affiche comme suit :

    # ... arn:aws:some-service::123456789012:some-resource/resource-name

Fournir des valeurs par défaut pour les références inexistantes

Description

Le default filtre fournit une valeur par défaut lorsqu'il n'existe aucune référence à un espace de noms. Utilisez-le pour écrire des modèles robustes qui peuvent être rendus sans échec même lorsque le paramètre auquel vous faites référence est manquant.

La référence suivante dans un modèle de service entraîne l'échec du rendu du modèle si l'instance de service n'a pas de composant directement défini (par défaut) attaché, ou si le composant attaché n'a pas de sortie nomméetest.

# ... {{ service_instance.components.default.outputs.test }}

Pour éviter ce problème, ajoutez le default filtre.

# ... {{ service_instance.components.default.outputs.test | default("[optional-value]") }}