ちょっと話題の記事

【新機能】Amazon API GatewayがACM (AWS Certificate Manager)に対応。簡単に独自ドメインAPIがSSL化。

2017.03.12

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、せーのです。今日はAPI Gatewayの最新アップデートをご紹介します。

とかく証明書は大変

Web系の方はおわかりかと思いますが、サイトURLをSSLで見るには証明書が必要で、一般的にはミドルウェア(NginxやApache)に証明書、中間証明書、秘密鍵を使って設定する必要があります。これが大変手間でした。そして証明書の有効期限が切れる頃には新しいものと交換しなくてはいけません。それがまた大変で。

AWSではこれらの証明書関係をAWSリソースに組み込む際にはIAMでアップデートしたり、GUIにて直接マネージメントコンソールの画面から貼り付けることでインストール、運用が出来るようになりました(ELBとか)。

API_Gateway 4

API Gatewayにてカスタムドメインを使用する際にも同じようにGUIから直接貼り付けてインストールしていました。詳しくはこちらを参考にして下さい。

Amazon API Gateway を独自ドメインで利用する|クラスメソッドブログ

今回の新機能ではこの証明書をAWSが提供する証明書サービス「ACM(AWS Certificate Manager)」を使って設定することが出来る、というエンジニアにやさしいアップデートとなりました。

注意点

今回の新機能は現在バージニアリージョン(us-east-1)のみで使えます。東京リージョン早く!!

2017/03/13 追記: ryonext バージニアの証明書を東京でもつかえるよ! http://b.hatena.ne.jp/entry/326695261/comment/ryonext とのこと。なるほど。あざす!使えるって!

やってみた

それではやってみましょう。手順としては

  • ドメインを用意する
  • ACMで証明書を作成
  • API Gatewayの設定
  • DNSレコードの設定
  • テスト

となります。

ドメインを用意

まずはAPIのカスタムドメインに使いたいドメインを用意します。今回は元々持っていたドメインにサブドメインをつけてRoute 53にHostZoneとして設定してみます。

APIGW_ACM4

元々のドメインを持っていない方は無料ドメインを利用して作ってもOKです。詳しくはこちらのブログを御覧ください。

無料ドメイン(.tk)とRoute53を利用して0円でHTTPS環境を設定してみた|クラスメソッドブログ

ACMで証明書を作成

次にこのドメインのSSL証明書をACMを使って作ります。バージニアリージョンのACMを開き、先程のドメイン名を入力します。

APIGW_ACM5

ポチポチボタンを押していくとドメインの管理メールアドレスにACMからリクエスト承認のメールが飛びます。

APIGW_ACM6

中のリンクを押すとシンプルな承認画面が表示されますのでApproveボタンで承認します。

APIGW_ACM7

なんと、これで証明書の発行は完了です。 ACMから確認してみてステータスが「発行済み」となっていればOKです。

APIGW_ACM8

API Gatewayの設定

さて、本題であるAPI Gatewayの設定にいきます。マネージメントコンソールからAPI Gatewayを開き新規にAPIを作成します。今回は簡単にサンプルのAPIを使います。

APIGW_ACM1

APIを作成したらアクションボタンよりデプロイします。デプロイ名は今回はtestとしておきます。

APIGW_ACM3

これでAPIが出来上がりました。

APIGW_ACM2

先程作ったドメインと連携します。カスタムドメイン名を開き「カスタムドメイン名の作成」をクリックします。

APIGW_ACM9

カスタムドメイン名に先程作ったドメイン名を入力、ACMに先程作ったACMを選択しベースマッピングを追加します。パスはルート(空)にして送信先、ステージに先程作ったAPI名、ステージをそれぞれ選択します。最後に保存をクリックします。

APIGW_ACM10

カスタムドメイン名が使用できるまで40分ほどかかるので食事なり、休憩なりをしてのんびり待ちます。

40分後、画面を見ると準備が出来ています。API Gatewayと関連付けられているCloudFrontのURLが表示されていますのでこれをコピーしておきます。

APIGW_ACM11

API Gatewayの設定はこれで完了です。

DNSレコードの設定

最後にRoute 53を開き、カスタムドメインとして登録したドメインのホストゾーンから先程コピーしたURLをDNSレコードとして登録します。ベースマッピングでルートとして登録したのでDNSレコードもZONE APEX(空)にAレコードのALIASとして登録します。

APIGW_ACM12

ALIASとかZONE APEXとかなんのこっちゃ、という方はこちらを御覧ください。

Amazon Route 53のALIASレコード利用のススメ|クラスメソッドブログ

特に気にしないよ、という方はCreate Record Setボタンを押して、Aレコードを選択し、AliasオプションをYesにしてAlias Targetに先程コピーしたURLを貼り付けてCreateボタンを押せばOKです。

これで設定は全て終わりです。

テスト

それではテストしてみましょう。まずは本来のAPI GatewayのURLをブラウザに貼り付けてみます。AWSから振られるAPI GatewayのURLはマネージメントコンソールのAPI Gatewayよりステージをクリックし、作成したステージ(今回で言えばtest)をクリックすると右ペインに出てきます。

APIGW_ACM14

次にカスタムドメインのURLをブラウザに貼り付けてみます。

APIGW_ACM15

同じ画面が表示されました。成功です!

まとめ

いかがでしたでしょうか。これでAPI Gatewayのカスタムドメインを使うのが数段便利になりました。皆さんも是非作ってみて下さい。

参考リンク