5分でわかる!AWS Lambda の使い方

クラウド
クラウド
スポンサーリンク

AWS Lambda(ラムダ)は、サーバーの構築や保守、負荷対策などの管理をすることなく、プログラムコードを実行することができるサービスです。サーバーの管理が一切不要になるので「サーバーレスコンピューティング」と呼ばれることもあります。そこで今回は、AWS Lambda(Python 3.7)の簡単な使い方をまとめてみました。

関数の作成

AWSマネジメントコンソールで、サービス > Lambda >「関数の作成」をクリックします

「一から作成」をクリックします。

適当な関数名を入力し、お好みのランタイム(プログラム言語)を選択します。また、関数を実行するためのロールが必要になりますので、今回はロール名を入力して新しいロールを作成します。入力が終わったら「関数の作成」をクリックします。

1〜2分で関数が作成されます。

トリガーの設定

続いて、関数を実行するためのトリガーを設定します。

トリガーは色々選べますが、今回は基本的な「API Gateway」を選択します。

新規の API を作成し、セキュリティは「APIキー使用でのオープン」を選択して(このあたりは用途にあわせて選択してください)「追加」をクリックします。

最後に画面右上の「保存」をクリックします。

保存が終わると API が作成され、エンドポイントの URL と APIキーを確認できます。

関数を API Gateway 経由で実行してみましょう。APIキーを「x-api-key」ヘッダーに指定してリクエストを実行します。「Hello from Lambda!」と表示されればOKです。

curl https://071hdrljvl.execute-api.ap-northeast-1.amazonaws.com/default/sample \
--header 'x-api-key: <AIPキー>'
 
"Hello from Lambda!"

オリジナルの関数の作成

今回はサンプルとして、素数(1と自分自身以外に約数を持たない数)を判定する関数「is_prime」を作ってみます。クエリストリング「number」で指定した数が素数であれば True、素数でなければ False を返す関数です。

def main(event, context):
    number = event['queryStringParameters']['number']
    result = is_prime(int(number))
    
    return {
        'statusCode': 200,
        'body': result
    }
    
def is_prime(number):
    if number == 1:
        return False
    
    for p in range(2, number):
        
        if number % p == 0:
            return False
        
    return True

関数名をクリックして関数コードを表示させます。

初期状態では「lambda_function.py」ファイルの「lambda_handler」関数が実行されるように設定されています。(これが先ほど実行された関数です)

API Gateway 経由で Lambda を使う場合は、レスポンスの設定は上のような作法に従いましょう。たぶんハマりどころです(^^;)
参考資料:API Gateway で統合レスポンスを設定する | AWS ドキュメント
 

「File」>「New File」を選択して新しいファイルを作成します。

オリジナルの関数「is_prime」のコードを入力します。

「File」>「Save」を選択します。

適当なファイル名を入力して「Save」をクリックします。

ファイルが保存されたことが確認できたら、ハンドラに「<拡張子を除いたファイル名>.<実行する関数名>」を入力し、「保存」をクリックします。

テストイベントの作成

続いて関数をテストするためのテストイベントを作成します。

ページ上部の「テスト」をクリックします。

イベントテンプレート「Amazon API Gateway AWS Proxy」を選択して、適当なイベント名を入力します。「queryStringParameters」に、キー「number」を追加し素数判定する数字を指定したらページ右下の「作成」をクリックします。

作成したテストイベントを選択し、「テスト」をクリックすればテストが実行されます。

プログラムにエラーがある場合は、下のようなエラーログが表示されますのでデバッグすることができます。

関数の実行

API の URLにクエリストリング「number」を追加して実行すれば is_prime 関数が実行されます。

curl https://071hdrljvl.execute-api.ap-northeast-1.amazonaws.com/default/sample?number=3 \
--header 'x-api-key: <AIPキー>'
 
true

おわりに

AWS Lambda は、AWS IoT ボタンや スマートスピーカー Alexa からの音声リクエストもトリガーにできるようです、アイデア次第で面白サービスが簡単に作れそうですね。

コメント

タイトルとURLをコピーしました