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だけ再選択して実行権限を付与しました。
あとは、そのままテストして正常動作を確認しました。
最後までお読みいただきましてありがとうございました!
【PR】 「AWS認定試験対策 AWS クラウドプラクティショナー」という本を書きました。
【PR】 「AWSではじめるLinux入門ガイド」という本を書きました。
【PR】 「ポケットスタディ AWS認定 デベロッパーアソシエイト」という本を書きました。
【PR】 「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル」という本を書きました。

開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター5年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
ad
ad
関連記事
-
-
CloudFormation StackSetsでOrganizations組織のアカウントに一気にIAMロールを作成した
Organizationsで管理している各アカウントにIAMロールを作成したい場 …
-
-
EC2にSystems MangerからCloudWatchエージェントをインストール
CloudWatchエージェント EC2の標準メトリクスでは収集できないメモリの …
-
-
Amazon Auroraのスナップショットの暗号化とリージョン間コピーを改めて試しました
Amazon Auroraデータベースを暗号化して、スナップショットを作成、クロ …
-
-
Amazon S3バケットでMFA Deleteを有効にする
バージョニングが有効なバケットでバージョン削除でMFA Deleteを有効にして …
-
-
AWS Organizations SCPで許可ポリシーの設定をし継承の関係を確認する
ユーザーガイドのサービスコントロールポリシーの例にはDeny(拒否)ばっかりでA …
-
-
Active Directory認証でAWSマネジメントコンソールにSSO
こちらの2つのサイトを参考にすすめました。 Active Directory資産 …
-
-
スポットインスタンスの削減額情報を見ました
なんだこれ?と思って、検索してみたら、2018年11月からあったのですね。 Am …
-
-
AWS Wavelengthゾーンを有効にする
画面上で確認しておきたかったので有効にしておきました。 AWS Waveleng …
-
-
AWS Lambda(Python)で生成した文字をAmazon Connectで音声を設定して発信する
Amazon Connectから発信する電話の音声を動的に設定します。 Lamb …
-
-
AWS WAFのマネージドルールを見てみました
Web ACLで[Add managed rule groups]を選択しました …