1
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?

AWS Lambdaのレプリカって?

Posted at

はじめに

AWS Lambdaの気になる機能調べてみた記事3つ目です。

今回も画面左側に表示されているメニューのレプリカについて調べてみます。
スクリーンショット 2025-01-06 3.58.27.png

Lambda@Edgeが各リージョンにコピーされたもの。

結論は、Lambda@Edgeが各リージョンにコピーされたものでした。

下記の説明の通り、Lambda@Edgeはバージニア北部のリージョンで作成されたものが、各リージョン(+エッジロケーション)にコピーされ、ユーザに近いロケーションで実行されるためです。

Lambda@Edge は、Amazon CloudFrontの機能で、アプリケーションのユーザーに近いロケーションでコードを実行できるため、パフォーマンスが向上し、待ち時間が短縮されます。Lambda@Edge では、世界中の複数のロケーションでインフラストラクチャをプロビジョニングまたは管理する必要はありません。課金は実際に使用したコンピューティング時間に対してのみ発生し、コードが実行されていないときには料金も発生しません。

作ってみる。

Lambdaの準備

バージニア北部リージョンで作成する必要があります!

node.jsでレスポンスヘッダを加工するソースを用意しました。

export const handler = async (event, context) => {
  const response = event.Records[0].cf.response;
  const request = event.Records[0].cf.request;

  // セキュリティヘッダーを追加
  response.headers['strict-transport-security'] = [{
      key: 'Strict-Transport-Security',
      value: 'max-age=31536000; includeSubdomains'
  }];
  
  response.headers['x-content-type-options'] = [{
      key: 'X-Content-Type-Options',
      value: 'nosniff'
  }];

  // キャッシュ制御
  response.headers['cache-control'] = [{
      key: 'Cache-Control',
      value: 'public, max-age=86400'  // 24時間
  }];

  return response;
};

また、Lambda@Edgeとして動作させるため、Lambdaの実行ロールの信頼関係にedgelambda.amazonaws.comを追加しておきます。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": [
+                    "edgelambda.amazonaws.com",
                    "lambda.amazonaws.com"
                ]
            },
            "Action": "sts:AssumeRole"
        }
    ]
}

CloudFrontへの紐付け

CloudFrontへの紐付けをしていきます。

作成したLambdaの+ トリガーを追加を選択します。

スクリーンショット 2025-01-05 5.31.46.png

CloudFrontを選択し、Lamdba@Edgeへのデプロイを選択します。

スクリーンショット 2025-01-05 5.25.15.png

任意のCloudFrontディストリビューションを選択し、デプロイを選択します。

スクリーンショット 2025-01-05 5.26.15.png

なお、Lambda@Edgeへのデプロイを確認のチェックボックスは外すとエラーになる模様です。(必要なのかこれは、、)

スクリーンショット 2025-01-05 5.33.47.png

レプリカに表示された!

デプロイが完了すると、レプリカにも無事表示されるようになりました。

スクリーンショット 2025-01-05 5.35.49.png

余談

2025/01時点では、インフォパネルの説明が誤ってそうです。
(一つ上のメニューである、Lambdaレイヤーになってる)

スクリーンショット 2025-01-06 4.05.34.png

最後に

今まではCloudFront Functionsで事足りてたため、Lambda@Edgeを触ることがなかったのですが、Lambda@Edgeの作り方を知ることができてよかったです!

これでメニューに表示されている一通りの疑問点は解消できたかな?

1
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
1
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?