API Gateway 作成済REST APIの定義をSwaggerの形式でエクスポート
2020/05/18
SAMで似たようなAPIを作りたくて、エクスポートしました。
Swaggerは、RESTful APIを構築するためのオープンソースフレームワークで、Swaggerを使うことで、API Gatewayでも定義をエクスポート、インポートできます。
非常に便利です。
マネジメントコンソールのAPI Gatewayで作成済のAPIで対象のステージを選択しました。
[エクスポート]タブで[次の形式でエクスポート]でSwaggerを選択して、[Swagger + API Gateway 拡張の形式でエクスポート]でYAMLを選択しました。
これで完了です。
簡単ですね。
「+ API Gateway 拡張の形式」を選択することで、x-amazon-apigateway-integrationなど API Gatewayの情報も出力されます。
インポート用に以下を調整しました。
- versionを1.0.0にしました。
- host行を削除しました。
- 既存のAPIが更新されると困るので。titleを変更しました。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
swagger: "2.0" info: version: "1.0.0" title: "import_test" basePath: "/esv2" schemes: - "https" paths: /course: get: consumes: - "application/json" produces: - "application/json" parameters: - name: "query" in: "query" required: false type: "string" responses: 200: description: "200 response" schema: $ref: "#/definitions/Empty" headers: Access-Control-Allow-Origin: type: "string" x-amazon-apigateway-integration: uri: "arn:aws:apigateway:ap-northeast-1:lambda:path/2015-03-31/functions/arn:aws:lambda:ap-northeast-1:123456789012:function:course_search_es/invocations" responses: default: statusCode: "200" responseParameters: method.response.header.Access-Control-Allow-Origin: "'*'" requestTemplates: application/json: "{\n \"query\": \"$input.params('query')\"\n}" passthroughBehavior: "when_no_templates" httpMethod: "POST" contentHandling: "CONVERT_TO_TEXT" type: "aws" options: consumes: - "application/json" produces: - "application/json" responses: 200: description: "200 response" schema: $ref: "#/definitions/Empty" headers: Access-Control-Allow-Origin: type: "string" Access-Control-Allow-Methods: type: "string" Access-Control-Allow-Headers: type: "string" x-amazon-apigateway-integration: responses: default: statusCode: "200" responseParameters: method.response.header.Access-Control-Allow-Methods: "'GET,OPTIONS'" method.response.header.Access-Control-Allow-Headers: "'Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token'" method.response.header.Access-Control-Allow-Origin: "'*'" requestTemplates: application/json: "{\"statusCode\": 200}" passthroughBehavior: "when_no_match" type: "mock" definitions: Empty: type: "object" title: "Empty Schema" |
インポートテストをしてみます。
インポートを選択しました。
エクスポートしたSwaggerファイルを選択して、インポートしました。
Lambdaだけ再選択して実行権限を付与しました。
あとは、そのままテストして正常動作を確認しました。
最後までお読みいただきましてありがとうございました!
「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。
「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第3版」という本を書きました。
「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。
「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。
「AWSではじめるLinux入門ガイド」という本を書きました。
開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター5年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
ad
ad
関連記事
-
-
リザーブドインスタンスはじめました
このブログも2014年9月にはじめたので、もうすぐ3年。 1件~17件とばらつき …
-
-
Amazon Aurora Serverless のログをCloudWatch Logsに出力する
WordPress W3 Total Cache のDatabaseCacheを …
-
-
Amazon API GatewayのIAM認証の動作を確認しました
API GatewayのIAM認証は、IAMユーザーが実行できるように認証する、 …
-
-
kintoneに登録されたアカウントの電話番号にGoogleカレンダーの予定をAmazon Pollyが読み上げてTwilioから電話でお知らせする(AWS Lambda Python)
Google Calendar Twilio Reminder Googleカレ …
-
-
AWS Transit GatewayをResource Access Managerで他アカウントと共有
AWS Transit Gatewayを他アカウントに共有しました。 画面画像で …
-
-
AWS Toolkit for EclipseからLambda関数を直接作成できずにMavenでパッケージ化して作成
AWS Toolkit for EclipseからLambda関数を直接作成 チ …
-
-
AWS OrganizatonsのRCP(リソースコントロールポリシー)を設定しました
2024/11月に発表されましたリソースコントロールポリシーを管理している組織に …
-
-
VPCピア接続した先のVPCインターフェイスエンドポイントを使用する
VPC1とVPC2でピア接続しています。 VPC2にはKMSのインターフェイスエ …
-
-
Kinesis Data AnalyticsをKinesis Data Streamsに接続してSQL検索する
Amazon Kinesis Data StreamsにTwitter検索データ …
-
-
RedmineをELB(ALB)でAutoScalingグループへ負荷分散
高可用なRedmineを作るためのELBの設定です。 高可用なRedmine R …




