このトピックでは、同一リージョン内でのアクセスとクロスリージョンアクセスの 2 つのシナリオにおいて、Function Compute から Virtual Private Cloud (VPC) 経由で API Gateway にアクセスする方法について説明します。
概要
API Gateway を Function Compute と統合することで、サーバーレスアーキテクチャを構築できます。一部のシナリオでは、関数から API Gateway で公開されている API を呼び出す必要があります。セキュリティのため、内部ネットワーク経由で API Gateway にアクセスできます。このトピックでは、次の 2 つのシナリオで内部ネットワークアクセスを実装する方法について説明します。
同一リージョン内で、Function Compute から内部ネットワーク経由で API Gateway にアクセスする。
異なるリージョン間で、Function Compute から内部ネットワーク経由で API Gateway にアクセスする。
両方のシナリオにおいて、主な設定の原則は同じです。
VPC を使用して内部ネットワークアクセスを有効化できます。
API Gateway への内部ネットワークアクセスを有効にするには、VPC に、API Gateway への接続権限を付与する必要があります。詳細については、「VPC 経由で API Gateway にアクセスする」をご参照ください。
Function Compute の内部ネットワークアクセスにも VPC が必要です。詳細については、「ネットワーク設定を構成する」をご参照ください。
シナリオ 1: 同一リージョン内でのアクセス
準備
次の図に示すようなアーキテクチャを構築できます。
説明中国 (上海) リージョンに、vpc-api-access と vpc-backend-1 の 2 つの VPC を作成します。
中国 (上海) リージョンに専用 API Gateway インスタンスを作成しておく必要があります。
vpc-backend-1 内に、API Gateway のバックエンドサービスとして使用する Elastic Compute Service (ECS) インスタンスを作成します。この ECS インスタンスは、http://localhost:8080/web/cloudapi でアクセス可能な HTTP サービスエンドポイントを提供します。また、この ECS インスタンスに対して、API Gateway からのアクセスを許可するセキュリティグループを設定します。
バックエンドサービスタイプを VPC に設定した API を構成する
詳細については、「VPC 内のリソースを API のバックエンドサービスとして使用する」をご参照ください。以下の点に注意してください。
VPC 権限付与を作成します。結果は次の図のようになります。

バックエンドサービスが VPC 内にある API を作成します。テスト目的で、認証方法は「認証なし」に設定します。次の図をご参照ください。


API を保存した後、公開します。この例では、API を本番環境に公開します。
VPC から API Gateway への内部ネットワークアクセス権限を構成する
専用インスタンスページで、 [クライアント VPC] の横にある [ユーザー VPC にバインド] をクリックします。 vpc-api-access の
Vpc Idを選択して、この VPC から API Gateway への内部ネットワークアクセスを有効にします。
API グループの内部ドメイン名を有効にする
グループの詳細ページで、内部第 2 レベルドメイン名を有効化します。有効化すると、API Gateway はグループに内部 VPC 第 2 レベルドメイン名を割り当てます。このドメイン名を使用して、このグループ内の API を直接呼び出すことができます。
重要デフォルトでは、API グループはインターネット経由でアクセス可能です。パブリック第 2 レベルドメイン名を無効にすることで、インターネットアクセスを防ぐことができます。インターネットアクセスを無効にすると、API Gateway コンソールでオンラインデバッグを実行できなくなることに注意してください。
関数を作成する
Function Compute で、Python ランタイムを使用するアプリケーションと関数を作成します。関数コードは次の図のとおりです。

この関数は、curl を使用して VPC 第 2 レベルドメイン名で API にアクセスします。この時点で関数を実行すると、アクセスは失敗します。
まず、Function Compute が接続するための vSwitch を vpc-api-access 内に作成します。
次に、Function Compute コンソールで、前の手順で作成したアプリケーションのサービス設定を構成します。詳細については、「ネットワーク設定を構成する」をご参照ください。
VPC 設定で、VPC として vpc-api-access を選択し、この手順で作成した vSwitch を選択します。
権限設定で、新しいロールを作成します。システムポリシーテンプレートとして、AliyunECSNetworkInterfaceManagementAccess を選択します。
関数を実行してテストする
関数を実行すると、Function Compute が VPC 第 2 レベルドメイン名を使用して API にアクセスできることを確認できます。

シナリオ 2: クロスリージョンアクセス
準備
次の図に示すようなアーキテクチャを構築できます。
説明中国 (張家口) リージョンで、API 呼び出しリクエストを送信するための Function Compute アプリケーションを作成します。Function Compute が Cloud Enterprise Network (CEN) に接続できるように VPC (vpc-fc-access) を作成します。
中国 (上海) リージョンで、専用 API Gateway インスタンスを作成します。また、API Gateway が CEN に接続できるように VPC (vpc-api-access) を作成します。
中国 (上海) リージョンで、別の VPC (vpc-backend-1) を作成します。この VPC 内に、API Gateway のバックエンドサービスとして使用する ECS インスタンスを作成します。この ECS インスタンスは、http://localhost:8080/web/cloudapi でアクセス可能な HTTP サービスエンドポイントを提供します。また、この ECS インスタンスに対して、API Gateway からのアクセスを許可するセキュリティグループを設定します。
CEN インスタンスを作成する
まず、上海の VPC (vpc-api-access) と張家口の VPC (vpc-fc-access) を接続するために、CEN インスタンスを作成します。これにより、サービスの相互接続が可能になります。CEN の設定方法の詳細については、CEN のドキュメントをご参照ください。CEN コンソールにアクセスして、CEN インスタンスを作成します。ネットワークインスタンスのアタッチ操作を繰り返して、vpc-api-access と vpc-fc-access の両方を CEN インスタンスにアタッチします。
帯域幅を構成する
CEN インスタンス内の通信用に帯域幅プランを購入します。この例では、最小帯域幅プランの 2 Mbit/s を使用します。要件に応じてプランを購入してください。
クロスリージョン帯域幅設定を構成します。接続されたリージョンの帯域幅値を指定します。1 つの帯域幅プランを複数のリージョン接続に割り当てることもできます。
クロス VPC ルーティングを構成する
この手順では、CEN チームにチケットを送信してください。ResolveAndRouteServiceInCen 操作のパラメータの説明に基づいて設定情報を提供します。これにより、API Gateway と張家口の VPC が接続されます。
AccessRegionIds.1=cn-zhangjiakou AccessRegionIds.2=cn-shanghai CenId=cen-uggzcthgz7cwsl7prr # CEN インスタンスの ID。 Host=100.104.255.128/26 # VPC 内の専用 API Gateway インスタンスの出口 IP CIDR ブロック。 HostRegionId=cn-shanghai HostVpcId=vpc-uf65amr4k3aepd0u4gnxa # API Gateway は中国 (上海) リージョンにあります。これは vpc-api-access の ID です。専用 API Gateway インスタンスの VPC 接続の出口 IP CIDR ブロックは、インスタンス管理ページで確認できます。次の図をご参照ください。

チケットが処理され、設定が完了したら、CEN コンソールで設定されたルートを確認します。上海と張家口の両方のリージョンにルーティングポリシーが追加されていることがわかります。提供した情報に基づいて、カスタムルートも追加されています。
バックエンドサービスタイプを VPC に設定した API を構成する
シナリオ 1 の 手順 2 で説明したように、VPC バックエンドサービスを持つ API を構成します。
VPC から API Gateway への内部ネットワークアクセス権限を構成する
シナリオ 1 の 手順 3 に従って、VPC から API Gateway への内部ネットワークアクセス権限を構成します。
API グループの内部ドメイン名を有効にする
シナリオ 1 の 手順 4 に従って、API グループの内部ドメイン名を有効にします。
関数を作成する
中国 (張家口) リージョンの Function Compute で、Python ランタイムを使用するアプリケーションと関数を作成します。関数コードは次の図のとおりです。

Function Compute の VPC アクセスを構成する
シナリオ 1 の 手順 6 と同様に、vpc-fc-access 内に vSwitch を作成します。次に、Function Compute コンソールでサービス設定を構成します。
関数を実行してテストする
関数を実行すると、Function Compute が VPC 第 2 レベルドメイン名を使用して API にアクセスできることを確認できます。

制限事項
専用 API Gateway インスタンスのみがサポート対象です。