- 1. 概要
- 2. 基本的な使用方法
— 2.1. Linux からのメタデータアクセス例
— 2.2. Windows からのメタデータアクセス例 - 3. インスタンスメタデータの一覧
- 4. インスタンスのユーザーデータ
- 5. インスタンスデータの使用事例
概要
- EC2のインスタンスメタデータ(meta-data)およびユーザーデータ(user-data)は、インスタンス内からのみアクセス可能なインスタンスに関するデータです。
- インスタンスにアクセスできるユーザーなら誰でもそのメタデータおよびユーザーデータを参照できます。そのため、ユーザーデータに機密な情報を格納してはいけません。(例: user-dataにパスワードやSSHキー等を記載する)
基本的な使用方法
- インスタンスメタデータは実行中のインスタンスから下記IPアドレスにアクセスして取得します。すべてのメタデータがテキストとして返されます。
- http://169.254.169.254/latest/meta-data/
- このIPアドレス(169.254.169.254)は、リンクローカルアドレスです。リンクローカルアドレスはアドレスブロック 169.254.0.0/16で定義され、このアドレスはネットワークセグメントを超えてユニークであることが保証されていないため、ルーターはリンクローカルアドレスを使用したパケットを転送しません。
Linux からのメタデータアクセス例
- curlコマンドを使ってアクセスします。下記アクセス例です。
$ curl http://169.254.169.254/latest/meta-data/instance-id i-0123456789abcd5c1
Windows からのメタデータアクセス例
- Windowsの場合もLinuxと同様に、PowerShellからcurlコマンドを使ってアクセスします。下記アクセス例です。
PS C:\Users\niikawa> curl 'http://169.254.169.254/latest/meta-data/instance-id' StatusCode : 200 StatusDescription : OK Content : i-0123456789abcdcdf RawContent : HTTP/1.1 200 OK Connection: close Accept-Ranges: none Content-Length: 19 Content-Type: text/plain Date: Sun, 22 Sep 2019 12:30:12 GMT Last-Modified: Sun, 22 Sep 2019 11:56:41 GMT Server: EC2ws... Forms : {} Headers : {[Connection, close], [Accept-Ranges, none], [Content-Length, 19], [Content-Type, text/plain]...} Images : {} InputFields : {} Links : {} ParsedHtml : System.__ComObject RawContentLength : 19 PS C:\Users\niikawa>
- 上記出力結果より、WindowsのPowerShellではContent以外の不必要な情報が含まれます。下記の方法より、Linuxのcurlコマンドと同じ結果を得ることが可能です。
$instanceid=(curl 'http://169.254.169.254/latest/meta-data/instance-id') echo $instanceid.content
インスタンスメタデータの一覧
メタデータ | 説明 |
---|---|
ami-id | インスタンスの起動に使用される AMI ID。 |
hostname | インスタンスのプライベート IPv4 DNS ホスト名。 |
iam/info | インスタンスに関連付けられた IAM ロールがある場合、インスタンスの LastUpdated の日付、InstanceProfileArn、InstanceProfileId など、インスタンスプロファイルが更新された最終時刻に関する情報が格納されます。 |
instance-id | インスタンスの ID。 |
instance-type | インスタンスの種類。 |
local-hostname | インスタンスのプライベート IPv4 DNS ホスト名。 |
local-ipv4 | インスタンスのプライベート IPv4 アドレス。 |
mac | インスタンスのMACアドレス。 |
placement/availability-zone | インスタンスが起動した利用可能ゾーン。 |
public-hostname | インスタンスのパブリック DNS。このカテゴリは、enableDnsHostnames 属性が true に設定されている場合にのみ返されます。 |
public-ipv4 | パブリック IPv4 アドレス。インスタンスに Elastic IP アドレスが関連付けられている場合、返される値は Elastic IP アドレスです。 |
security-groups | インスタンスのセキュリティグループ名。 |
(出典:Amazon Elastic Compute Cloud Linux インスタンス用ユーザーガイド)
インスタンスのユーザーデータ
- 下記の様にユーザーデータにアクセスします。
$ curl http://169.254.169.254/latest/user-data sudo groupadd -g 600 test-group sudo useradd -u 600 -g test-group -d /home/test-user -s /bin/bash test-user
インスタンスデータの使用事例
- 今回ご紹介したメタデータを活用して、EC2のName Tag をOSのスクリプトから設定することが可能です。詳細は、以下記事を参照ください。