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

最終更新日: 2020 年 12 月 17 日

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

簡単な説明

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

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

解決策

注意: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、最新バージョンの AWS CLI を使用していることを確認してください

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. OpenAPI 定義がコンソールに表示されます。次に、JSON または YAML を選択して OpenAPI 定義を優先ファイルタイプとしてダウンロードします。

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

get-export コマンドの例

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

重要: コマンドオプション --parameters--export-type、および --accept の値を優先エクスポートの形式に合わせて変更してください。詳細については、get-export (AWS CLI コマンドリファレンス) および「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 にインポートする」を参照してください。


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


請求に関するサポートまたは技術サポートが必要ですか?