Exécution de scripts à partir d'Amazon S3 - 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.

Exécution de scripts à partir d'Amazon S3

Cette section décrit le téléchargement et l'exécution de scripts à partir d'Amazon Simple Storage Service (Amazon S3). La rubrique suivante comprend des informations et une terminologie relatives à Amazon S3. Pour en savoir plus sur Amazon S3, consultez Qu’est-ce qu’Amazon S3 ? Vous pouvez exécuter différents types de scripts, notamment Ansible Playbooks, Python, Ruby, Shell et. PowerShell

Vous pouvez également télécharger un répertoire contenant plusieurs scripts. Lorsque vous exécutez le script principal dans le répertoire, tous les scripts référencés inclus dans le répertoire sont AWS Systems Manager également exécutés.

Notez les informations importantes suivantes relatives à l'exécution de scripts à partir d'Amazon S3 :

  • Systems Manager ne vérifie pas que le script est à même de s'exécuter sur un nœud. Avant de télécharger et d'exécuter le script, vérifiez que le logiciel requis est installé sur le nœud. Vous pouvez également créer un document composite qui installe le logiciel en utilisant Run Command or State Manager, intègre des outils AWS Systems Manager, puis télécharge et exécute le script.

  • Vérifiez que votre utilisateur, rôle ou groupe dispose des autorisations AWS Identity and Access Management  (IAM) nécessaires pour la lecture sur le compartiment S3.

  • Assurez-vous que le profil d'instance de vos instances Amazon Elastic Compute Cloud (Amazon EC2) possède s3:ListBucket des s3:GetObject autorisations. Si le profil d'instance ne dispose pas de ces autorisations, le système ne parvient pas à télécharger votre script à partir du compartiment S3. Pour de plus amples informations, consultez Utilisation de profils d'instance dans le Guide de l'utilisateur IAM.

Exécuter des scripts Shell à partir d'Amazon S3

Les informations suivantes incluent des procédures pour vous aider à exécuter des scripts depuis Amazon Simple Storage Service (Amazon S3) à l'aide de AWS Systems Manager la console ou AWS Command Line Interface du AWS CLI(). Bien que les scripts shell soient utilisés dans les exemples, d'autres types de scripts peuvent être remplacés.

Exécuter un script Shell depuis Amazon S3 (console)

Exécuter un script Shell à partir d'Amazon S3
  1. Ouvrez la AWS Systems Manager console à l'adresse https://console.aws.amazon.com/systems-manager/.

  2. Dans le volet de navigation, choisissez Run Command.

  3. Sélectionnez Run Command (Exécuter la commande).

  4. In the Command document (Document de commande), sélectionnez AWS-RunRemoteScript.

  5. Dans Paramètres de la commande, procédez comme suit :

    • Dans Type de source, sélectionnez S3.

    • Dans la zone de texte Source Info (Infos sur la source), saisissez les informations requises pour accéder à la source en respectant le format suivant. Remplacez chaque example resource placeholder par vos propres informations.

      Note

      Remplacez https://s3. aws-api-domainavec l'URL de votre compartiment. Vous pouvez copier l'URL de votre compartiment dans Amazon S3 sous l'onglet Objects (Objets).

      {"path":"https://s3.aws-api-domain/path to script"}

      Voici un exemple.

      {"path":"https://amzn-s3-demo-bucket.s3.us-east-2.amazonaws.com/scripts/shell/helloWorld.sh"}
    • Dans le champ Command Line (Ligne de commande), saisissez les paramètres d'exécution du script. Voici un exemple.

      helloWorld.sh argument-1 argument-2
    • (Facultatif) Dans le champ Working Directory (Répertoire de travail), saisissez le nom d'un répertoire du nœud où vous souhaitez télécharger et exécuter le script.

    • (Facultatif) Dans Execution Timeout (Délai d'exécution), précisez le nombre de secondes durant lesquelles le système doit attendre avant de mettre en échec l'exécution de la commande de script.

  6. Dans la section Targets (Cibles), sélectionnez les nœuds gérés sur lesquels vous souhaitez exécuter cette opération en spécifiant des balises, en sélectionnant des instances ou des appareils de périphérie manuellement ou en spécifiant un groupe de ressources.

    Astuce

    Si, contrairement à vos attentes, un nœud géré ne figure pas dans la liste, consultez Résolution des problèmes de disponibilité des nœuds gérés pour obtenir des conseils de dépannage.

  7. Pour Autres paramètres :

    • Pour Comment (Commentaire), saisissez des informations à propos de cette commande.

    • Pour Délai (secondes), précisez le nombre de secondes durant lesquelles le système doit attendre avant de mettre en échec l'exécution de la commande globale.

  8. Pour Rate control (Contrôle de débit) :

    • Dans Concurrency (Simultanéité), spécifiez un nombre ou un pourcentage de nœuds gérés sur lesquels exécuter simultanément la commande.

      Note

      Si vous avez sélectionné des cibles en spécifiant les balises appliquées aux nœuds gérés ou en spécifiant des groupes de ressources AWS , et que vous n'êtes pas certain du nombre de nœuds gérés ciblés, limitez le nombre de cibles autorisées à exécuter simultanément le document en indiquant un pourcentage.

    • Dans Error threshold (Seuil d'erreur), indiquez quand arrêter l'exécution de la commande sur les autres nœuds gérés après l'échec de celle-ci sur un certain nombre ou un certain pourcentage de nœuds. Si, par exemple, vous spécifiez trois erreurs, Systems Manager cesse d'envoyer la commande à la réception de la quatrième erreur. Les nœuds gérés sur lesquels la commande est toujours en cours de traitement peuvent également envoyer des erreurs.

  9. (Facultatif) Pour Output options (Options de sortie), pour enregistrer la sortie de la commande dans un fichier, cochez la case Write command output to an S3 bucket (Écrire la sortie de commande vers un compartiment S3). Saisissez les noms de compartiment et de préfixe (dossier) dans les zones.

    Note

    Les autorisations S3 qui permettent d'écrire les données dans un compartiment S3 sont celles du profil d'instance (pour les EC2 instances) ou du rôle de service IAM (machines activées de manière hybride) attribué à l'instance, et non celles de l'utilisateur IAM effectuant cette tâche. Pour plus d’informations, consultez les sections Configurer des autorisations d’instance requises pour Systems Manager et Créer un rôle de service IAM pour un environnement hybride. En outre, si le compartiment S3 spécifié se trouve dans un autre compartiment Compte AWS, assurez-vous que le profil d'instance ou le rôle de service IAM associé au nœud géré dispose des autorisations nécessaires pour écrire dans ce compartiment.

  10. Dans la section SNS notifications (Notifications SNS), si vous souhaitez envoyer des notifications sur le statut d'exécution des commandes, cochez la case Enable SNS notifications (Activer les notifications SNS).

    Pour plus d'informations sur la configuration des notifications Amazon SNS pour Run Command, voir Surveillance des changements d'état du Systems Manager à l'aide des notifications Amazon SNS.

  11. Cliquez sur Exécuter.

Exécuter un script Shell depuis Amazon S3 (ligne de commande)

  1. Installez et configurez le AWS Command Line Interface (AWS CLI), si ce n'est pas déjà fait.

    Pour de plus amples informations, consultez Installation ou mise à jour de la version la plus récente de l' AWS CLI.

  2. Exécutez la commande suivante. Remplacez chaque example resource placeholder par vos propres informations.

    Note

    Remplacez https://s3. aws-api-domain/script pathavec l'URL de votre compartiment. Vous pouvez copier l'URL de votre compartiment dans Amazon S3 sous l'onglet Objects (Objets).

    Linux & macOS
    aws ssm send-command \ --document-name "AWS-RunRemoteScript" \ --output-s3-bucket-name "bucket-name" \ --output-s3-key-prefix "key-prefix" \ --targets "Key=InstanceIds,Values=instance-id" \ --parameters '{"sourceType":["S3"],"sourceInfo":["{\"path\":\"https://s3.aws-api-domain/script path\"}"],"commandLine":["script name and arguments"]}'
    Windows
    aws ssm send-command ^ --document-name "AWS-RunRemoteScript" ^ --output-s3-bucket-name "bucket-name" ^ --output-s3-key-prefix "key-prefix" ^ --targets "Key=InstanceIds,Values=instance-id" ^ --parameters "sourceType"="S3",sourceInfo='{\"path\":\"https://s3.aws-api-domain/script path\"}',"commandLine"="script name and arguments"
    PowerShell
    Send-SSMCommand ` -DocumentName "AWS-RunRemoteScript" ` -OutputS3BucketName "bucket-name" ` -OutputS3KeyPrefix "key-prefix" ` -Target @{Key="InstanceIds";Values=@("instance-id")} ` -Parameter @{ sourceType = "S3"; sourceInfo = '{"path": "s3://bucket-name/path/to/script"}'; commandLine = "script name and arguments" }