back to blog

Pythonリクエストモジュール用AWS Lambda Layerの作成

Read Time 1 mins | Written by: Kenneth Hough

AWS Lambda関数でHTTPコールを行いたいけれども、Pythonのrequestsモジュールが元々利用できないために行き詰まっていますか?心配無用です、解決策をご提供します!requestsモジュール用のカスタムAWS Lambdaレイヤーを作成することで、Lambda関数に必要な機能を簡単に追加できます。このブログ投稿では、このレイヤーを作成し実装する手順をご案内しますので、Lambda関数内でスムーズにHTTPリクエストが行えるようになります。さあ、始めましょう!

Requestsモジュールの保存

最初のステップは、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のスケールで表されます。

AWSでレイヤーを作成する

zipファイルが準備できたら、AWS Lambdaサービスページに移動し、「Layers」を選択します。

AWS Lambda layers

Layersページから、オレンジ色の「Create layer」ボタンをクリックして作成ウィザードを開きます。

Creating a layer in AWS

新しいレイヤーの名前と説明を指定して、このレイヤーが何であるかを知ることができます。「Upload a .zip file」オプションを選択し、作成したばかりのzipファイルをアップロードします。次に、アップロードボタンをクリックし、Python Requestsレイヤーのzipファイルを選択します。この特定の例では、コストパフォーマンスがx86に比べて良いarm64アーキテクチャを選択しましたが、要件に最も適したアーキテクチャを選択してください。最後に、このレイヤーはPython 3.9用に作成されたため、互換性のあるランタイムのリストからPython 3.9とPython 3.10を選択します。

「Create」をクリックし、すべての設定が完了です!これで、requestsモジュールが含まれた新しいレイヤーができました。

Lambda関数でレイヤーを使用する

私たちが作成した新しいレイヤーをLambda関数にどのように組み込むか見てみましょう。Pythonで既存のLambda関数を持っている場合は、その関数に移動します。既存のものがない場合は、読み進めていただくか、新しい例のLambda関数を作成して、進行に沿ってください。

Lambda function overview

Function overviewセクションから、関数名の下にある「Layers」ボタンをクリックします。または、ページの下部にスクロールするとLayersセクションが表示されるので、そこで「Add a layer」をクリックします。

Lambda function layersAdd layerウィザードで、Custom layersを選択し、ドロップダウンから先ほど追加したレイヤーを選択します。私たちはバージョン1しか持っていないので、1を選択します。addをクリックします。

Adding a layer to AWS Lambda function

これで、Python Lambdaスクリプトにrequestsモジュールを追加しました!結論として、PythonのrequestsモジュールのためのAWS Lambdaレイヤーを作成することは、AWS Lambda関数でHTTPコールを行いたい人にとってシンプルで強力なソリューションです。このアプローチを用いれば、開発者は依存関係のインストールや管理の面倒を避けつつ、コードをクリーンで簡潔に保つことができます。このブログで説明された手順に従えば、自分自身のレイヤーを簡単に作成し、今日からAWS Lambda関数でrequestsモジュールを利用することができます。足りない依存関係に振り回されることなく、この強力なソリューションを活用して、AWS Lambda関数の全潜在能力を解放しましょう。

弊社の特徴

KeyQでは、最新技術を活用してビジネスが競争に勝ち抜くことの重要性を理解しています。弊社の専門家チームは、AWS Lambdaおよびサーバーレス技術のあらゆる面での支援が可能です。これには、カスタムLambdaレイヤーの作成、Lambda関数の最適化、これらの強力なツールを最も効果的に活用する方法に関するガイダンスが含まれます。手頃な価格で高品質なソフトウェア開発サービス、迅速な開発、プロトタイピング、デプロイメントのためのクラウド対応フレームワークを提供するKeyQは、AWS Lambdaおよびサーバーレス技術を最大限に活用したいと考えるあらゆるビジネスにとって最適なパートナーです。お客様のビジネスを次のレベルに引き上げるために、私たちがどのようにお手伝いできるか、今日ご連絡ください。

スタートアップ向けアプリ開発を加速するためのフレームワーク

Kenneth Hough

背景

私は2020年3月にKeyQを創設しました。これは、革新的で意味のあるクラウドソリューションを提供することで、ビジネスが次の成功のレベルを達成するのを支援するというビジョンを持っています。その設立以来、私はいくつかの企業、非営利団体、大学と共に、ビジネスプロセスを合理化しコストを削減するのに役立つクラウドアプリケーションの設計と構築に取り組んできました。

KeyQに入る前は、アラバマ大学バーミンガム校(UAB)の肺、アレルギーおよび集中治療医学部で医学研究者でした。また、UABではJessy Deshane, PhDとVictor Thannickal, MDの指導の下、私の博士論文に取り組みました。UABでの博士研究中、私は「オミクス」およびビッグデータに触れ、クラウドでのデータ駆動型分析プラットフォームを開発するというキャリア選択に影響を与えました。

また、生化学を専攻したWorcester Polytechnic Institute(WPI)での学部教育にも大きな感謝を述べたいと思います。WPIのモットーは「Lehr und Kunst」で、大まかに「理論と実践」または「学習と熟練した芸術」に翻訳されます。WPIはこの教育法を真に大切にし、教育スタイルとクラスサイズによってそれが見て取れます。WPIでの学習経験はユニークであり、学び、実践し、応用することができる私を形作るのに大きく貢献しました。

個人的な興味

革新的な技術を学び、新しいことに挑戦することが大好きです。興味の範囲は広く、サーバーレスアーキテクチャ、機械学習、人工知能、バイオインフォマティクス、医療情報学、金融技術などが含まれます。また、2021年のCFAレベル1試験に向けて取り組んでいます。その他の興味や趣味には旅行、ロッククライミング、ラペリング、洞窟探検、キャンプ、園芸などがあります!