見出し画像

awsのssmコマンドを使い、各EC2インスタンスでコマンドを実行する


要件

awsのssmコマンドを使い、各EC2インスタンスでコマンドを実行する

タスク

  • awsのssmコマンドを使い、各EC2インスタンスでコマンドを実行する

参考記事


▼aws-cliに関しての動画です ありがたや!

https://www.udemy.com/course/cloud01-aws-cli/learn/lecture/26557180#questions

▼aws-cliの使い方が分かります!


▼jqコマンドの使い方が分かりやすくまとまってます!


▼evalコマンドに関して コマンドを変数に入れて実行する時は、evalが必要なのです! これは他の言語やっている人はハマりポイントでしょう〜


学べること

  • awsのssmコマンドを使い、各EC2インスタンスでコマンドを実行する

  • aws-cliの使い方

  • jqコマンドの使い方

ヒント

sample.sh

#!/bin/bash


# 各EC2インスタンスで実行するシェルスクリプト
cmd="systemctl is-active docker"


# すべてのEC2インスタンスのID取得
instances=$(aws ec2 describe-instances \
        --query 'Reservations[*].Instances[].InstanceId'\
        --output text)


# EC2ごとにコマンドの実行とコマンドIDを取得
exec=$(aws ssm send-command \
      --instance-ids ${instances} \
  --document-name "AWS-RunShellScript" \
  --parameters commands="eval ${cmd}" \
  --query 'Command.CommandId' \
  --output text)


# 各インスタンスに対してのコマンドの実行結果
result_list=$(
    aws ssm list-command-invocations --command-id ${exec} --details \
         --query "CommandInvocations[].[InstanceId, InstanceName, Status, CommandPlugins[0].Output"] \
         --output json
)


# 実行結果をcsvに出力する
echo ${result_list} | jq -r '.[] | [.[0], .[1], .[2], .[3]] | @csv'

関連タグ

#aws #ssm #linux #jq #aws -cli

この記事が気に入ったらサポートをしてみませんか?