のべラボ.blog

Tech Blog | AWS や サーバーレスやコンテナ などなど

AWS Parameters and Secrets Lambda Extension のドキュメントの記載に注意

AWS Parameters and Secrets Lambda Extension を触ってみたところ、ドキュメントで混乱を招く記載があったので、その点を記載していきます。

なお、この記事の内容は 2022年 10月 23日時点のものになります。

aws.amazon.com

AWS Parameters and Secrets Lambda Extension は、AWS Systems Manager の Parameter Store や AWS Secrets Manager の値を Lambda関数からシンプルに取得し、かつ一度取得した値をキャッシュする機能を提供します。

このキャッシュの有効期限 ( TTL ) はLambda関数の環境変数で設定します。

例えば、Secrets Manager の場合は、SECRETS_MANAGER_TTL という環境変数で、Parameter Store の場合は、SSM_PARAMETER_STORE_TTL という環境変数になります。

この環境変数に指定する時間の単位ですが、Parameter Store のドキュメントの記載では次のように、デフォルト値として 300000 ms 、つまり 5分 と記述されています。

docs.aws.amazon.com

この記載をみて、「ms単位で指定するのか」と思ったんですが、これは誤りで実際は、秒単位で指定する必要があります。

間違えて ms 単位で指定すると、その内容は無視されてデフォルトの 5 分が適用されます。

最初、2分、つまり 120000ms で値を設定してみたのですが、キャッシュの無効化が5分だったので、PARAMETERS_SECRETS_EXTENSION_LOG_LEVEL 環境変数を DEBUG に設定してデバッグログを取得してみました。

すると次のようなログが出たので、ms単位ではない!と気づいたわけです。

[AWS Parameters and Secrets Lambda Extension] 2022/10/23 02:07:01 WARN SECRETS_MANAGER_TTL exceeds max limit. Setting Secrets Manger TTL to 5m0s.
[AWS Parameters and Secrets Lambda Extension] 2022/10/23 02:07:01 WARN SSM_PARAMETER_STORE_TTL exceeds max limit. Setting SSM Parameter Store TTL to 5m0s.

ちなみに、Secrets Manager のドキュメントには、このような誤解を招く記載はありません。

docs.aws.amazon.com

これについては、すでに AWS 側に フィードバックを送りましたが、デフォルト値には正しい単位で記載することと、そもそも何の単位で指定するのかを明記していただきたいものだと思いました。

実際にAWS Parameters and Secrets Lambda Extensionを試す手順については、次のブログ記事に記載します。

/* -----codeの行番号----- */