0
0

API Gatewayとlambdaを使用してみる

Posted at

目的

AWS Certified Developer - Associateの勉強をしている中で
理解が浅いサービスについて実際に使用してみます

今回はAPI GatewayとLambdaを使用して、リクエストを送れるまでをやってみます

手順

  • Lambda関数の作成
  • API Gatewayの設定

Lambda関数の作成

1. Lambdaのページに移動、左のメニューから関数を選択
2. 右上の関数の作成を選択

image.png

3. 下の設定で作成(記載していないものはデフォルト設定です)
関数の作成:一から作成
基本的な情報
関数名:test_lambda
ランタイム:Python

コードは作成時に用意されているサンプルをそのまま使用します

import json

def lambda_handler(event, context):
    # TODO implement
    return {
        'statusCode': 200,
        'body': json.dumps('Hello from Lambda!')
    }

API Gatewayの設定

APIの作成

1. API Gatewayのページに移動、左のメニューからAPIを選択
2. 右上のAPIを作成を選択

image-1.png

3. 下の設定で作成(記載していないものはデフォルト設定です)
API タイプを選択:REST API
名前と説明
API 名:test lambda API

メソッドの作成

1. 作成されたAPIを選択、左のメニューからリソースを選択
2. アクションからメソッドの作成を選択、GETで作成

image-2.png

3. 以下の内容でセットアップ
Lambda関数の作成で作成した関数が見つからない場合、
Lambda関数の名前やリージョンが正しいことを再確認します

image-3.png

テスト

1. テストを選択

image-4.png

2. 下のテストを選択し、レスポンス本文にLambdaの内容があることを確認

image-6.png
image-5.png

IP制限

このままだと外部に公開した際に、誰からでもアクセスできる状態のため制限をします
今回はリソースポリシーでIPによる制限を試してみました

1. 作成されたAPIを選択、左のメニューからリソースポリシーを選択
2. ポリシーを設定し、保存を選択
今回は以下のサイトのサンプルを参考に設定します
https://repost.aws/ja/knowledge-center/api-gateway-resource-policy-access

sourceIpOrCIDRBlock部分を許可したいIPに変更します

["52.95.36.0/22", "15.230.39.196/31", "52.93.178.219/32"]

{
  "Version": "2012-10-17",
  "Statement": [{
      "Effect": "Allow",
      "Principal": "*",
      "Action": "execute-api:Invoke",
      "Resource": "execute-api:/*/*/*"
    },
    {
      "Effect": "Deny",
      "Principal": "*",
      "Action": "execute-api:Invoke",
      "Resource": "execute-api:/*/*/*",
      "Condition": {
        "NotIpAddress": {
          "aws:SourceIp": ["sourceIpOrCIDRBlock", "sourceIpOrCIDRBlock"]
        }
      }
    }
  ]
}

デプロイ

外部からアクセスできるようにするための作業です

1. 作成されたAPIを選択、左のメニューからリソースを選択
2. アクションからAPIのデプロイを選択

image-7.png

3. 下の設定でデプロイ
デプロイされるステージ:[新しいステージ]
ステージ名:test

4. URLの生成が行われる
画面上あたりに生成されたURLが記載されています
デプロイ後にリソースポリシーを変更した場合、再度デプロイが必要なので注意が必要です

アクセス確認

生成されたURLにアクセスし、うまく表示されていれば成功です

またIPによる制限がうまくいっている場合、
許可されていないIPからのアクセスは以下のようなメッセージが表示されます

{"Message":"User: anonymous is not authorized ~省略~ with an explicit deny"}

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