AWS Lambda関数でHTTPコールを行いたいけれども、Pythonのrequestsモジュールが元々利用できないために行き詰まっていますか?心配無用です、解決策をご提供します!requestsモジュール用のカスタムAWS Lambdaレイヤーを作成することで、Lambda関数に必要な機能を簡単に追加できます。このブログ投稿では、このレイヤーを作成し実装する手順をご案内しますので、Lambda関数内でスムーズにHTTPリクエストが行えるようになります。さあ、始めましょう!
最初のステップは、requestsモジュールをディレクトリに保存し、それをzip形式で圧縮してAWSにアップロードすることです。このチュートリアルでは、Python 3.9.7とpipバージョン23.1.2をmacOS上で使用します。
Pythonモジュール用の新しいディレクトリを作成します(ディレクトリ名はpythonである必要があります):
mkdir python
新しいディレクトリを作成したら、以下のように-tオプションを指定してrequestsモジュールをそのフォルダに保存します:
pip install -t python requests
お気づきかもしれませんが、pipを使用してプロジェクトに必要な任意の数のモジュールや依存関係を指定できます。pipがモジュールをターゲットディレクトリにダウンロードしたら、AWSにアップロードする前にフォルダをzip形式で圧縮します。
zip -r9 python_requests_layer.zip python
上記で使用されたzipコマンドは、rオプションと9オプションを指定しています。rオプションはディレクトリに再帰してサブフォルダもzipファイルに含めるためのものです。9オプションは圧縮強度で、0-9のスケールで表されます。
zipファイルが準備できたら、AWS Lambdaサービスページに移動し、「Layers」を選択します。
Layersページから、オレンジ色の「Create layer」ボタンをクリックして作成ウィザードを開きます。
新しいレイヤーの名前と説明を指定して、このレイヤーが何であるかを知ることができます。「Upload a .zip file」オプションを選択し、作成したばかりのzipファイルをアップロードします。次に、アップロードボタンをクリックし、Python Requestsレイヤーのzipファイルを選択します。この特定の例では、コストパフォーマンスがx86に比べて良いarm64アーキテクチャを選択しましたが、要件に最も適したアーキテクチャを選択してください。最後に、このレイヤーはPython 3.9用に作成されたため、互換性のあるランタイムのリストからPython 3.9とPython 3.10を選択します。
「Create」をクリックし、すべての設定が完了です!これで、requestsモジュールが含まれた新しいレイヤーができました。
私たちが作成した新しいレイヤーをLambda関数にどのように組み込むか見てみましょう。Pythonで既存のLambda関数を持っている場合は、その関数に移動します。既存のものがない場合は、読み進めていただくか、新しい例のLambda関数を作成して、進行に沿ってください。
Function overviewセクションから、関数名の下にある「Layers」ボタンをクリックします。または、ページの下部にスクロールするとLayersセクションが表示されるので、そこで「Add a layer」をクリックします。
これで、Python Lambdaスクリプトにrequestsモジュールを追加しました!結論として、PythonのrequestsモジュールのためのAWS Lambdaレイヤーを作成することは、AWS Lambda関数でHTTPコールを行いたい人にとってシンプルで強力なソリューションです。このアプローチを用いれば、開発者は依存関係のインストールや管理の面倒を避けつつ、コードをクリーンで簡潔に保つことができます。このブログで説明された手順に従えば、自分自身のレイヤーを簡単に作成し、今日からAWS Lambda関数でrequestsモジュールを利用することができます。足りない依存関係に振り回されることなく、この強力なソリューションを活用して、AWS Lambda関数の全潜在能力を解放しましょう。
KeyQでは、最新技術を活用してビジネスが競争に勝ち抜くことの重要性を理解しています。弊社の専門家チームは、AWS Lambdaおよびサーバーレス技術のあらゆる面での支援が可能です。これには、カスタムLambdaレイヤーの作成、Lambda関数の最適化、これらの強力なツールを最も効果的に活用する方法に関するガイダンスが含まれます。手頃な価格で高品質なソフトウェア開発サービス、迅速な開発、プロトタイピング、デプロイメントのためのクラウド対応フレームワークを提供するKeyQは、AWS Lambdaおよびサーバーレス技術を最大限に活用したいと考えるあらゆるビジネスにとって最適なパートナーです。お客様のビジネスを次のレベルに引き上げるために、私たちがどのようにお手伝いできるか、今日ご連絡ください。