タスク ID が欲しい
ECS_AGENT_URI
ECS_CONTAINER_METADATA_URI_V4
ECS_CONTAINER_METADATA_URI
と起動時に自動付与される環境変数 (ECS_) から取れそうなんだけど、メタデータのエンドポイント URL (http://169.254.170.2) も含まれた絶対パス形式だったなあ。 AWS_CONTAINER_CREDENTIALS_RELATIVE_URI
みたいにパスとか、あわよくば直接取れたりしない? ダメ? アッハイ……、という感じだった。
ので awk
を使って地味に取得する。
env | grep ECS_CONTAINER_METADATA_URI= | awk -F'[/]' '{print $5}' # => examplewjnowsp9n4ygu4p4a7scnhfca-123456789
生成される長さが 42 になるはずなので、不安ならその辺は確認してもろて。
これを環境変数に自動でセットしたい、とかなら初期処理に以下でも突っ込んでおけばよい。
export CONTAINER_TASK_ID=$(env | grep ECS_CONTAINER_METADATA_URI= | awk -F'[/]' '{print $5}')
なぜこんなことを?
NewRelic の agent とかだと単純に、自動付与される HOSTNAME
を識別子として送ってるっぽんだけど、まあ自前で色々やろうと思ったら、
- どの環境 (prod/stg/intg/dev) か
- 動いているリソース (EC2/ECS/fargate) 種別は?
- アタッチする為に必要な情報は
となり、タスク ID が確認できたらいいなあ、という風情でした。 とりあえずこれで。