テクニカルサポートの hato です。
コンテナイメージの Lambda 関数で、ECS の認証情報を取得する際に利用する環境変数AWS_CONTAINER_CREDENTIALS_FULL_URI
が設定されているか確認する機会がありましたので、小ネタとしてご紹介します。
結論
ドキュメントに記載の環境変数が設定されており、AWS_CONTAINER_CREDENTIALS_FULL_URI
は設定されていない。
AWS Lambda 環境変数の使用 - AWS Lambda
やってみた
次のドキュメントを参考に、bootstrap ファイル内でenv
コマンドを実行しました。
ベースイメージはAmazon Linux 2(public.ecr.aws/lambda/provided:al2
)です。
設定されている環境変数
_HANDLER=function.handler
AWS_REGION=ap-northeast-1
AWS_EXECUTION_ENV=AWS_Lambda_Image
AWS_LAMBDA_FUNCTION_NAME=hato-container-Lambda
AWS_LAMBDA_FUNCTION_MEMORY_SIZE=128
AWS_LAMBDA_FUNCTION_VERSION=$LATEST
AWS_LAMBDA_INITIALIZATION_TYPE=on-demand
AWS_LAMBDA_LOG_GROUP_NAME=/aws/lambda/hato-container-Lambda
AWS_LAMBDA_LOG_STREAM_NAME=2022/08/01/[$LATEST]c7b08b503b3048449078fefb6c712ff6
AWS_ACCESS_KEY_ID=ASIAxxxxxxxxxxxxxxxx
AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
AWS_SESSION_TOKEN=AQoDYXdzEJr...
AWS_LAMBDA_RUNTIME_API=127.0.0.1:9001
LAMBDA_TASK_ROOT=/var/task
LAMBDA_RUNTIME_DIR=/var/runtime
TZ=:/etc/localtime
LANG=en_US.UTF-8
PATH=/var/lang/bin:/usr/local/bin:/usr/bin/:/bin:/opt/bin
LD_LIBRARY_PATH=/var/lang/lib:/lib64:/usr/lib64:/var/runtime:/var/runtime/lib:/var/task:/var/task/lib:/opt/lib
AWS_XRAY_CONTEXT_MISSING=LOG_ERROR
AWS_XRAY_DAEMON_ADDRESS=169.254.79.129:2000
AWS_DEFAULT_REGION=ap-northeast-1
PWD=/var/task
SHLVL=1
_AWS_XRAY_DAEMON_ADDRESS=169.254.79.129
_AWS_XRAY_DAEMON_PORT=2000
_=/usr/bin/env
ECS 用の環境変数は設定されていない
ドキュメントには記載がありませんが、Greengrass LambdaやCloudShellなど、ECS 以外の AWS サービスでも設定されている事例がありましたので、もしかしたらあるかも?と期待していましたが設定されていないようです。
AWS_CONTAINER_CREDENTIALS_FULL_URI
が設定されていませんので、ECS で稼働するコンテナを Lambda に移行する場合は、AWS_CONTAINER_CREDENTIALS_FULL_URI
がある前提が崩れる点に注意が必要です。
また、試しにメタデータ(169.254.170.2
および169.254.169.254
)に curl を行いましたがエラーになりました。
最後に
この記事が誰かのお役にたてば幸いです。
アノテーション株式会社について
アノテーション株式会社は、クラスメソッド社のグループ企業として「オペレーション・エクセレンス」を担える企業を目指してチャレンジを続けています。「らしく働く、らしく生きる」のスローガンを掲げ、様々な背景をもつ多様なメンバーが自由度の高い働き方を通してお客様へサービスを提供し続けてきました。現在当社では一緒に会社を盛り上げていただけるメンバーを募集中です。少しでもご興味あれば、アノテーション株式会社WEBサイトをご覧ください。