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.
Utiliser des variables dans votre document de composant personnalisé
Les variables permettent d'étiqueter les données avec des noms significatifs qui peuvent être utilisés dans l'ensemble d'une application. Vous pouvez définir des variables personnalisées avec des formats simples et lisibles pour les flux de travail complexes, et les référencer dans le document du composant d'application YAML correspondant à un AWSTOE composant.
Cette section fournit des informations pour vous aider à définir les variables de votre AWSTOE composant dans le document du composant d'application YAML, notamment la syntaxe, les contraintes de nom et des exemples.
Constantes
Les constantes sont des variables immuables qui ne peuvent pas être modifiées ou remplacées une fois définies. Les constantes peuvent être définies à l'aide des valeurs figurant dans la constants section d'un AWSTOE document.
Règles pour les noms de constantes
Le nom doit comporter entre 3 et 128 caractères.
Le nom ne peut contenir que des caractères alphanumériques (a-z, 0-9) A-Z, des tirets (-) ou des traits de soulignement (_).
Le nom doit être unique dans le document.
Le nom doit être spécifié sous forme de chaîne YAML.
Syntaxe
constants: - <name>: type: <constant type> value: <constant value>
| Nom de la touche | Obligatoire | Description |
|---|---|---|
|
|
Oui |
Nom de la constante. Doit être unique pour le document (il ne doit pas être identique aux autres noms de paramètres ou constantes). |
|
Oui | Valeur de la constante. |
|
Oui | Type de constante. Le type pris en charge eststring. |
Valeurs constantes de référence dans un document
Vous pouvez référencer des constantes dans les entrées d'étape ou de boucle dans votre document YAML, comme suit :
-
Les références constantes distinguent les majuscules et minuscules, et le nom doit correspondre exactement.
-
Le nom doit être placé entre accolades
{{MyConstant}}doubles. -
Les espaces sont autorisés à l'intérieur des bretelles et sont automatiquement découpés. Par exemple, toutes les références suivantes sont valides :
{{,MyConstant}}{{,MyConstant}}{{,MyConstant}}{{MyConstant}} -
La référence dans le document YAML doit être spécifiée sous forme de chaîne (entre guillemets simples ou doubles).
Par exemple : n'
- {{est pas valide, car il n'est pas identifié comme une chaîne.MyConstant}}Toutefois, les références suivantes sont toutes deux valides :
- '{{etMyConstant}}'- "{{.MyConstant}}"
Exemples
Constante référencée dans les entrées d'étape
name: Download AWS CLI version 2 schemaVersion: 1.0 constants: - Source: type: string value: https://awscli.amazonaws.com/AWSCLIV2.msi phases: - name: build steps: - name: Download action: WebDownload inputs: - source: '{{ Source }}' destination: 'C:\Windows\Temp\AWSCLIV2.msi'
Constante référencée dans les entrées de boucle
name: PingHosts schemaVersion: 1.0 constants: - Hosts: type: string value: 127.0.0.1,amazon.com phases: - name: build steps: - name: Ping action: ExecuteBash loop: forEach: list: '{{ Hosts }}' delimiter: ',' inputs: commands: - ping -c 4 {{ loop.value }}
Parameters
Les paramètres sont des variables mutables, avec des paramètres que l'application appelante peut fournir au moment de l'exécution. Vous pouvez définir des paramètres dans la Parameters section du document YAML.
Règles relatives aux noms de paramètres
Le nom doit comporter entre 3 et 128 caractères.
Le nom ne peut contenir que des caractères alphanumériques (a-z, 0-9) A-Z, des tirets (-) ou des traits de soulignement (_).
Le nom doit être unique dans le document.
Le nom doit être spécifié sous forme de chaîne YAML.
Syntaxe
parameters: - <name>: type: <parameter type> default: <parameter value> description: <parameter description>
Nom de la touche |
Obligatoire |
Description |
|---|---|---|
|
Oui |
Nom du paramètre. Doit être unique pour le document (il ne doit pas être identique aux autres noms de paramètres ou constantes). |
|
Oui |
Type de données du paramètre. Les types pris en charge incluent : |
|
Non |
La valeur par défaut du paramètre. |
|
Non |
Décrit le paramètre. |
Valeurs des paramètres de référence dans un document
Vous pouvez référencer des paramètres dans des entrées par étapes ou en boucle dans votre document YAML, comme suit :
-
Les références aux paramètres distinguent les majuscules et minuscules, et le nom doit correspondre exactement.
-
Le nom doit être placé entre accolades
{{MyParameter}}doubles. -
Les espaces sont autorisés à l'intérieur des bretelles et sont automatiquement découpés. Par exemple, toutes les références suivantes sont valides :
{{,MyParameter}}{{,MyParameter}}{{,MyParameter}}{{MyParameter}} -
La référence dans le document YAML doit être spécifiée sous forme de chaîne (entre guillemets simples ou doubles).
Par exemple : n'
- {{est pas valide, car il n'est pas identifié comme une chaîne.MyParameter}}Toutefois, les références suivantes sont toutes deux valides :
- '{{etMyParameter}}'- "{{.MyParameter}}"
Exemples
Les exemples suivants montrent comment utiliser des paramètres dans votre document YAML :
-
Référez-vous à un paramètre dans les entrées d'étape :
name: Download AWS CLI version 2 schemaVersion: 1.0 parameters: - Source: type: string default: 'https://awscli.amazonaws.com/AWSCLIV2.msi' description: The AWS CLI installer source URL. phases: - name: build steps: - name: Download action: WebDownload inputs: - source: '{{ Source }}' destination: 'C:\Windows\Temp\AWSCLIV2.msi' -
Référez-vous à un paramètre dans les entrées de boucle :
name: PingHosts schemaVersion: 1.0 parameters: - Hosts: type: string default: 127.0.0.1,amazon.com description: A comma separated list of hosts to ping. phases: - name: build steps: - name: Ping action: ExecuteBash loop: forEach: list: '{{ Hosts }}' delimiter: ',' inputs: commands: - ping -c 4 {{ loop.value }}
Remplacer les paramètres lors de l'exécution
Vous pouvez utiliser l'--parametersoption AWS CLI avec une paire clé-valeur pour définir une valeur de paramètre lors de l'exécution.
<value>Spécifiez la paire clé-valeur du paramètre sous forme de nom et de valeur, séparés par un signe égal (<name>=).
Les paramètres multiples doivent être séparés par une virgule.
Les noms de paramètres introuvables dans le document du composant YAML sont ignorés.
Le nom et la valeur du paramètre sont tous deux obligatoires.
Important
Les paramètres des composants sont des valeurs en texte brut et sont connectés AWS CloudTrail. Nous vous recommandons d'utiliser AWS Secrets Manager le AWS Systems Manager Parameter Store pour stocker vos secrets. Pour plus d'informations sur Secrets Manager, voir Qu'est-ce que Secrets Manager ? dans le guide de AWS Secrets Manager l'utilisateur. Pour plus d'informations sur AWS Systems Manager Parameter Store, voir AWS Systems Manager Parameter Store dans le guide de AWS Systems Manager l'utilisateur.
Syntaxe
--parametersname1=value1,name2=value2...
Option CLI |
Obligatoire |
Description |
|---|---|---|
--paramètres |
Non |
Cette option prend une liste de paires clé-valeur, avec le nom du paramètre comme clé. |
Exemples
Les exemples suivants montrent comment utiliser des paramètres dans votre document YAML :
-
La paire clé-valeur du paramètre spécifiée dans cette
--parameteroption n'est pas valide :--parameters ntp-server= -
Définissez une paire clé-valeur de paramètre avec l'
--parameteroption dans le champ : AWS CLI--parameters ntp-server=ntp-server-windows-qe.us-east1.amazon.com -
Définissez plusieurs paires clé-valeur de paramètres à l'aide de l'
--parameteroption suivante : AWS CLI--parameters ntp-server=ntp-server.amazon.com,http-url=https://internal-us-east1.amazon.com
Utiliser les paramètres du magasin de paramètres de Systems Manager
Vous pouvez référencer les AWS Systems Manager paramètres du magasin de paramètres (paramètres SSM) dans les documents de vos composants en préfixant les variables par. aws:ssm Par exemple,
{{ aws:ssm:/my/param }}se résout à la valeur du paramètre /my/param SSM.
Cette fonctionnalité prend en charge les types de paramètres SSM suivants :
-
Chaîne — Correspond au type de AWSTOE chaîne.
-
StringList — Correspond au AWSTOE
stringListtype. -
SecureString — Correspond au type de AWSTOE chaîne.
Pour plus d'informations sur le magasin de paramètres, voir AWS Systems Manager Parameter Store dans le guide de AWS Systems Manager l'utilisateur.
Vous pouvez également référencer des AWS Secrets Manager secrets à l'aide d'un paramètre SecureString SSM. Par exemple : {{ aws:ssm:/aws/reference/secretsmanager/test/test-secret }}. Pour plus d'informations, consultez la section Référencement de AWS Secrets Manager secrets à partir des paramètres du Parameter Store.
Important
Image Builder exclut la résolution des SecureString paramètres de ses journaux. Cependant, vous devez également vous assurer que les informations sensibles ne sont pas enregistrées par le biais des commandes émises dans le document du composant. Par exemple, si vous utilisez la echo commande avec une chaîne sécurisée, la commande écrit une valeur en texte brut dans le journal.
Autorisations IAM requises
Pour utiliser les paramètres de Systems Manager dans vos composants, votre rôle d'instance doit disposer de l'ssm:GetParameterautorisation pour l'ARN de la ressource de paramètres. Par exemple :
Pour accéder aux valeurs chiffrées, vous devez également disposer des autorisations suivantes :
-
Ajoutez
kms:DecryptdesSecureStringparamètres ou AWS Secrets Manager des valeurs chiffrés gérés par un client AWS KMS key. -
Ajoutez
secretsmanager:GetSecretValuesi vous faites référence à un secret du Secrets Manager.
Référencer un paramètre SSM dans un document de composant
L'exemple suivant montre comment faire référence à un paramètre de magasin de paramètres de Systems Manager dans un composant :
name: UseSSMParameterVariable description: This is a sample component document that prints out the value of an SSM Parameter. Never do this for a SecureString parameter. schemaVersion: 1.0 phases: - name: verify steps: - name: EchoParameterValue action: ExecuteBash inputs: commands: - echo "Log SSM parameter name:/my/test/param, value {{ aws:ssm:/my/test/param}}."
Résolution des variables d'exécution dynamiques pour les paramètres SSM
AWSTOE fournit la fonction intégrée suivante que vous pouvez utiliser dans les références de variables pour manipuler ou transformer des valeurs lors de l'exécution.
fonction de résolution
La resolve fonction résout une référence de variable à l'intérieur d'une autre référence de variable, permettant le référencement dynamique des noms de variables. Cela est utile lorsque vous travaillez avec des paramètres SSM où une partie du chemin du paramètre peut être variable et transmise en tant que paramètre de document.
La resolve fonction prend uniquement en charge la résolution dynamique de la partie du nom d'un paramètre SSM.
Syntaxe
dynamic_variableDans l'exemple suivant, le nom d'un paramètre SSM doit être l'un des suivants :
-
Une référence de paramètre SSM (par exemple,
aws:ssm:)/my/param -
Une référence aux paramètres d'un document de composant (par exemple,
)parameter-name
{{ aws:ssm:resolve(dynamic_variable) }}
Exemple : résolution d'un paramètre SSM lors de l'exécution
L'exemple suivant montre comment utiliser la resolve fonction dans un document de composant YAML :
name: SsmParameterTest description: This component verifies an SSM parameter variable reference with the echo command. schemaVersion: 1.0 parameters: - parameter-name: type: string description: "test" phases: - name: validate steps: - name: PrintDynamicVariable action: ExecuteBash inputs: commands: - echo "{{ aws:ssm:resolve(parameter-name) }}"
Utiliser des variables d'environnement
AWSTOE peut résoudre les variables d'environnement du système d'exploitation définies sur l'instance de build ou de test. Pour référencer une variable d'environnement, préfixez le nom de la variable avecenv:. Par exemple, {{ env: résout la valeur de la variable d'MY_VAR }}MY_VARenvironnement sur l'instance.
AWSTOE correspond exactement aux noms des variables d'environnement. Un nom peut contenir tous les caractères valides pour le système d'exploitation, notamment des points, des espaces et des parenthèses. Par exemple, {{ env:ProgramFiles(x86) }} est une référence valide sous Windows.
L'exemple suivant montre comment référencer une variable d'environnement dans un composant :
name: UseEnvironmentVariable description: This sample component prints out the value of an environment variable. schemaVersion: 1.0 phases: - name: build steps: - name: EchoEnvironmentVariable action: ExecuteBash inputs: commands: - echo "The value of SOME_VAR is {{ env:SOME_VAR}}."
Variables d'environnement fournies par Image Builder
Lorsqu'Image Builder exécute un composant sur une instance de build ou de test, il définit des variables d'environnement qui décrivent la génération d'image actuelle. Vos composants lisent ces valeurs avec le préfixe de AWSTOE
env: variable décrit plus haut dans cette rubrique.
Image Builder fournit les variables d'environnement suivantes.
Nom |
Description |
|---|---|
|
ID de l'exécution du flux de travail pour la génération d'image en cours. |
|
ID de l'exécution de l'étape du flux de travail qui exécute le composant. |
|
Le nom de ressource Amazon (ARN) de la version de création d'image créée par Image Builder. |
|
L'ARN du pipeline d'images. Cette valeur est une chaîne vide lorsque le build ne s'exécute pas à partir d'un pipeline. |
|
L'étape de création de l'image en Cette étape est distincte des phases du document AWSTOE composant ( |
|
Version sémantique de l'image (par exemple, |
|
Le numéro de version de compilation de l'image (par exemple, |
L'exemple suivant montre comment lire les variables d'environnement Image Builder dans un composant :
name: UseImageBuilderEnvironmentVariables description: This sample component prints out Image Builder environment variable values. schemaVersion: 1.0 phases: - name: build steps: - name: EchoImageBuildValues action: ExecuteBash inputs: commands: - echo "Image phase: {{ env:IMAGE_PHASE }}." - echo "Image build version ARN: {{ env:IMAGE_BUILD_VERSION_ARN }}."
Utiliser des variables de métadonnées d'instance (IMDS)
AWSTOE peut résoudre les valeurs issues du service de métadonnées d'instance Amazon EC2 (IMDS) lors de la création ou de l'instance de test. Pour référencer une valeur de métadonnées, préfixez le chemin des métadonnées avecaws:imds:. Le chemin est relatif à la meta-data/ catégorie de métadonnées de l'instance. Par exemple, {{ aws:imds:instance-id }} résout l'ID de l'instance. La référence se {{ aws:imds:placement/region }} résout en Région AWS.
Chemins de métadonnées non pris en charge
AWSTOE ne prend pas en charge les chemins de identity-credentials/ métadonnées iam/ et. Ces chemins renvoient des données d'identification sensibles. AWSTOE rejette les références à ces derniers lorsqu'il valide le document du composant.
Pour plus d'informations sur les métadonnées d'instance, consultez la section Utiliser les métadonnées d'instance pour gérer votre instance EC2 dans le guide de l'utilisateur Amazon EC2.
L'exemple suivant montre comment référencer une valeur IMDS dans un composant :
name: UseInstanceMetadataVariable description: This sample component prints out the instance ID from IMDS. schemaVersion: 1.0 phases: - name: build steps: - name: EchoInstanceId action: ExecuteBash inputs: commands: - echo "The instance ID is {{ aws:imds:instance-id }}."
Utiliser des variables de contexte
AWSTOE fournit des variables de contexte qui décrivent l'exécution et l'instance en cours. Pour référencer une variable de contexte, préfixez la clé aveccontext:. Par exemple, {{ context:accountId }} correspond à l'identifiant du AWS compte.
AWSTOE fournit les variables de contexte suivantes.
Clé |
Description |
|---|---|
|
ID de l' AWSTOE exécution en cours. |
|
L'ID du AWS compte sur lequel l'instance est exécutée. |
|
Le dans Région AWS lequel l'instance s'exécute. |
|
La plate-forme du système d'exploitation de l'instance (par exemple, |
|
Le nom du système d'exploitation (par exemple, |
|
Version du système d'exploitation (par exemple, |
|
La date actuelle en UTC, au |
|
La date et l'heure actuelles en UTC, au format RFC 3339 (par exemple, |
|
Un UUID de version 4 généré aléatoirement. |
|
Le nom d'hôte de l'instance. |
|
Nom de la phase en cours d'exécution. |
|
Nom de l'étape en cours d'exécution. |
Note
Pour obtenir l'ID d'instance, utilisez la variable IMDS {{ aws:imds:instance-id }} plutôt qu'une variable de contexte.
L'exemple suivant montre comment référencer des variables de contexte dans un composant :
name: UseContextVariables description: This sample component prints out context variable values. schemaVersion: 1.0 phases: - name: build steps: - name: EchoContextValues action: ExecuteBash inputs: commands: - echo "Account: {{ context:accountId }}, OS: {{ context:osName }}."