AWS Lambda 関数URLがCloudfrontのOACに対応

クラウド活用に関するさまざま情報をお届けするメルマガを毎週配信しておりますので、ぜひこの機会にご登録ください。
![]() |
こんにちは、ながもんです。 |
|---|
アップデート内容
AWS Lambda 関数URLは単体でHTTPSを実行できる機能です。従来はAPI Gatewayを介在させていましたが、LambdaがURLを発行できるようになり迅速な構築が可能となりました。しかし、Lambda 関数URLの実行はIAMを用いて認証するか、全く認証しないかの二つしかなく、痒い所に手が届かない状況でした。

しかし、今回のアップデートで、Cloudfrontからのアクセス時のみ起動可能になる設定が追加されました。
実際に試してみます
まずはAWS Lambda 関数URLを発行し、認証はなしで文字列を出力させます。

認証はNONEにしており、表示されることを確認しました。
次にCloudfrontを構築します。
注意点は作成時の「Create new OAC」です。


名前だけ入力しました。オリジンタイプがLambdaを確認。

Createしたら注意書きが出てきました。GUIで完結しないので注意が必要です。

ボタン一つでコピーされるのは便利ですね。
aws lambda add-permission ¥--statement-id "AllowCloudFrontServicePrincipal" ¥--action "lambda:InvokeFunctionUrl" ¥--principal "cloudfront.amazonaws.com" ¥--source-arn "arn:aws:cloudfront::XXXXXXXX:distribution/XXXXXXXX" ¥--function-name <YOUR_FUNCTION_NAME>
このようなコマンドでした。
早速叩いてみます。
{"Statement": "{¥"Sid¥":¥"AllowCloudFrontServicePrincipal¥",¥"Effect¥":¥"Allow¥",¥"Principal¥":{¥"Service¥":¥"cloudfront.amazonaws.com¥"},¥"Action¥":¥"lambda:InvokeFunctionUrl¥",¥"Resource¥":¥"arn:aws:lambda:ap-northeast-1:XXXXXXXX:function:test_nagakubo¥",¥"Condition¥":{¥"ArnLike¥":{¥"AWS:SourceArn¥":¥"arn:aws:cloudfront::XXXXXXXX:distribution/XXXXXXXX¥"}}}"}
受理されたようです。
NONEに設定した場合はOACを無視してアクセスできました。
AWS_IAMに設定しなおします。


期待通りに直接のアクセスは出来ません。
Cloudfront経由です。

アクセスできました。
まとめ
Lambdaのオリジン保護が課題だったので、一気に用途が広がりそうです。パスによってはLambdaを動かしてMVC系のフレームワークとの振り分け等にも使えそうですね。
RECOMMEND
その他のコラム
相談無料!プロが中立的にアドバイスいたします
クラウド・AWS・Azureでお困りの方はお気軽にご相談ください。







