API Gateway+LambdaをCloudFormationでサクリとつくる
API Gateway + Lambda + CloudFormation
サーバーレス(サーバレス? どっち?)でやるときにおなじみのこのサービス二つの組み合わせなのですが、 API Gateway周りの設定がけっこう面倒なんですよね…… なので一回テンプレートとしてCloudFormationでつくっておくと拡張性もあって便利便利という話です。
今回は単純に、/helloにGETするとHello WorldするAPIを作ります。
構成
CloudFormationで定義するリソース一覧です。 中にはコンソール上でポチポチやっているとAWSが裏で自動でつくってくれるものもあるので、リストにすると結構長くなります。
API Gateway
- Rest API(API Gatewayの基本構成単位。コンソール上でAPI Gatewayのトップページにいってまず作るやつ)
- Stage(ステージ)
- Model(リクエストなどの構造を表す)
- Resource(リソース。パス(/hello等)をここで定義)
- Method(リソースごとのメソッドの定義)
- UsagePlan(使用量やクオータなどの定義)
- Deployment(デプロイ)
Lambda
IAM
- Role(Lambda Functionに割り当てるIAM Role)
CloudFormationテンプレート
これをCloudFormationの新規スタックとして作成し、 できたAPI GatewayのリソースURL(https://foobar.execute-api.ap-northeast-1.amazonaws.com/dev/hello)にアクセスすると「Hello World」と表示されるはずです。
最小構成なので、適宜必要なリソースを加えることで望みの構成ができるかと思います。 (APIキーを追加したい場合はAPIKeyとUsagePlanKeyを加えるなど)