ログってなんぼ

日々のメモです

AWS EC2で自分自身のインスタンスID(InstanceID)を取得する

EC2のcronで動作中のシェルスクリプトをメンテしているとたまに

*/10 * * * * /bin/sh script_name.sh i-xxxxxxxx

こんな感じでインスタンスIDを引数にスクリプトを起動して、スクリプト中で

instanceid=$1

という風にインスタンスIDを利用しているパターンを見かけます

コレだとインスタンスIDが変わったときに使えないですし、インスタンスIDは一見してすぐに正しい値かどうかを判断するのが難しいのでトラブルのもとになります

インスタンスメタデータ

EC2なら、自分自身のメタデータを簡単に取得できます

docs.aws.amazon.com

$ curl http://169.254.169.254/latest/meta-data/
ami-id
ami-launch-index
ami-manifest-path
block-device-mapping/
hostname
iam/
instance-action
instance-id
instance-type
local-hostname
local-ipv4
mac
metrics/
network/
placement/
profile
public-hostname
public-ipv4
public-keys/
reservation-id
security-groups
services/

こんな感じでいろいろなデータを取得可能です

自分のInstanceIDを取得

このようなリクエストを投げると

$ curl 169.254.169.254/latest/meta-data/instance-id/

i-xxxxxxxxxxx

こんな感じにインスタンスIDを取得可能ですので、インスタンスIDを引数で渡す必要は殆どの場合無いでしょう。

というわけで