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