higeojisan
5/16/2018 - 12:56 PM

構築後にmarkdown形式でEC2のリソース情報を吐き出すスクリプト

|Tag名|用途|インスタンスID|グローバルIPアドレス|ブライベートIPアドレス|インスタンスタイプ|ディスクサイズ|OS|AMIバックアップ|備考| | ------------- | ------------- | | test-web-01 | Webサーバ|i-0asdbcdfadsaa2 | 8.8.8.8 | 10.0.0.1 | m4.large | 100GB | CentOS7.4 | | |

#!/bin/bash

## Profile名の取得
if [[ -z "$1" ]]; then
  echo "Profile名を指定してください"
  exit 1
fi
profile=$1
BASE_OPTS="--output text --profile ${profile}"

## インスタンスIDの取得
InstanceIds=$(aws ec2 describe-instances --query "Reservations[].Instances[].InstanceId" ${BASE_OPTS})
if [[ -z "${InstanceIds}" ]]; then
  echo "インスタンスIDが取得出来ませんでした"
  exit 1
fi

rows="|Tag名|用途|インスタンスID|グローバルIPアドレス|ブライベートIPアドレス|インスタンスタイプ|ディスクサイズ|OS|AMIバックアップ|備考|"
rows="${rows}""\n""| ------------- | ------------- |"
for InstanceId in ${InstanceIds}
do
  ## パブリックIPの取得
  PublicIP=$(aws ec2 describe-instances --instance-ids "${InstanceId}" --query "Reservations[].Instances[].PublicIpAddress" ${BASE_OPTS})

  ## プライベートIPの取得
  PrivateIP=$(aws ec2 describe-instances --instance-ids "${InstanceId}" --query "Reservations[].Instances[].PrivateIpAddress" ${BASE_OPTS})

  ## インスタンスタイプの取得
  InstanceType=$(aws ec2 describe-instances --instance-ids "${InstanceId}" --query "Reservations[].Instances[].InstanceType" ${BASE_OPTS})

  ## Nameタグの取得
  NameTag=$(aws ec2 describe-instances --instance-ids "${InstanceId}" --query "Reservations[].Instances[].Tags[?Key==\`Name\`]" ${BASE_OPTS})

  ## EBSのサイズの取得
  DiskSize=$(aws ec2 describe-volumes --filters "Name=attachment.instance-id,Values=${InstanceId}" --query "Volumes[].Size" ${BASE_OPTS})

  row="| ${NameTag} | | ${InstanceId} | ${PublicIP} | ${PrivateIP} | ${InstanceType} | ${DiskSize}GB | | | |"
  rows="${rows}""\n""${row}"
done

echo -e ${rows}