Posted at

AWSとGCPの169.254.169.254


はじめに

AWS、GCPともに169.254.169.254というIPアドレスはインスタンスメタデータの取得に使われます。


AWS(EC2)

EC2インスタンスにログインしてインスタンスメタデータを取得してみます。


command

curl http://169.254.169.254/



output

1.0

2007-01-19
2007-03-01
2007-08-29
2007-10-10
2007-12-15
2008-02-01
2008-09-01
2009-04-04
2011-01-01
2011-05-01
2012-01-12
2014-02-25
2014-11-05
2015-10-20
2016-04-19
2016-06-30
2016-09-02
2018-03-28
2018-08-17
2018-09-24
latest

階層をたどっていきます。


command

curl http://169.254.169.254/latest/meta-data/



output

ami-id

ami-launch-index
ami-manifest-path
block-device-mapping/
events/
hostname
identity-credentials/
instance-action
instance-id
instance-type
local-hostname
local-ipv4
mac
metrics/
network/
placement/
profile
public-hostname
public-ipv4
reservation-id
security-groups
services/

さらに階層をたどってインスタンスIDを取得してみます。


command

curl http://169.254.169.254/latest/meta-data/instance-id



output

i-00ff428742b4ee9d8



GCP(GCE)

GCEインスタンスにログインしてインスタンスメタデータを取得してみます。


command

curl http://169.254.169.254/



output

0.1/

computeMetadata/

階層をたどっていきます。


command

curl -I http://169.254.169.254/computeMetadata/v1/



output

HTTP/1.1 403 Forbidden

Metadata-Flavor: Google
Date: Wed, 14 Aug 2019 08:44:15 GMT
Content-Type: text/html; charset=UTF-8
Server: Metadata Server for VM
Connection: Close
Content-Length: 1636
X-XSS-Protection: 0
X-Frame-Options: SAMEORIGIN

すると途中で上記のように403 Forbiddenが返ってきます。インスタンスメタデータを取得するにはHTTPヘッダーMetadata-Flavor: Googleを含める必要があります。


command

curl http://169.254.169.254/computeMetadata/v1/ -H 'Metadata-Flavor: Google'



output

instance/

oslogin/
project/

さらに階層をたどってインスタンスIDを取得してみます。


command

curl http://169.254.169.254/computeMetadata/v1/instance/id -H 'Metadata-Flavor: Google'



output

7036476564275361950


基本的な使い方は以上です。

なお、GCPの場合はmetadata.google.internalのAレコードとして169.254.169.254が設定されているため、こちらのFQDNを利用することができます。


まとめ

AWS、GCPにおいて169.254.169.254がインスタンスメタデータの取得に利用できることを見てきました。どちらも同じIPアドレスのため覚えやすくてよいですね。資格試験で問われても答えられそうです。


参考資料