プログラマでありたい

おっさんになっても、プログラマでありつづけたい

SwaggerでAWS API Gatewayを作成する

 前回Swaggerの紹介をしたので、今回はSwaggerを使ってみます。実用例で一番解りやすいのが、Swaggerを使ってAWS API Gatewayを作成する例ではないかなと思います。API Gatewayは素晴らしいサービスですが、UIで作るには面倒くさすぎます。そんな時に登場するのが、Swagger importer toolです。Swagger Specを元にツールを介して、API Gateway一式を作ってくれます。

API Gateway Importerのインストール



 まずは、Macでの環境設定です。JavaとMavenが必要となります。

 $ brew install Caskroom/cask/java
 $ brew install maven

 Swagger Importerツールのインストールです。GitHubからダウンロードして、Mavenでビルドします。

 $ git clone https://github.com/awslabs/aws-apigateway-swagger-importer.git
 $ cd aws-apigateway-swagger-importer/
 $ mvn assembly:assembly

 エラーが出なければ、稼働の確認してみましょう。
aws-api-import.shを叩いて、下記のようなメッセージが出ればO.K.です。

$ ./aws-api-import.sh 
 Usage: aws-api-import [options] Path to API definition file to import
  Options:
    --create, -c
       Create a new API
       Default: false
    --deploy, -d
       Stage used to deploy the API
        --help
       
       Default: false
    --profile, -p
       AWS CLI profile to use
       Default: default
        --raml-config
       Provide a configuration file to load AWS information from
    --test, -t
       Delete the API after import (create only)
       Default: false
    --update, -u
       API ID to import swagger into an existing API

API Gateway Importerの作成



 それではSwagger Importerツールを使って、API Gatewayを作成してみましょう。サンプルのAPI GatewayのSwagger Specが幾つかあるので、それを使ってみましょう。Swagger Importerツールは、AWSの認証については、AWS CLIツールのクレデンシャルを利用しています。設定していないのであれば、~/.aws/以下のcredentialsを用意しましょう。

cat ~/.aws/credentials 
[default]
aws_access_key_id = your_aws_access key
aws_secret_access_key = your_aws_secret_access_key
region = ap-northeast-1

[dev]
aws_access_key_id = your_aws_access key
aws_secret_access_key = your_aws_secret_access_key
region = ap-northeast-1
 $ ls tst/resources/swagger/
 apigateway.json				petstore-with-external-docs.json
 basic.json				petstore.json
 large.json				test.json
 petstore-expanded.json			uber.json
 petstore-minimal.json			uber.yaml
 petstore-simple.json

 今回は、petstore-simple.jsonを使ってみましょう。

 $ ./aws-api-import.sh -c tst/resources/swagger/petstore-simple.json 
2015-11-21 07:42:29,295 INFO - Skip unsupported property name region in profile [default].
2015-11-21 07:42:29,297 INFO - Skip unsupported property name region in profile [dev].
2015-11-21 07:42:32,823 INFO - Attempting to create API from Swagger definition. Swagger file: tst/resources/swagger/petstore-simple.json
reading from tst/resources/swagger/petstore-simple.json
2015-11-21 07:42:32,987 INFO - Parsed Swagger with 2 paths
2015-11-21 07:42:32,993 INFO - Creating API with name Swagger Petstore

作成されたAPI Gatewayの確認



 それでは、AWSのコンソールに行って作成されているか確認してみましょう。API Gatewayのダッシュボードで出来ているか、確認してみてください。

f:id:dkfj:20151210195149p:plain

感想



 SwaggerのSpecを書ければ、AWS API Gatewayが簡単に作れるということが解ったと思います。次の問題は、Swagger Specをどう作って運用するかという話です。その辺りは、今後取り上げたいと思います。

See Also:
プログラマになりたい Advent Calendar 2015 - Qiita
プログラマになりたい Advent Calendar 2015 - Adventar