Help us understand the problem. What is going on with this article?

Lambda + API Gateway を任意のドメイン(SSL)で使用する方法を調べてみた

More than 3 years have passed since last update.

やりたいこと

  • example.execute-api.ap-northeast-1.amazonaws.com っていう URL の Lambda + API Gateway の API を
  • example.com または api.example.com っていうドメインで使用したい
  • SSL で。

下記 2通りの方法がありそうです。

1. CloudFront の Origin に API Gateway のドメインを指定する

手順

  1. Certificate Manager で CloudFront に設定する SSL 証明書を取得
  2. 1.で取得した証明書使って CloudFront の Distribution 作成
  3. Origin に example.execute-api.ap-northeast-1.amazonaws.com 指定

気になる点

  • 後述の API mapping 使えないので、ドメイン以降の URL を好きにできない
    • しかし API Gateway の公開用エイリアスを api っていう名前にしとけば、https://example.com/api/hello とかで公開用 API だけを CloudFront に設定できそう
  • 二重に CloudFront 使ってる気がする
    • そもそも API Gateway が CloudFront を使ってそうなので、クラウド-クラウドやんっていう

所感

  • SSL 証明書は勝手に更新してくれてしかも無料なんて最高

2. API Gateway のカスタムドメインを使用する

手順

公式ドキュメント参照ください。簡単。

気になる点

  • まだ Certificate Manager が使用できない
  • 証明書は自前で用意する必要がある
  • そのSSL 証明書が今のところ更新不能らしい(致命的)
    • 証明書を更新するには証明書を作りなおしてカスタムドメインの設定をやり直す必要があるのでダウンタイムが発生する
    • CLI でも無理そう(クライアント側証明書は更新できそう?) - CLI ドキュメント
    • letsencrypt の SSL 使って証明書自動更新とか考えてたけど諦めた
  • SSL を使用する場合の料金
    • SNI だから多分安い

いいところ

  • API mapping が使用できる

例えば、hello っていう API があって下記のようにエイリアスが設定されているとして、

  • /dev/hello (開発用エイリアス)
  • /prod/hello (本番用エイリアス)

下記のようにマッピングすることができます。

https://api.example.com/hello -> /prod/hello

所感

公式ドキュメントにはこっちが記載されてるので使っちゃいそうですが、
SSL 証明書更新できないのであればまだ止めといた方がよさそうです。(2016/3/4 時点)

参考URL

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away