Mise à jour des AMIs - 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.

Mise à jour des AMIs

Les didacticiels suivants expliquent comment mettre à jour Amazon Machine Image (AMIs) pour inclure les derniers correctifs.

Mettre à jour une AMI Linux (AWS CLI)

Cette procédure AWS Systems Manager d'automatisation explique comment utiliser le runbook AWS Command Line Interface (AWS CLI) et le AWS-UpdateLinuxAmi runbook Systems Manager pour patcher automatiquement un Linux Amazon Machine Image (AMI) avec les dernières versions des packages que vous spécifiez. L'automatisation est une capacité de AWS Systems Manager. Le runbook AWS-UpdateLinuxAmi automatise aussi l'installation de packages et configurations supplémentaires propres aux sites. Vous pouvez mettre à jour diverses distributions Linux à l'aide de cette procédure pas à pasUbuntu Server, notamment CentOS, RHEL, SLES ou Amazon Linux. AMIs Pour obtenir la liste complète des versions Linux prises en charge, consultez Patch Manager Conditions préalables de la  .

Le runbook AWS-UpdateLinuxAmi vous permet d'automatiser les tâches de maintenance d'images sans devoir créer de runbook en JSON ou YAML. Vous pouvez utiliser le runbook AWS-UpdateLinuxAmi pour effectuer les types de tâche suivants.

  • Mettez à niveau tous les packages de distribution et les logiciels Amazon sur un système d'exploitation Amazon Linux Red Hat Enterprise LinuxUbuntu Server, SLES ou Cent Amazon Machine Image (AMI). Il s'agit du comportement du runbook par défaut.

  • Effectuez l'installation AWS Systems Manager SSM Agent sur une image existante pour activer les fonctionnalités de Systems Manager, telles que l'exécution de commandes à distance AWS Systems Manager Run Command ou la collecte d'un inventaire logiciel à l'aide d'Inventory.

  • Installer des packages logiciels supplémentaires

Avant de commencer

Avant de commencer à travailler avec des runbooks, configurez les rôles et, éventuellement, EventBridge pour Automation. Pour plus d’informations, consultez Configuration d'Automation. Cette procédure pas à pas nécessite également que vous spécifiiez le nom d'un profil d'instance AWS Identity and Access Management (IAM). Pour plus d'informations sur la création d'un profil d'instance IAM, consultez Configurer les autorisations d'instance requises pour Systems Manager.

Le runbook AWS-UpdateLinuxAmi accepte les paramètres d'entrée suivants.

Paramètre Type Description

SourceAmiId

Chaîne

(Obligatoire) L'ID d'AMI source. Vous pouvez référencer automatiquement le dernier identifiant d'un Amazon EC2 AMI pour Linux à l'aide d'un paramètre AWS Systems Manager Parameter Store public. Pour plus d'informations, consultez la section Rechercher les derniers AMI identifiants Amazon Linux à l'aide de AWS Systems ManagerParameter Store.

IamInstanceProfileName

Chaîne

(Obligatoire) Nom du rôle de profil d'instance IAM que vous avez créé dans Configure les autorisations d'instance requises pour Systems Manager. Le rôle de profil d'instance autorise Automation à effectuer des actions sur vos instances, comme l'exécution de commandes, ou le démarrage ou l'arrêt de services. Le runbook utilise uniquement le nom du rôle de profil d'instance.

AutomationAssumeRôle

Chaîne

(Obligatoire) Le nom du rôle de service IAM que vous avez créé dans Configuration d'Automation. Le rôle de service (également appelé rôle de responsable) accorde à Automation l'autorisation d'assumer votre rôle IAM et d'exécuter des actions en votre nom. Par exemple, le rôle de service autorise Automation à créer une nouvelle AMI lors de l'exécution de l'action aws:createImage dans un runbook. Pour ce paramètre, l'ARN complet doit être spécifié.

TargetAmiNom

Chaîne

(Facultatif) Nom de la nouvelle AMI une fois celle-ci créée. Le nom par défaut est une chaîne générée par le système qui inclut l'ID de l'AMI source, et les date et heure de création.

InstanceType

Chaîne

(Facultatif) Type d'instance à lancer en tant qu'hôte d'espace de travail. Les types d'instances varient selon la région. La type par défaut est t2.micro.

PreUpdateScénario

Chaîne

(Facultatif) URL d'un script à exécuter avant l'application des mises à jour. La valeur par défaut (\"none\") consiste à ne pas exécuter de script.

PostUpdateScénario

Chaîne

(Facultatif) URL d'un script à exécuter après l'application des mises à jour de package. La valeur par défaut (\"none\") consiste à ne pas exécuter de script.

IncludePackages

Chaîne

(Facultatif) Mettre à jour uniquement ces packages nommés. Par défaut (\"all\"), toutes les mises à jour disponibles sont appliquées.

ExcludePackages

Chaîne

(Facultatif) Noms des packages spécifiques à exclure des mises à jour, sous toutes les conditions. Par défaut (\"none\"), aucun package n'est exclu.

Étapes d'Automation

Le runbook AWS-UpdateLinuxAmi inclut les étapes suivantes par défaut.

Étape 1 : launchInstance (action aws:runInstances)

Cette étape lance une instance à l'aide de données utilisateur Amazon Elastic Compute Cloud (Amazon EC2) et d'un rôle de profil d'instance IAM. User data installe le SSM Agent approprié selon le système d'exploitation. L'installation de SSM Agent vous permet d'utiliser des fonctionnalités de Systems Manager comme Run Command, State Manager et Inventory.

Étape 2 : updateOSSoftware (action aws:runCommand)

Cette étape exécute les commandes suivantes sur l'instance lancée :

  • Télécharge un script de mise à jour à partir d'Amazon Simple Storage Service (Amazon S3).

  • Exécution d'un script de pré-mise à jour facultatif.

  • Mise à jour des packages de distribution et des logiciels Amazon.

  • Exécution d'un script de post-mise à jour facultatif.

Le journal d'exécution est stocké dans le dossier /tmp pour que l'utilisateur puisse le consulter ultérieurement.

Si vous souhaitez mettre à niveau un ensemble de packages spécifique, vous pouvez fournir la liste à l'aide du paramètre IncludePackages. Dans ce cas, le système tente de mettre à jour seulement ces packages et leurs dépendances. Aucune autre mise à jour n'est exécutée. Par défaut, quand aucun package include n'est spécifié, le programme met à jour tous les packages disponibles.

Si vous souhaitez exclure de la mise à niveau un ensemble de packages spécifique, vous pouvez fournir la liste à l'aide du paramètre ExcludePackages. Dans ce cas, ces packages restent à leur version actuelle, quelles que soient les autres options spécifiées. Par défaut, quand aucun package exclude n'est spécifié, aucun package n'est exclu.

Étape 3 : stopInstance (action aws:changeInstanceState)

Cette étape arrête toutes les instances mises à jour.

Étape 4 : createImage (action aws:createImage)

Cette étape crée une nouvelle AMI avec un nom descriptif qui la relie à l'ID source et l'heure de création. Par exemple : « AMI générée par EC2 Automation le {{global:Date_time}} à partir de {{Id}} » où DATE_TIME et SourceAmi sourceId représentent les variables d'automatisation.

Étape 5 : terminateInstance (action aws:changeInstanceState)

Cette étape nettoie l'automatisation en mettant hors service l'instance en cours d'exécution.

Sortie

L'automatisation renvoie le nouvel ID AMI en tant que sortie.

Note

Par défaut, lorsqu'Automation exécute le runbook AWS-UpdateLinuxAmi, le système crée une instance temporaire dans le VPC par défaut (172.30.0.0/16). Si vous avez supprimé le VPC par défaut, vous recevrez l'erreur suivante :

VPC not defined 400

Pour régler ce problème, vous devez réaliser une copie du runbook AWS-UpdateLinuxAmi et spécifier un ID de sous-réseau. Pour plus d’informations, consultez VPC non défini 400.

Pour créer une AMI corrigée à l'aide d'Automation
  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 pour exécuter le runbook AWS-UpdateLinuxAmi. Remplacez chaque example resource placeholder (espace réservé pour les ressources) avec vos propres informations.

    aws ssm start-automation-execution \ --document-name "AWS-UpdateLinuxAmi" \ --parameters \ SourceAmiId=AMI ID, \ IamInstanceProfileName=IAM instance profile, \ AutomationAssumeRole='arn:aws:iam::{{global:ACCOUNT_ID}}:role/AutomationServiceRole'

    La commande renvoie un ID d'exécution. Copiez cet ID dans le Presse-papiers. Vous utiliserez cet ID pour afficher le statut de l'automatisation.

    { "AutomationExecutionId": "automation execution ID" }
  3. Pour visualiser l'automatisation à l'aide de AWS CLI, exécutez la commande suivante :

    aws ssm describe-automation-executions
  4. Pour afficher les détails de la progression de l'automatisation, exécutez la commande suivante. Remplacez automation execution ID (ID d'exécution de l'automatisation) par vos propres informations.

    aws ssm get-automation-execution --automation-execution-id automation execution ID

    Le processus de mise à jour peut prendre 30 minutes ou plus.

    Note

    Vous pouvez aussi surveiller le statut de l'automatisation dans la console. Dans la liste, sélectionnez l'automatisation que vous venez juste d'exécuter, puis sélectionnez l'onglet Steps (Étapes). Cet onglet affiche l'état des actions de l'automatisation.

Lorsque l'automatisation est terminée, lancez une instance test à partir de l'AMI mise à jour pour vérifier les modifications.

Note

Si une étape de l'automatisation échoue, les informations concernant l'échec sont répertoriées dans la page Automation Executions. L'automatisation est conçue pour mettre fin à l'instance temporaire une fois que toutes les tâches ont été effectuées correctement. Si une étape échoue, le système ne met pas nécessairement fin à l'instance. Donc, si une étape échoue, mettez fin à l'instance temporaire manuellement.