AWS Lambda(Python)のライブラリ読み込みや環境変数を解説

未分類

今回はAWS Lambdaを触ってみての知見を紹介していきます。
なお、以下はPython3.6が前提です。
作成したLambda関数は定期実行していきます。

AWS Lambdaとは

AWS Lambdaはサーバーの管理を全く必要とせずに仮想的にコードを実行できるサービスです。
現在はNode.js、Java、C#、Go、Pythonが利用可能な言語になっています。
今回はPython3.6を言語として選択しました。

AWS Lambdaの作成手順

ライブラリを読み込んでいる場合はzipファイルに圧縮してアップロードする必要があります。
逆にライブラリを読み込んでいない場合はソースコードをコピーしてAWS Lambdaにペーストすれば実行することができます。
ただ、大抵はライブラリを読み込んでいるので、以下でLambda関数の作成からzip圧縮、アップロードまでの手順を説明していきます。

フォルダを作成

まずは今回用にフォルダを作成して、その中で作業していきます。

ライブラリをインストール

requestsというHTTP通信を行うためのライブラリをインストールします。

tオプションをつけることでライブラリのインストール先を指定しています。今回は . でカレントディレクトリにインストールします。

ファイルを作成する

ファイルを作成しましょう。このファイルにLambdaで定期実行する処理を書いていきます。

関数にlambda_handler(event, context)を指定する

関数にはハンドラーを指定しなければ実行されないので追加していきます。
これはAWS Lambdaがはじめに呼び出すコード内の関数になります。

ここでは簡単なステータスコードを取得しています。
引数のeventは、Lambdaのトリガーとなったイベントの情報を取得していて、contextは実行中のLambda関数のランタイム情報を提供しています。
ステータスコードを取得するURLは環境変数から取得しています。

これで[AWS Lambda](https://aが呼び出す関数を作成できました。

zipファイルに圧縮する

作成したファイル群をzipファイルに圧縮します。

Lambdaにアップロードするzipファイルになるのでファイル名はupload.zipにしています。
ライブラリをインストールした階層でこのコマンドを実行すればzipファイルを作成します。
作成されたzipファイルはカレントディレクトリに作成されます。
lsで確認すると、upload.zipが存在しているのがわかります。

zipファイルをAWS Lambdaにアップロードする

設定画面内で先ほど作成したzipファイルをアップロードしていきます。

まずはAWSマネジメントコンソールからLambdaを選択しましょう。画面上に出て来ない方は検索をしてください。
Lambdaを選択したら関数の作成を押下しましょう。

設定画面へ遷移するのでここで作成する関数の情報を設定します。
今回は関数名に「test」、ランタイムに「Python3.6」、既存のロールに「Lambda」を設定しています。

画面が遷移するので、左上のコードエントリタイプから「.zipファイルをアップロード」を選択し、作ったコードをアップロードしましょう。

環境変数を設定する

os.environで呼び出している環境変数を、AWS Lambda内に設定することで使用できるようになります。
先ほどのサンプルコードの中ではos.environ.get(‘URL’)がこれに当たります。

設定画面内に環境変数の設定項目があるので、そこにキーと値を設定しましょう。とても簡単です。

CloudWatchを設定

作成したLambda関数を定期実行するためにCloudWatchを使います。
AWSマネジメントコンソールからCloudWatchを選択しましょう。

画面上に出て来ない方は検索をしてください。CloudWatchを押下したらメニューバーのルールからルールの作成を押下しましょう。

今回はCron式で月曜〜金曜の午前9時に定期実行しています。
ターゲットを選択する画面が右側にあるので、先ほど作成したLambda関数を選択します。

これで定期実行できるようになります。
CloudWatchのログを確認するとsuccessが月〜金の午前9時に出力されているはずですよ!

定期実行できていない場合にログを確認する

定期実行できない場合もCloudWatchのログを確認しましょう。
先ほど「ルールを作成」を押下した画面をもう一度開き、サイドメニューのログをクリックするとロググループが表示されます。

そして作成したlambda関数名のロググループを押下すればログを確認することができます。

マサ

文系出身のWEBエンジニア
メインの開発言語はPHP
リモートワークで旅をすることが夢です。

マサをフォローする
未分類
マサをフォローする
サーフエンジニアチャンネル

コメント

%d人のブロガーが「いいね」をつけました。