Mappage des cibles pour une automatisation - AWS Systems Manager

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.

Mappage des cibles pour une automatisation

Utilisez le paramètre Targets afin de définir rapidement quelles ressources de votre flotte peuvent exécuter une automatisation. Par exemple, si vous souhaitez exécuter une automatisation qui redémarre vos instances gérées, au lieu de choisir manuellement des dizaines d'ID d'instance dans la console ou de les saisir dans une commande, vous pouvez cibler ces instances en spécifiant des balises Amazon Elastic Compute Cloud (Amazon EC2) avec le paramètre Targets.

Lorsque vous exécutez une automatisation qui utilise une cible, AWS Systems Manager crée une automatisation enfant pour chaque cible. Par exemple, si vous ciblez les volumes Amazon Elastic Block Store (Amazon EBS) en spécifiant des balises, et que ces balises se résolvent en 100 volumes Amazon EBS, puis Systems Manager crée 100 automatisations enfants. L'automatisation parent est terminée lorsque toutes les automatisations enfants atteignent un état final.

Note

Toutes les valeurs input parameters que vous spécifiez au moment de l'exécution (dans la section Input Parameters (Paramètres d'entrée) de la console ou à l'aide de l'option parameters de l'interface de ligne de commande) sont automatiquement traitées par toutes les automatisations.

Pour cibler des ressources pour une automatisation, vous pouvez utiliser des balises, des groupes de ressources et des valeurs des paramètres. De plus, vous pouvez utiliser l'option TargetMaps pour cibler plusieurs valeurs de paramètre à l'aide de l'interface de ligne de commande ou d'un fichier. La section suivante décrit chacune de ces options de ciblage en détail.

Ciblage d'une balise

Vous pouvez spécifier une seule balise comme cible d'une automatisation. De nombreuses ressources AWS prennent en charge les balises, par exemple les instances Amazon Elastic Compute Cloud (Amazon EC2) et Amazon Relational Database Service (Amazon RDS), les volumes et instantanés Amazon Elastic Block Store (Amazon EBS), les Resource Groups et les compartiments Amazon Simple Storage Service (Amazon S3). Vous pouvez rapidement exécuter des automatisations sur vos ressources AWS en ciblant une balise. Une balise est une paire clé-valeur, telle que Operating_System:Linux (Système_Exploitation:Linux) ou Department:Finance (Service:Finances). Si vous affectez un nom spécifique à une ressource, vous pouvez également utiliser le mot « Nom » en tant que clé et le nom de la ressource comme valeur.

Lorsque vous spécifiez une balise en tant que cible d'une automatisation, vous pouvez également spécifier un paramètre cible. Le paramètre cible utilise l'option TargetParameterName. En choisissant un paramètre cible, vous définissez le type de ressource sur lequel automatisation s'exécute. Le paramètre cible que vous spécifiez avec la balise doit être un paramètre valide défini dans le runbook. Par exemple, si vous souhaitez cibler des dizaines d'instances EC2 avec des balises, sélectionnez le paramètre cible InstanceId. En choisissant ce paramètre, vous définissez les instances comme type de ressource pour l'automatisation. Lors de la création d'un runbook personnalisé, vous devez définir le type de cible sur /AWS::EC2::Instance, de sorte que seules les instances soient utilisées. Dans le cas contraire, toutes les ressources portant la même balise seront ciblées. Lorsque vous ciblez des instances avec une balise, les instances résiliées peuvent être incluses.

La capture d'écran suivante utilise le runnbook AWS-DetachEBSVolume. Le paramètre cible logique est VolumeId.

Utilisation d'une balise comme cibles pour une automatisation de Systems Manager

Le runbook AWS-DetachEBSVolume inclut également une propriété spéciale appelée Target type (Type de cible), qui est définie sur /AWS::EC2::Volume. En d'autres termes, si la paire balise-clé Finance:TestEnv renvoie différents types de ressources (par exemple, des instances EC2, des volumes Amazon EBS, des instantanés Amazon EBS), seuls les volumes Amazon EBS sont utilisés.

Important

Les noms de paramètre cible sont sensibles à la casse. Si vous exécutez des automatisations à l'aide de l'AWS Command Line Interface (AWS CLI) ou d'AWS Tools for Windows PowerShell, vous devez saisir le nom de paramètre cible exactement tel qu'il est défini dans le runbook. Dans le cas contraire, le système renvoie une erreur InvalidAutomationExecutionParametersException. Vous pouvez utiliser l'opération d'API DescribeDocument pour consulter des informations sur les paramètres cibles disponibles dans un runbook spécifique. Voici un exemple de commande AWS CLI qui fournit des informations sur le document AWS-DeleteSnapshot.

aws ssm describe-document \ --name AWS-DeleteSnapshot

Voici quelques exemples de commandes AWS CLI qui ciblent des ressources en utilisant une balise.

Exemple 1 : ciblage d'une balise à l'aide d'une paire clé-valeur pour redémarrer les instances Amazon EC2

Cet exemple redémarre toutes les instances Amazon EC2 qui sont balisées avec la clé Department et la valeur HumanResources. Les paramètres cibles utilisent le paramètre InstanceId du runbook. L'exemple utilise un paramètre supplémentaire pour exécuter Automation à l'aide d'un rôle de service Automation (également appelé rôle responsable).

aws ssm start-automation-execution \ --document-name AWS-RestartEC2Instance \ --targets Key=tag:Department,Values=HumanResources \ --target-parameter-name InstanceId \ --parameters "AutomationAssumeRole=arn:aws:iam::111122223333:role/AutomationServiceRole"

Exemple 2 : ciblage d'une balise à l'aide d'une paire clé-valeur pour supprimer les instantanés Amazon EBS

L'exemple suivant utilise le runbook AWS-DeleteSnapshot pour supprimer tous les instantanés avec la clé Name (Nom) et la valeur January2018Backups. Le paramètre cible utilise le paramètre VolumeId.

aws ssm start-automation-execution \ --document-name AWS-DeleteSnapshot \ --targets Key=tag:Name,Values=January2018Backups \ --target-parameter-name VolumeId

Ciblage des AWS Resource Groups

Vous pouvez spécifier un seul groupe de ressources AWScomme cible d'une automatisation. Systems Manager crée une automatisation enfant pour chaque objet du groupe de ressources cible.

Par exemple, supposons que l'un de vos groupes de ressources s'appelle PatchedAMIs. Ce groupe de ressources inclut une liste de 25 Amazon Machine Images (AMIs) Windows auxquelles des correctifs sont appliqués régulièrement. Si vous exécutez une automatisation qui utilise le runbook AWS-CreateManagedWindowsInstance et ciblez ce groupe de ressources, Systems Manager crée une automatisation enfant pour chacun des 25 AMIs. Autrement dit, en ciblant le groupe de ressources PatchedAMIs, l'automatisation crée 25 instances à partir d'une liste d' corrigées AMIs. L'automatisation parent se termine lorsque toutes les automatisations enfants arrivent au terme du traitement ou atteignent un état final.

La commande AWS CLI suivante s'applique à l'exemple de groupe de ressources PatchAMIs. La commande utilise le paramètre AmiId pour l'option --target-parameter-name. Cette commande n'inclut pas d'autres paramètres pour définir le type d'instance à créer à partir de chaque AMI. Le runbook AWS-CreateManagedWindowsInstance renvoie par défaut au type d'instance t2.medium. Dans ce cas, la commande créerait donc 25 instances Amazon EC2 t2.medium pour Windows Server.

aws ssm start-automation-execution \ --document-name AWS-CreateManagedWindowsInstance \ --targets Key=ResourceGroup,Values=PatchedAMIs \ --target-parameter-name AmiId

L'exemple de console suivant utilise un groupe de ressources appelé t2-micro-instances.

Ciblage d'un groupe de ressources AWS avec une automatisation de Systems Manager

Ciblage des paramètres de valeur

Vous pouvez également cibler une valeur de paramètre. Saisissez ParameterValues comme clé, puis la valeur de ressource spécifique où vous voulez que l'automatisation soit exécutée. Si vous spécifiez plusieurs valeurs, Systems Manager exécute une automatisation sur chaque valeur spécifiée.

Par exemple, supposons que le runbook comporte un paramètre InstanceID. Si vous ciblez les valeurs du paramètre InstanceID lorsque vous exécutez l'automatisation, Systems Manager exécute une automatisation enfant pour chaque valeur d'ID d'instance spécifiée. L'automatisation parent se termine lorsque l'automatisation a exécuté chaque instance spécifiée ou si l'exécution échoue. Vous pouvez cibler un maximum de 50 valeurs de paramètre.

L'exemple suivant utilise le runbook AWS-CreateImage. Le nom du paramètre cible spécifié est InstanceId. La clé utilise ParameterValues. Les valeurs sont deux ID d'instance Amazon EC2. Cette commande crée une automatisation pour chaque instance, ce qui génère une AMI à partir de chaque instance.

aws ssm start-automation-execution --document-name AWS-CreateImage \ --target-parameter-name InstanceId \ --targets Key=ParameterValues,Values=i-02573cafcfEXAMPLE,i-0471e04240EXAMPLE
Note

AutomationAssumeRole n'est pas un paramètre valide. Ne sélectionnez pas cet élément lors de l'exécution d'automatisation qui ciblent une valeur de paramètre.

Ciblage des mappages de valeurs des paramètres

L'option TargetMaps élargit votre capacité à cibler ParameterValues. Vous pouvez entrer une liste de valeurs de paramètres en utilisant TargetMaps au niveau de la ligne de commande. Vous pouvez spécifier un maximum de 50 valeurs de paramètre dans la ligne de commande. Si vous souhaitez exécuter des commandes qui spécifient plus de 50 valeurs de paramètres, vous pouvez saisir ces valeurs dans un fichier JSON. Vous pouvez ensuite appeler ce fichier à partir de la ligne de commande.

Note

L'option TargetMaps n'est pas prise en charge dans la console.

Utilisez le format suivant pour spécifier plusieurs valeurs de paramètre en utilisant l'option TargetMaps dans une commande. Remplacez chaque example resource placeholder (espace réservé pour les ressources) avec vos propres informations.

aws ssm start-automation-execution \ --document-name runbook name \ --target-maps “parameter=value, parameter 2=value, parameter 3=value” “parameter 4=value, parameter 5=value, parameter 6=value

Si vous souhaitez saisir plus de 50 valeurs de paramètres pour l'option TargetMaps, spécifiez les valeurs dans un fichier à l'aide du format JSON suivant. L'utilisation d'un fichier JSON améliore également la lisibilité lorsque vous devez fournir plusieurs valeurs de paramètre.

[ {“parameter”: "value", “parameter 2”: "value", “parameter 3”: "value"}, {“parameter 4”: "value", “parameter 5”: "value", "parameter 6": "value"} ]

Enregistrez le fichier avec l'extension de fichier .json. Vous pouvez appeler le fichier en utilisant la commande suivante. Remplacez chaque example resource placeholder (espace réservé pour les ressources) avec vos propres informations.

aws ssm start-automation-execution \ --document-name runbook name \ –-parameters input parameters \ --target-maps path to file/file name.json

Vous pouvez également télécharger le fichier à partir d'un compartiment Amazon Simple Storage Service (Amazon S3), dans la mesure où vous avez l'autorisation de lire les données de ce compartiment. Utilisez le format de commande suivant. Remplacez chaque example resource placeholder (espace réservé pour les ressources) avec vos propres informations.

aws ssm start-automation-execution \ --document-name runbook name \ --target-maps http://amzn-s3-demo-bucket.s3.amazonaws.com/file_name.json

Voici un exemple de scénario qui peut vous aider à comprendre l'option TargetMaps. Dans ce scénario, un utilisateur souhaite créer des instances Amazon EC2 de différents types à partir d'AMIs distinctes. Pour exécuter cette tâche, l'utilisateur crée un runbook nommé AMI_Testing. Ce runbook définit deux paramètres d'entrée : instanceType et imageId.

{ "description": "AMI Testing", "schemaVersion": "0.3", "assumeRole": "{{assumeRole}}", "parameters": { "assumeRole": { "type": "String", "description": "Role under which to run the automation", "default": "" }, "instanceType": { "type": "String", "description": "Type of EC2 Instance to launch for this test" }, "imageId": { "type": "String", "description": "Source AMI id from which to run instance" } }, "mainSteps": [ { "name": "runInstances", "action": "aws:runInstances", "maxAttempts": 1, "onFailure": "Abort", "inputs": { "ImageId": "{{imageId}}", "InstanceType": "{{instanceType}}", "MinInstanceCount": 1, "MaxInstanceCount": 1 } } ], "outputs": [ "runInstances.InstanceIds" ] }

L'utilisateur spécifie ensuite les valeurs de paramètres cibles suivantes dans un fichier nommé AMI_instance_types.json.

[ { "instanceType" : ["t2.micro"], "imageId" : ["ami-b70554c8"] }, { "instanceType" : ["t2.small"], "imageId" : ["ami-b70554c8"] }, { "instanceType" : ["t2.medium"], "imageId" : ["ami-cfe4b2b0"] }, { "instanceType" : ["t2.medium"], "imageId" : ["ami-cfe4b2b0"] }, { "instanceType" : ["t2.medium"], "imageId" : ["ami-cfe4b2b0"] } ]

L'utilisateur peut exécuter l'automatisation et créer les cinq instances EC2 définies dans AMI_instance_types.json en exécutant la commande suivante.

aws ssm start-automation-execution \ --document-name AMI_Testing \ --target-parameter-name imageId \ --target-maps file:///home/TestUser/workspace/runinstances/AMI_instance_types.json

Ciblage de toutes les instances Amazon EC2

Vous pouvez exécuter une automatisation sur toutes les instances Amazon EC2 de l'Compte AWS et de l'Région AWS actuels, en sélectionnant Toutes les instances dans la liste Cibles. Par exemple, si vous souhaitez redémarrer toutes les instances Amazon EC2 de votre Compte AWS dans l'Région AWS actuelle, vous pouvez choisir le runbook AWS-RestartEC2Instance, puis sélectionner Toutes les instances dans la liste des Cibles.

Ciblage de toutes les instances Amazon EC2 d'un runbook

Après que vous avez choisi All instances (Toutes les instances), Systems Manager remplit le champ Instance avec un astérisque (*) et empêche la modification de ce champ (qui est alors grisé). Systems Manager empêche également la modification du champ InstanceId dans le champ Input parameters (Paramètres d'entrée). Rendre ces champs indisponibles pour empêcher leur modification est le comportement attendu si vous choisissez de cibler toutes les instances.