JAWS UG札幌(2020/2)で登壇した内容です。 API Gatewayをswaggerでサクサク作ろう!
なるほどわかった!API Gatewayをswaggerでサクサク作ろう!不破 崇行
View Slide
自己紹介• 不破 崇行(ふわ たかゆき) / 31歳独身男性• 所属• エコモット株式会社(9:00〜18:00) / FASTIO開発チーム / 主任• 東雲研究所(19:00〜22:00) / 代表• コミュニティ• JAZUG札幌(きたあず) / Azureもくもく会札幌の宴会係• SORACOM UG 札幌 / などなど• 好きなAWSサービス• CloudWatch• 趣味• シメパフェ• Alexaいじり
エコモットの概要(お昼の仕事)• 設立• 2007年2月19日• 所在地• 本社:札幌市• 拠点:東京 / 青森 / 仙台 / 北信越 / 東海 / 関西/ 九州• 社員数• 108名(2019年4月1日現在、臨時従業員を含む)• スローガン• “あなたの「見える」を、みんなの安心に”
東雲研究所(夜の仕事)• 営業時間• 平日19:00〜22:00• 土曜 10:00〜22:00• 業務内容• テクニカルコンサルティング• WordPressプラグイン開発• サーバ構築・保守• その他オーダーメイド
JAWS FESTA 2019サポーター
Visual Studio Codeのリリースノートに名前が載る
今日伝えたい事API Gatewayすごい!!
今日伝えたい事Swagger楽しい!!
API Gatewayをザックリと• 自分でWebサーバやロードバランサを立ち上げなくてもAPIサービスを構築出来るAWSのサービス• マイクロサービス向けAWSサービスの風雲児
マネジメントコンソール
API Gatewayの良いところ• マネジメントコンソール上でポチポチ手軽にAPIを定義していくことが出来る• CloudWatchとX-Rayとシームレスに連携出来る。• Lambdaの動きを把握するのにX-Ray超便利• 内部にCloudFrontを使用しているため、大量アクセスにも耐えられる• API Gatewayからのレスポンス生成にLambdaを使える• Lambdaで内部ロジックを実装し、API Gatewayで返すことが出来る• Websocketも使えるし、バイナリファイルも転送出来る
API Gatewayのここがツライ!• APIの規模がどんどんデカくなってくると、GUIで一々操作するのがツライ• 本番環境と検証環境との「冪等性」を維持するのがツライ• というか無理• 1エンドポイント1メソッドごとにCORSの設定を全部するとか正気の沙汰じゃ無いこれが1セット。これをPOST/GET/PUT/DELETEで4回。
出来る事ならAPIはコードで定義したい• 出来る事なら、CloudFormationやTerraformみたいなノリでJSONとかYAMLで定義しておきたい。• 出来る事なら、一撃でデプロイしたい!
そこでSwagger(OpenAPI)ですよ!• YAML or JSON形式でRESTFul APIを記述できるフォーマット
Swaggerとは• OpenAPIという規格に準拠した実装• YAML or JSONで記述する• AWSに限らず、Azureなど他のクラウドサービスでも採用されている
Swaggerのどえらい所• コード化出来るので、検証環境・本番環境の冪等性を担保出来る• 「開発環境と本番環境で動きが違うぞ!?」というよくあるパターンを解決出来る• 今までWordやExcelで作ってきた「API仕様書」を自動生成してくれる
Swagger Editor• ブラウザで動くSwaggerのエディタ• Dockerコンテナ版もあるよ• yaml上のコードエラーを一番正確にあぶり出せるツール
VS Codeでも書ける• VSCode Extensionをインストールすると、VS Code上でもプレビューできる• Swagger Viewer• OpenAPI Editor
試し撃ちも出来る
定義書も作れる• さらばExcel方眼紙
API Gatewayへぶち込む
AWS限定の設定(Lambdaなど)も出来るOpenAPIの中にAWS専用の定義を入れられる。この場合は、コールされた後に発火するLambda関数を指定している
まとめ• API Gatewayをサクサク扱いたいなら、Swaggerを使おう