はじめに
手順が多くて忘れそうなので備忘録として書いておきます
AWS初心者、ネットワークの知識も殆ど持っていない人が書いたものなので間違っていたり無駄なことをしている可能性も大いにあります
執筆開始時点(2020/02/17)での情報のため、数ヶ月先や数年先でも通用する保証はありません
目次
用意するもの
API作成
Lambdaで関数を作る
まずはLambdaで最終的に叩きたいAPIの処理を書いていきます
Lambda を開き、 関数を作成
をクリック
今回はNode.jsでHelloWorldを返すものを作りたいので、
一から作成
を選択して、関数名は helloWorld
、ランタイムは Node.js 12.x
を選んで 関数の作成
をクリック
開いたページをスクロールしてみるとサンプルコードが既に入力してありますね
このままでもいいですが、少し書き換えます
exports.handler = async (event) => { return { message: 'Hello, World!' }; };
左上の 保存
をクリックで保存
その隣の テスト
をクリックして、 イベント名
に適当な名前を入力して 作成
もう一度 テスト
をクリックすると、コード下部に結果が表示されます
Hello, World!が出ていたら関数は正常に動作しています
API GatewayでRestAPIとして叩けるようにする
APIの処理はできたので、これを外部から叩けるようにします
API Gateway を開き、 APIを作成
をクリック
REST API
(privateじゃない方) の 構築
をクリック
プロトコルは REST
、その下は 新しいAPI
を選択し、API名は HelloWorld API
と入力して APIの作成
をクリック
アクション
ドロップダウンを開き メソッドの作成
を選択
下に出てきたドロップダウンから GET
を選択して右のチェックマークをクリックで確定
統合タイプはLambda、Lambda関数には最初の方で作ったLambdaの関数名を入力して 保存
をクリック
API GatewayがLambda関数を呼び出す権限を与えてもいいかのダイアログが開くので OK
をクリック
この画面で関数に渡すパラメータやCORSの設定をするのですが、今回は設定しません
アクション
ドロップダウンから APIのデプロイ
を選択、デプロイされるステージに [新しいステージ]
を選択して、ステージ名に適当な名前を付けて デプロイ
をクリック
開いたページにURLが表示されていると思います
これがAPIのURLです
URLをクリックして飛んでみるとLambdaでのテスト結果と同じものが表示されると思います
カスタムドメインの設定が不要な場合はここまでで完成になります
カスタムドメイン設定
Route53でドメインを紐付ける
お名前.comで購入したドメインをAWSで使えるように紐付けします
Route53 を開き、左メニューから ホストゾーン
を選択し、 ホストゾーンの作成
をクリック
ドメイン名にはお名前.comで取得したドメインを入力し、 作成
をクリック
サブドメインでもOKです
リストに項目が2つありますが、使用するのは値が4行ある方です
ここで一旦Route53を離れますが、後ほど何度か使用するのでタブは残しておいてください
続いて、お名前.com側の設定です
ドメインNaviにログインし、 ドメイン設定
> DNS設定/転送設定
に進み、ドメインを選択して 次へ
をクリック
DNSレコード設定を利用する
の 設定する
をクリック
ここで先程開いたままにしておいたRoute53の4行の値を追加します
TYPEは NS
、VALUEにそれぞれ入力します
ページ下部の 確認画面へ進む
> 設定する
と進んで完了の表示が出たらお名前.comでの作業は終了です
反映には数分から数時間かかると思われます
Certficate Manaterで証明書を作成する
SSL化のため、証明書を発行します
Certficate Manager を開き、 証明書のリクエスト
をクリック
パブリック証明書のリクエスト
を選択したまま 証明書のリクエスト
をクリック
ドメイン名に先程紐付けたドメインを入力して 次へ
このあとのページは何もいじらずそのまま進めてください
最初のページに戻ってきたと思います
検証未完了
の下のドメイン名をクリックして開くと Route53 でのレコードの作成
というボタンがあるのでクリック
開いたダイアログの '作成' をクリック
発行には少し時間がかかるようなので待ちます
状況が 発行済み
になったら完了です
API Gatewayでカスタムドメインを設定する
発行した証明書を使って HelloWorld API
にカスタムドメインを設定します
API Gateway を開き、左メニューから Custom domain names
を選択し、 カスタムドメイン名を作成
をクリック
ドメイン名に紐付けたドメインを入力、エンドポイントの設定は リージョン
を選択
ACM証明書のドロップダウンで先程発行した証明書が選択できるはずなので選択して 保存
作成できたら 編集
をクリックして マッピングの追加
パスは helloworld
、送信先には HelloWorld API
、後ろにはAPIデプロイ時に作成したステージを選択して 保存
Route53でDNSを設定する
仕上げです
Route53に戻り、 ページを更新してから レコードセットの作成
をクリック
名前は空欄のままエイリアスを はい
にし、エイリアス先のドロップダウンから API Gateway の API
に分類されているものを選択します
作成
をクリックでリストの項目が1つ増えて4つになっていれば完了です
これで全行程終了、ブラウザなどで https://[設定したドメイン]/helloworld
を叩くとAPIの結果が表示されるはずです
おわりに
初めてブログを書きましたがかなり長いものになってしまいました
4800字ほど書いたみたいなんですが記事分けたほうがよかったんですかね…?