弊社のあるプロジェクトで、AWSのLambda関数でPOSTリクエストする機能があるのですが、
ある日、ログを確認すると以下のようなメッセージが出力されていました。
DeprecationWarning: You are using the post() function from 'botocore.vendored.requests'. This dependency was removed from Botocore and will be removed from Lambda after 2021/01/30. https://aws.amazon.com/blogs/developer/removing-the-vendored-version-of-requests-from-botocore/. Install the requests package, 'import requests' directly, and use the requests.post() function instead. 【直訳】 非推奨警告:「botocore.vendored.requests」のpost()関数を使用しています。 この依存関係はBotocoreから削除され、2021/01/30以降にLambdaから削除されます。 https://aws.amazon.com/blogs/developer/removing-the-vendored-version-of-requests-from-botocore/。 リクエストパッケージをインストールし、「リクエストをインポート」して、代わりにrequests.post()関数を使用します。
このメッセージの対応として、Lambda関数のコードでzipファイルをアップロードして、
「botocore.vendored.requests」からPythonのRequestsモジュールに変更した手順をご紹介します。
(Windowsでの手順になります)
1.Pythonをインストール
公式サイトから、Pythonをダウンロードして、インストールしてください。※今回はVersion 3.9.0 を使用しました
環境変数(Path)の追加をお忘れなく。
[インストールフォルダ]\Python39 [インストールフォルダ]\Python39\Scripts
2.pipでRequestsを指定のフォルダにインストール
適当な場所に作業用のフォルダを作成し、コマンドプロンプトを起動し、作成したフォルダに移動してください。
以下のコマンドで、インストールします。
pip install requests -t .
成功すると、作業用フォルダの中に、以下のフォルダが作成されます。
bin certifi certifi-2020.6.20.dist-info chardet chardet-3.0.4.dist-info idna idna-2.10.dist-info requests requests-2.24.0.dist-info urllib3 urllib3-1.25.11.dist-info
3.zipファイルの作成
Lambda関数にアップロードするzipファイルを作成します。上記2のフォルダをzipファイルにするだけなのですが、注意点があります。
①「.dist-info」のフォルダは不要なので削除します。
②今回のように、zipファイルをアップロードするLambda関数に、既に関数コードを記述している場合、
アップロードしたタイミングで、消えてしまいます。
既存のコードを使用する場合、「2」で作成したの作業フォルダの中に、
新規で「lambda_function.py」ファイルを作成して、
既存の関数コードをコピーしてください。
上記①、②の対応をした場合、zipファイルの中身は以下のようになります。
bin certifi chardet idna requests urllib3 lambda_function.py
4.zipファイルのアップロード
Lambdaの関数コードのアクションで、「.zip ファイルをアップロード」を選択して、「3」で作成したzipファイルをアップロードします。
Environmentにzipしたファイルとフォルダが表示されていると思いますので、
これでPythonのRequestsモジュールが使用できます。
最後にimportを修正して、「Deploy」すれば完了です。
修正前:from botocore.vendored import requests 修正後:import requests
上記の対応で、ログから警告メッセージが消えて、問題なく動作しました。
AWS , Lambda
0 件のコメント:
コメントを投稿