0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Lambda 関数 URL で OAC で CloudFront 経由の実行のみを許可する

Posted at

概要

抑えておくべき用語

Lambda 関数 URL

API Gateway 無しに Lambda のメニューから機能を ON にするだけ HTTPS 公開ができる。

OAC

指定された CloudFront ディストリビューションからのアクセスのみにする。

やってみる

Lambda 1

Lambda 関数は単純に Hello World を返すもののため省略します。

関数 URL には「AWS_IAM」を指定。
スクリーンショット 2024-05-01 15.46.43.png

CloudFront

Origin domain に「関数 URL」を指定。
スクリーンショット 2024-05-01 15.51.52.png

Origin access control を作成し指定。
スクリーンショット 2024-05-01 15.57.55.png

Lambda 2

作成中に表示さされた CLI を実行して、リソースベースのポリシーステートメントを追加します。

aws lambda add-permission \
--statement-id "AllowCloudFrontServicePrincipal" \
--action "lambda:InvokeFunctionUrl" \
--principal "cloudfront.amazonaws.com" \
--source-arn "arn:aws:cloudfront::123456789012:distribution/XXXXXXXXXX" \
--region "ap-northeast-1" \
--function-name oac_lambda_function_url

動作確認

CloudFront ディストリビューションドメイン名でアクセスできることを確認

curl https://XXXXXXXXXXXX.cloudfront.net/                                   
{
    "version": "2.0",
    "routeKey": "$default",
    "rawPath": "/",
    "rawQueryString": "",
    "headers": {
        "x-amz-content-sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
        "cloudfront-is-android-viewer": "false",
        "x-amzn-tls-version": "TLSv1.2",
        "cloudfront-viewer-country": "JP",
        ///以下省略

Lamda 関数 URL でアクセス拒否されることを確認

curl https://XXXXXXXXXXXX.lambda-url.ap-northeast-1.on.aws/
{"Message":"Forbidden"}%            
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?