3
3

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 1 year has passed since last update.

サーバレス環境構築(APIGateway+Lambda)

Last updated at Posted at 2023-09-11

はじめに

Cloudfront + S3 + APIGateway + Lambda を使い、初めてサーバレス環境を構築しました。
自身の備忘録として記述しますが、どなたかのお役に立てたら光栄です。
(不足が多々あるかと思いますがご容赦ください!)

※本記事は以下の「サーバレス環境構築(CloudFront+S3)」に続く作業となります。
 https://qiita.com/mtsunezawa/private/4c1cdfa8f569d5523d2b

構成について

  • CloudFront Functions を利用し、特定のIPアドレスのみアクセスを許可
  • 静的コンテンツは S3 Bucket へ保存
  • 動的コンテンツは API Gateway を利用
  • Lambdaはデフォルトの"Hello Lambda" を利用

今回は、APIGatewayとLambda関数を構築したいと思います。

環境構築

①Lambda構築

  • Lambdaへ遷移後「関数の作成」をクリック
    image.png

  • 「関数の作成」画面となるので、以下を設定。その他の項目についてはデフォルトままとする。
    ・「一から作成」を選択
    ・関数名: ※任意の関数名を入力
    image.png

  • 関数が正常に作成された後、index.mjsの内容を修正します。
     ※ 'Hello from Lambda!' を'Hello from Lambda-AAA!' に修正しています。

index.mjs 修正後
export const handler = async (event) => {
  // TODO implement
  const response = {
    statusCode: 200,
    body: JSON.stringify('Hello from Lambda-AAA!'),
  };
  return response;
};
  • 変更後、「Deploy」をクリックする。
    ※以下はDeployクリック後の画面
    image.png
    以上でLambda-Aの構築は完了です。
    同様にLambda-Bを構築し、Lambdaの構築は完了となります。
    (手順は上記を読み替えてください。)

②APIGateway の構築

  • APIGatewayへ移動し「API」を選択します。
    APIタイプは「REST API」とし構築をクリック
    image.png
  • 作成画面が表示されるので以下を選択
    ・REST
    ・新しいAPI
    ・API名: ※任意の名称
    ・説明: ※任意
    ・エンドポイントタイプ:リージョン
    image.png
  • 作成後、リソースやステージを作成します。
    リソースを表示させ、アクション → リソースの作成をクリックします。
    image.png
  • 新しい子リリースのページが開くので以下を入力し「リソースの作成」をクリックします。
    ・リソース名: ※任意(本記事ではLambda-Aとしています)
    ・リソースパス: ※任意(本記事では自動入力された値をそのまま利用します)
    image.png
  • lambda-aリソースが作成されます。
    「lambda-a」をクリックし、アクション → メソッドの作成をクリックします。
    image.png
    「lambda-a」の下にプルダウンが表示されるので「GET」を選択し、横のチェックマークをクリックします。
    image.png
  • セットアップ画面が表示されるので、以下を入力し「保存」をクリックします。
    ・統合タイプ:Lambda関数
    ・Lambdaプロキシ統合の利用:チェックしない
    ・Lambdaリージョン:ap-northeast-1
    ・Lambda関数:lambda-A (※←は上記で作成したLambda関数名を指定)
    ・デフォルトタイムアウトの使用:チェックする
    image.png
    保存をクリックすると、以下のような権限追加の確認が表示されるので、OKをクリックしてください。
    image.png
    作成されました
    image.png
    以上で「lambda-a」用のリソースが作成できました。
    同様の手順でlambda-b用のリソースも準備してください。
    (手順は上記を参考に作成してください)
    lambda-b作成後は以下のようになります。
    image.png
  • 次に「APIのデプロイ」を実施します。
    リソースのアクションから「APIのデプロイ」をクリックします。
    image.png
  • APIのデプロイ画面が表示されるので、以下を入力し「デプロイ」をクリックします。
    ・デプロイされるステージ:「新しいステージ」を選択
    ・ステージ名: ※任意(今回はtestを設定)
    image.png
    ステージが作成され「URLの呼び出し」が作成されます。
    image.png
    このURLに上記でリソースとして作成した「/lambda-a」を付け加えてアクセスしてみます。
    Lambda-A作成時に設定した「Hello from Lambda-AAA!」が返ってきているのが確認できます。
    image.png
    lambda-bも同様に「Hello from Lambda-BBB!」が返ってくるはずなので確認してください。
    以上でAPIGatewayとLambdaが連携するようの構築は完了となります。

次回以降でCloudFrontとAPIGatewayの連携を設定したいと思います。

3
3
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
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?