LoginSignup
26
28

More than 5 years have passed since last update.

API GatewayでプライベートAPIを作成する

Last updated at Posted at 2018-06-16

はじめに

Amazon API Gateway でプライベートなAPIを作成できるようになりました。
https://aws.amazon.com/jp/about-aws/whats-new/2018/06/api-gateway-supports-private-apis/

こちらを試してみたいと思います。

VPCエンドポイントの作成

ローカルAPIへの接続には PriavateLink によるインターフェースVPCエンドポイントを使用します。

image.png
https://docs.aws.amazon.com/ja_jp/apigateway/latest/developerguide/apigateway-private-apis.html

VPC コンソールから エンドポイントの作成へ進み、サービス名の選択で、
com.amazonaws.ap-northeast-1.execute-api を選択します。

image.png

VPC, subnet, セキュリティグループ はそれぞれ任意のものを指定し、エンドポイントの作成を行います。
セキュリティグループ では 443 のインバウンドを許可する必要があります。
プライベートDNS名を有効にする にチェックを入れると
「execue-api.ap-northeast-1.amazonaws.com」のVPC内のルックアップが、
作成するエンドポイントのIPアドレスに解決されます。

image.png

プライベートAPIの作成

API Gateway コンソールから新しい API を作成します。
ここでは APIの例 を使用します。
エンドポイントタイプでプライベートを選択します。

image.png

image.png

作成したAPI(例を使用した場合はPetStore)に以下のようなリソースポリシーを設定します。
{{vpceID}} に作成したVPCエンドポイントのIDを指定します。

policy.json
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "execute-api:Invoke",
            "Resource": [
                "execute-api:/*"
            ],
            "Condition" : {
                "StringEquals": {
                    "aws:sourceVpce": "{{vpceID}}"
                }
            }
        }
    ]
}

リソースポリシーを設定したらAPIをデプロイします。

image.png

プライベートAPIの場合、ステージエディター上で、呼び出し用のURLは表示されません。

image.png

プライベートAPIの呼び出し

プライベートDNSを使用する場合、API は以下の形式で呼び出すことができます。

https://{restapi-id}.execute-api.{region}.amazonaws.com/{stage}
$ curl https://{restapi-id}.execute-api.ap-northeast-1.amazonaws.com/dev/pets/1
{
  "id": 1,
  "type": "dog",
  "price": 249.99
}

DirectConnet経由で接続する場合等は、プライベートDNSを使用できないため、
以下のようにパブリックDNSでAPIを呼び出します。
Hostヘッダで {restapi-id}を含めてリクエストします。

$ curl https://vpce-XXXXXXXXXXXXXXXXX-XXXXXXXX.execute-api.ap-northeast-1.vpce.amazonaws.com/dev/pets/2 -H'Host:{restapi-id}.execute-api.ap-northeast-1.amazonaws.com'
{
  "id": 2,
  "type": "cat",
  "price": 124.99
}

参考:既存APIのエンドポイントタイプ変更

コンソールのAPIリストで歯車ボタンを押すと、作成済みのAPIのエンドポイントタイプを変換できます。
既存のRegional API、Edge Optimized APIをプライベートAPIに変換できます。

image.png

プライベートAPIは Regional APIに変換できますが、Edge Optimized APIに変換できないので注意が必要です。
image.png

以上です。
参考になれば幸いです。

26
28
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
26
28