Comment configurer AWS Systems Manager Run Command pour envoyer une sortie vers un compartiment S3 d'un autre compte AWS ?

Lecture de 4 minute(s)
0

Je souhaite envoyer la sortie de AWS Systems Manager Run Command à un compartiment Amazon Simple Storage Service (Amazon S3) d'un autre compte AWS. Quelle est la marche à suivre ?

Solution

Vous pouvez utiliser AWS Systems Manager Run Command pour exécuter des documents Systems Manager tels que AWS-RunPatchBaseline et AWS-RunPowerShellScript dans des instances gérées. Vous pouvez ensuite envoyer la sortie à Amazon CloudWatch et Amazon S3 dans le même compte AWS, ou vers un compartiment S3 dans un autre compte AWS.

Afin de permettre à Systems Manager d'accéder à un compartiment S3 d'un autre compte AWS, configurez les politiques AWS Identity and Access Management (IAM) et de compartiment suivantes.

Autorisations pour le profil d'instance IAM

Un profil d'instance est un conteneur qui transmet les informations de rôle IAM à une instance Amazon Elastic Compute Cloud (Amazon EC2) lors du lancement. Le rôle IAM attaché à votre instance EC2 gérée doit disposer des actions suivantes actives afin d'autoriser l'accès au compartiment S3. Remplacez DOC-EXAMPLE-BUCKET par le nom du compartiment S3 dans le compte cible.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "VisualEditor0",
      "Effect": "Allow",
      "Action": [
        "s3:PutObject",
        "s3:GetObject",
        "s3:PutObjectAcl"
      ],
      "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
    }
  ]
}

Pour plus d'informations sur les autorisations S3 requises pour des scénarios spécifiques, consultez la section Créer une stratégie personnalisée pour l'accès au compartiment S3.

Stratégie de compartiment S3 cible

Le compartiment S3 cible doit autoriser le rôle de profil d'instance attaché à l'instance EC2 gérée d'accéder au compartiment. Vous pouvez créer une stratégie de compartiment ou accorder l'accès au compte AWS source dans la liste de contrôle d'accès au compartiment (ACL).

Avertissement : la création d'une stratégie de compartiment constitue une bonne pratique en matière de sécurité. L'ajout du compte AWS source à l'ACL du compartiment permet à tous les utilisateurs et rôles du compte AWS source d'accéder au compartiment S3.

Voici un exemple de stratégie de compartiment pour le compartiment S3 cible. Remplacez DOC-EXAMPLE-BUCKET par le nom du compartiment S3 dans le compte cible. Remplacez SOURCE-AWS-ACCOUNT par l'ID du compte AWS source. Remplacez INSTANCE-PROFILE-ROLE-NAME par le nom du rôle IAM attaché à l'instance EC2.

{
  "Version": "2012-10-17",
  "Id": "Policy1589684413780",
  "Statement": [
    {
      "Sid": "Stmt1589684412557",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::SOURCE-AWS-ACCOUNT:role/INSTANCE-PROFILE-ROLE-NAME"
      },
      "Action": [
        "s3:GetObject",
        "s3:PutObject",
        "s3:PutObjectAcl"
      ],
      "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
    }
  ]
}

Configuration de Run Command pour envoyer la sortie de commande à Amazon S3

Console AWS Systems Manager

1.    Ouvrez la console Systems Manager, puis sélectionnez Run Command (Exécuter une commande) dans le volet de navigation.

2.    Sélectionnez Run command (Exécuter une commande).

3.    Sélectionnez le document à exécuter et entrez tous les paramètres requis.

4.    Pour Output Options (Options de sortie), sélectionnez Enable an S3 bucket (Activer un compartiment S3). Sélectionnez Enter an S3 bucket name in the text box (Entrer un nom de compartiment S3 dans la zone de texte), puis entrez le nom du compartiment S3 dans le compte cible.

5.    (Facultatif) Pour S3 key prefix (Préfixe de clé S3), entrez le préfixe de clé S3 afin d'envoyer la sortie de commande vers un sous-dossier du compartiment S3.

AWS CLI

Remarque : si vous recevez des erreurs lors de l'exécution de commandes depuis l'interface de la ligne de commande AWS (AWS CLI), assurez-vous d'utiliser la version la plus récente de l'AWS CLI.

Lorsque vous exécutez un appel d'API SendCommand dans l'AWS CLI, vous pouvez spécifier les options de sortie en ajoutant les paramètres suivants :

--output-s3-bucket-name "DOC-EXAMPLE-BUCKET" --output-s3-key-prefix "DOC-EXAMPLE-BUCKET-PREFIX"

Remarque : dans les exemples de paramètres précédents, DOC-EXAMPLE-BUCKET est le nom du compartiment S3 dans votre compte cible. DOC-EXAMPLE-BUCKET-PREFIX indique le sous-dossier dans le compartiment S3 où vous souhaitez stocker la réponse. Le paramètre output-s3-key-prefix n'est pas requis pour envoyer la sortie de commande à un compartiment S3. Pour plus d'informations, consultez la section send-command.

L'exemple d'AWS CLI suivant lance une commande qui utilise le document AWS-RunPowerShellScript pour exécuter à distance echo helloWorld dans les instances gérées marquées comme Key=tag:Env,Values=Dev,Test. La sortie de commande est envoyée au compartiment S3 nommé DOC-EXAMPLE-BUCKET dans votre compte cible et stockée dans un sous-dossier nommé avec le préfixe DOC-EXAMPLE-BUCKET PREFIX.

aws ssm send-command --document-name "AWS-RunPowerShellScript" --parameters '{"commands":["echo helloWorld"]}'  --targets '[{"Key":"tag:Env","Values":["Dev","Test"]}]' --output-s3-bucket-name "DOC-EXAMPLE-BUCKET" --output-s3-key-prefix "DOC-EXAMPLE-BUCKET-PREFIX"

Informations connexes

Création d'un profil d'instance IAM pour Systems Manager

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 2 ans