AWS アカウントまたはリージョン間で API Gateway API を移行するにはどうすればよいですか ?

最終更新日: 2019 年 12 月 20 日

AWS アカウントまたはリージョン間で Amazon API Gateway API を移行したいと考えています。どうすればよいですか?

簡単な説明

API Gateway から REST API を OpenAPI 2.0 (Swagger) または OpenAPI 3.0 定義ファイルにエクスポートします。次に、 別のアカウントまたはリージョンの API Gateway に API をインポートします。

注意: API を正常にインポートするには、ターゲットアカウントまたはリージョンで統合 API リソースを再作成する必要もあります。

解決方法

API をエクスポートする

API Gateway コンソールまたは AWS コマンドラインインターフェイス (AWS CLI) を使用して API をエクスポートします。

  1. API Gateway コンソールで、API を選択します。
  2. API をステージにデプロイします。
  3. [Stage Editor] ペインで、 [エクスポート] タブを選択します。
  4. [Export as] で、[Swagger] または [OpenAPI3] を選択します。
  5. 前のステップで選択した内容に応じて、以下のいずれかを選択します。
    Swagger + API Gateway 拡張機能としてエクスポート
    OpenAPI 3 + API Gateway 拡張としてエクスポート
  6. [JSON] または [YAML]を選択します。OpenAPI 定義がコンソールに表示され、定義ファイルのダウンロードが自動的に開始されます。

または、AWS CLI で get-export コマンドを使用します。例:

$ aws apigateway get-export --parameters extensions='integrations' --rest-api-id a1b2c3d4e5 --stage-name dev --export-type swagger /path/to/filename.json

このサンプルコマンドは、ステージの API Gateway 拡張を含む JSON Swagger テンプレートを返します。コマンドオプション --parameters および --export-type の値を変更し、任意のプロパティとタイプでエクスポートします。

詳細については、「API Gateway から REST API をエクスポートする」を参照してください。

OpenAPI 定義でリソース ARN を変更する

エクスポートされた OpenAPI 定義の API リソースの Amazon リソースネーム (ARN) を更新します。それらを移行先の AWS アカウントとリージョンのリソースに変更します。たとえば、AWS Lambda 統合を使用する API 用の Swagger テンプレートの次のスニペットを参照してください。

"x-amazon-apigateway-integration": {
          "uri": "arn:aws:apigateway:us-east-1:lambda:path/2015-03-31/functions/arn:aws:lambda:us-east-1:12345678910:function:mylambda/invocations",
          "responses": {
            "default": {
              "statusCode": "200"
            }
          }

この例では、arn:aws:apigateway:us-east-1:lambda:path/2015-03-31/functions/arn:aws:lambda:us-east-1:12345678910:function:mylambda/invocations を、送信先アカウントの Lambda 関数の ARN に置き換えます。

API をインポートする

API リソースの ARN をオフラインで更新したら、OpenAPI 定義を別の AWS アカウントまたはリージョンの API Gateway に インポートします。

  1. 移行先の AWS アカウントまたはリージョンで API Gateway コンソール を開きます。
  2. [Create API] を選択します。
  3. [Choose an API type] の [REST API] で、[Import] を選択します。
  4. [Import from Swagger or Open API 3] で、次のいずれかを実行します。
    [Select Swagger File] を選択し、更新された OpenAPI 定義ファイルを選択します。
    更新された OpenAPI 定義をテキストエディタフィールドに貼り付けます。
  5. [Settings] の [Endpoint Type] で、[Regional]、[Edge optimized]、または [Private]を選択します。
  6. [Fail on warnings] は、インポート中にエラーまたは警告が出たときにインポートを中止する場合に選択します。警告に関係なくインポートを実行する場合には、 [Ignore warnings] を選択します。

または、送信先 AWS アカウントまたはリージョンの AWS CLI を設定しimport-rest-api コマンドを使用します。例:

$ aws apigateway import-rest-api --endpointConfigurationTypes 'REGIONAL' --fail-on-warnings --body 'file:/// path/to/filename.json'

詳細については、「REST API を API Gateway にインポートする」を参照してください。


この記事はお役に立ちましたか?

改善できることはありますか?


さらにサポートが必要な場合