AWS ParallelCluster の構築したクラスター環境で起動したコンピュートノード(EC2 インスタンス)のタグ情報はインスタンスメタデータから取得できるのでしょうか?
確認結果
インスタンスメタデータからタグ情報の取得は正規の方法ではサポートしていませんでした。
- コンピュートノードはインスタンスメタデータのタグ取得は許可されていない
- クラスターの設定項目にも設定変更可能なオプションは存在していない
背景
実行ジョブのスクリプト内で処理中の EC2 インスタンスのタグ情報をインスタンスメタデータから取得できれば、出力結果を保存するときのファイル名に付与などになにか利用できるのではと考えました。
ですが、EC2 インスタンスのデフォルトはインスタンスメタデータを使って「タグ」を参照することは許可されていません。
ParallelCluster の場合どうなのでしょうか?確認してみます。
確認してみた
検証環境
項目 | 値 |
---|---|
AWS ParallelCluster | 3.8.0 |
OS | Ubuntu 22.04 LTS |
CPU Arch | Intel(x86_64) |
HeadNode | t3.micro |
ComputeNode | t3.micro |
コンピュートノードを起動して確認する
テストジョブをサブミットしてコンピュートノードを起動しました。インスタンスメタデータのタグは許可されていませんでした。
補足: IMDSv2 がデフォルトです
ParallelCluster 3.7.0 からは IMDS のデフォルトバージョンが v2.0 になりました。そのため、インスタンスメタデータを取得する場合は以下の様にトークンをつけてアクセスします。今回目的のタグ情報を取得できませんでしたが参考までに。
TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` && curl -H "X-aws-ec2-metadata-token: $TOKEN" -v http://169.254.169.254/latest/meta-data/
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 56 100 56 0 0 10610 0 --:--:-- --:--:-- --:--:-- 11200
* Trying 169.254.169.254:80...
* Connected to 169.254.169.254 (169.254.169.254) port 80 (#0)
> GET /latest/meta-data/ HTTP/1.1
> Host: 169.254.169.254
> User-Agent: curl/7.81.0
> Accept: */*
> X-aws-ec2-metadata-token: AQAEALn_4vK81Vv-z-G0DxZV9QNr8_1kDrOBrczutjsVn2cUAoYg9A==
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< X-Aws-Ec2-Metadata-Token-Ttl-Seconds: 21600
< Content-Type: text/plain
< Accept-Ranges: none
< Last-Modified: Mon, 15 Jan 2024 09:27:38 GMT
< Content-Length: 312
< Date: Mon, 15 Jan 2024 09:55:17 GMT
< Server: EC2ws
< Connection: close
<
ami-id
ami-launch-index
ami-manifest-path
block-device-mapping/
events/
hostname
iam/
identity-credentials/
instance-action
instance-id
instance-life-cycle
instance-type
local-hostname
local-ipv4
mac
metrics/
network/
placement/
profile
public-hostname
public-ipv4
reservation-id
security-groups
services/
* Closing connection 0
クラスターの設定項目に変更可能なオプションはありますか?
クラスターの設定項目インスタンスメタデータの設定を変更する箇所はありませんでした。
近しいものでは IMDS のバージョン指定は可能でした。現在推奨されている v2.0 ではなく、v1.0 にバージョンを下げることは設定次第で可能です。
Imds section - AWS ParallelCluster
ヘッドノードはどうなっていますか?
ヘッドノードも同様に「インスタンスメタデータのタグを許可する」は無効化されていました。
おわりに
幾多となくコンピュートノードを起動してきたのですが、インスタンスメタデータが許可されているのか気にしたことがなく確認することになりました。わざわざ私のように用もなくコンピュートノードを起動しないで済むように書き残しました。