17
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

AWS Lambda で動的HTMLコンテンツを配信する(Lambdaプロキシ統合を利用)

Last updated at Posted at 2017-06-26

静的な内容ならS3に置いてWEBホスティングを有効にすればいいのですが、動的にHTMLを生成する場合にLambdaでHTMLを生成してレスポンスする方法です。この方法だとEC2等のサーバを運用する必要がありません。

Lambda

例として適当なHTMLの内容を返すコードは次のとおりです。

exports.handler = (event, context, callback) => {
  // もしQueryStringから値を取り出したい場合はevent.queryStringParametersから取得する

  // 動的にHTMLの内容を作成
  const html = `
  <html>
    <meta http-equiv="Content-Type" content="text/html" charset="utf-8">
    <body>
      <h1>Test Page</h1>
      こんにちわ!
    </body>
  </html>`;

  // Lambdaプロキシ統合の場合は下記のようなObjectでレスポンスを返せる
  const response = {
    statusCode: 200,
    headers: {
      'Content-Type': 'text/html',
    },
    body: html,
  };

  callback(null, response);
};

API Gateway

Lambdaプロキシ統合の使用にチェックをつけて、先程 作成したLambdaを指定します。

スクリーンショット_2017-06-26_11_05_26.png

動作確認

上記のAPIをAWSのコンソールからデプロイして、

スクリーンショット 2017-06-26 11.12.27.png

ブラウザでアクセスしてみます。

スクリーンショット 2017-06-26 11.14.52.png

補足

Lambdaが起動するのに時間がかかるので、実際の運用で利用する場合はAPI Gatewayでキャッシュを設定するか、CloudFront等のCDNを利用するのがよいかと思います。

以上

17
14
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
17
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?