Potential Action Required: Lambda Botocore Deprecation [AWS Account: 123456789012] メールの対応方法
困っていた内容
AWS から Lambda Botocore の非推奨に関するメールが届きました。メールの件名は Potential Action Required: Lambda Botocore Deprecation [AWS Account: 123456789012]
です。どうすれば影響を確認できますか?
どう対応すればいいの?
メール本文のリンク [4] https://aws.amazon.com/premiumsupport/knowledge-center/cloudformation-cfn-response-lambda/(日本語版)の手順に沿って対象リソースを確認してください。
この手順を大まかに説明すると以下のとおりです。
- CloudFormation のカスタムリソースを使用しているスタックの抽出
- スタックに関連付けされている Lambda 関数の抽出
- CloudFormation テンプレートに含まれる
cfn-response
モジュールの確認 cfn-response
モジュールをurllib3
を使用する最新バージョンへ更新
以下のようなテンプレートを使用している場合は、手順に沿って修正してください。
MyFunction: Type: AWS::Lambda::Function Properties: Handler: index.handler Role: !GetAtt MyRole.Arn Runtime: python3.7 Code: ZipFile: | import cfnresponse ...
この他にもランタイムが Python 2.7/3.6/3.7 の Lambda 関数内で botocore.requests
を使用するコードがあれば、コードの更新が必要です。
たとえば、以下のような botocore 依存モジュールの requests を使用するコードは更新対象です。
更新が必要なコード
from botocore.vendored import requests
次のコード例を参考に修正してください。
更新後のコード例(Python 標準の urllib を使用)
import urllib.request
更新後のコード例(requests ライブラリを使用)
import requests
requests ライブラリを Lambda で使用するには、ZIP コード内に pip などのパッケージマネージャーで取得した requests モジュール含めるか、Lambda Layers を使用してください。
やってみた
私が利用している環境にもメールが届いたので、手順に沿って調べてみました。
まずはAWS ナレッジセンターのコマンドを参考に、カスタムリソースを使用している CloudFormation スタックを抽出します。
# ご利用のリージョンに応じて変更してください $ REGION=ap-northeast-1 $ aws cloudformation list-stacks --region $REGION | grep -oE 'arn:[^"]+' | while read arn; do aws cloudformation list-stack-resources --stack-name $arn --region $REGION | grep -E '(Custom::)|(::CustomResource)' | awk '{print $2}' | while read resource; do if [[ -n $resource ]]; then echo $arn; echo $resource; fi; done; done arn:aws:cloudformation:ap-northeast-1:0123456789:stack/test-stack/<stack-id> "AWS::CloudFormation::CustomResource", ...
上記の結果から、CloudFormation スタック: test-stack
のテンプレート AWS::CloudFormation::CustomResource
句でカスタムリソースを使用していることがわかりました。
その後、CloudFormation コンソールのテンプレートで AWS::CloudFormation::CustomResource
を検索したところ、cfn-response
モジュールは使用していませんでした。
なお、対象の CloudFormation スタックはすでに削除済みのスタックでした。
また、アカウント内のランタイムが Python 2.7/3.6/3.7 の Lambda 関数で、from botocore.vendored import requests
の記述がないことを確認しました。
以上のことから、私の環境では影響なしと判断しました。
メールが届いても対応が必須なわけではない
Potential Action Required: Lambda Botocore Deprecation [AWS Account: 123456789012]
のメールは、影響がない AWS アカウントにも通知されています。ご利用の環境で影響があるかを確認するには、以上を参考にそれぞれの環境で調べてください。