1.はじめに
どうも、ARIの名古屋支社に勤務している愛知県民です♪
(/・ω・)/
2022年4月6日にLambda関数に「関数URL」という機能が追加されたようです。
一言でいうと、API Gatewayの設定なしで外部からLambda関数を呼べるみたいです!
そこで今回はLambda関数の関数URLの使い方を説明したいと思います♪
AWSについて勉強中の方の参考になれば幸いです。
(*^^)v
2.用語の説明
2.1.Lambdaとは
LambdaとはAWSのサービスの1つで、コードを書くだけで即実行ができるサービスのことです。
サーバの設定等が不要なため、便利です。
ただし、15分以上続けて実行することはできないため、
複雑なアプリケーションの場合はEC2やECRでの実行が必要となります。
3.前提条件
- Lambda関数が作成済であること
- Lambda関数を実行するIAMユーザが作成済であること
- 上記IAMユーザに「lambda:InvokeFunctionUrl」の権限が付与されていること
- 上記IAMユーザのアクセスキー・シークレットアクセスキーの情報を取得していること
4.関数URLを設定する
では早速、関数URLを設定してみます。
4.1.Lambdaの管理画面から「設定」を選択します。
4.2.「関数URL-新規」を選択し、「関数URL」を作成を選択します。
4.3.以下の表のとおりに設定し、「保存」を選択します。
項目 | 設定内容 |
---|---|
認証タイプ | NONE |
オリジン間リソース共有(CORS)を設定 | チェックあり |
許可オリジン | * |
許可メソッド | * |
4.4.URLが表示されるので、コピーします。
4.5.ブラウザを開き、コピーしたURLにアクセスします。
4.6.Lambdaからの戻り値が表示されます。
※以下のLambdaを使用した場合の画像となります。
import json
import logging
#ロガーの生成
logger = logging.getLogger('log')
#デバッグレベルの設定
logger.setLevel(logging.INFO)
def lambda_handler(event, context):
# TODO implement
logger.info(json.dumps(event));
return {
'statusCode': 200,
'body': json.dumps('関数URLのテストです。',ensure_ascii=False)
}
5.セキュリティ向上のため、IAMユーザの認証情報を使用して接続する
4節で外部からLambda関数を呼べることが分かりましたが、
そのままの設定では、URLを知っていれば、世界中の誰でもアクセスできるため、
IAMユーザの認証情報を使用して、外部からのアクセスを制限する方法について記載します。
5.1.関数URLの画面から「編集」を選択します。
❘ |
---|
5.2.認証タイプを「AWS_IAM」に変更し、「保存」を選択します。
5.3.ブラウザからアクセスするとエラーになります。
5.4.コマンドプロンプトを開き、以下のコマンドを実行します。
※(IAMユーザのアクセスキー)と(IAMユーザのシークレットアクセスキー)の間にある「:」を忘れないようにしてください。
curl -XPOST "(関数のURL)" -H "Content-Type: application/json" --aws-sigv4 "aws:amz:ap-northeast-1:lambda" --user "(IAMユーザのアクセスキー):(IAMユーザのシークレットアクセスキー)"
5.5.Lambdaからの戻り値が表示されます。
(IAMユーザの認証情報を利用して認証ができています)
6.おわりに
ここまで読んで下さり、ありがとうございます!!!
(^^)
関数URLを使うことで、API Gatewayよりも簡単にLambda関数を呼び出すことができました!
ただ、POST・GETの場合に呼び出すLambdaを変えるということはできなさそうだったので、
その場合はAPI Gatewayが活躍するのかなと感じました。
AWSは今後もアップデートされるので、何か気づいたら記事にします♪
(:3_ヽ)_