前回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のダッシュボードで出来ているか、確認してみてください。
感想
SwaggerのSpecを書ければ、AWS API Gatewayが簡単に作れるということが解ったと思います。次の問題は、Swagger Specをどう作って運用するかという話です。その辺りは、今後取り上げたいと思います。
See Also:
プログラマになりたい Advent Calendar 2015 - Qiita
プログラマになりたい Advent Calendar 2015 - Adventar