モーダルを閉じる工作HardwareHub ロゴ画像

工作HardwareHubは、ロボット工作や電子工作に関する情報やモノが行き交うコミュニティサイトです。さらに詳しく

利用規約プライバシーポリシー に同意したうえでログインしてください。

Apigee X の基本的な使い方

モーダルを閉じる

ステッカーを選択してください

お支払い手続きへ
モーダルを閉じる

お支払い内容をご確認ください

購入商品
」ステッカーの表示権
メッセージ
料金
(税込)
決済方法
GooglePayマーク
決済プラットフォーム
確認事項

利用規約をご確認のうえお支払いください

※カード情報はGoogleアカウント内に保存されます。本サイトやStripeには保存されません

※記事の執筆者は購入者のユーザー名を知ることができます

※購入後のキャンセルはできません

作成日作成日
2021/12/07
最終更新最終更新
2024/03/25
記事区分記事区分
一般公開

API を管理するためのプラットフォームである Apigee X について、基本的な使い方を記載します。Apigee は 2016 年に Google によって買収されており、Apigee Edge という名称で Google Cloud のサービスに加わりました。2021 年に Apigee X という名称の GCP-native なサービスが開始されました。

似たサービスである Cloud Endpoints や、Cloud Functions/Cloud Run 等の serverless サービスをバックエンドとする Cloud API Gateway は、GCP 内に閉じており、機能としてもシンプルなものが提供されます。

関連資料:

Private Services Access

Apigee 社 (Google) によって管理される VPC と顧客管理の VPC の二つによって構成されます。これら二つの VPC は VPC network peering によって接続されます。

Apigee architecture overview

より正確には、VPC network peering の技術を利用した Private Services Access によって接続されます。似た名称の機能が複数存在するため注意します。Private "Service" Access ではありません。"Services" は複数形です。

  • Private Google Access および Private Service Connect と区別します。
    • Private Google Access は、外部 IP を持たない VM が Google API を利用するための機能です。
    • Private Service Connect は、Service Directory に登録された Google API や SaaS API を、顧客 VPC 内で定めた任意の IP から利用するための機能です。
  • Serverless VPC Access と区別します。
    • Serverless VPC Access および Private Services Access はどちらも、Google サービスのリソースに顧客 VPC の内部 IP を持たせます。
    • Serverless VPC Access は、Google サービスのリソースが、顧客 VPC 内のリソースにアクセスします。
    • Private Services Access は、顧客 VPC 内のリソースが、Google サービスのリソースにアクセスします。

参考資料: Private access options for services

Cloud SQL で Private Services Access を利用する例

VPC → PRIVATE SERVICE CONNECTION → ALLOCATED RANGES FOR SERVICES → ALLOCATE IP RANGE をクリックして IP レンジを予約します。

PRIVATE CONNECTIONS TO SERVICES をクリックして Service Directory への connection を作成します。

VPC network peering が Google 管理の VPC である servicenetworking に対して作成されていることも確認できます。

例えば、Cloud SQL インスタンスを作成する際に、予約した IP レンジを指定すると、Cloud SQL インスタンスに対して、VPC 内から内部 IP でアクセス可能となります。

初期セットアップ

以下は eval (評価版) を Wizard でセットアップする例です。プロジェクトID を指定します。

補足: eval (評価版) における無料枠は、Apigee 管理の VPC 内リソースに対して適用されます。顧客管理 VPC 内の VM や Load Balancer は対象外です。

API を有効化した後に、ネットワーク関連の設定を行います。

VPC を選択します。前述の Private Services Access で利用する IP レンジも指定します。

Private Services Access が利用する VPC network peering が作成されていることが確認できます。

割り当てられた IP レンジです。

Private Services Access です。

Apigee API を利用して Apigee organization を作成します。

リージョンを指定します。

利用者が Apigee にアクセスする際の経路を指定します。

インターネットからアクセスする場合は以下のようにします。独自にドメインを指定することもできます。

Load balancer の backend となる Managed Instance Group (MIG) の subnet を指定します。

セットアップが完了すると、以下のような表示になります。

作成された HTTP Load Balancer です。

作成された Instance Template です。

作成された Managed Instance Group (MIG) です。

作成された VM です。

しばらく待つと、以下の API Proxy にアクセスできます。

$ curl -sS https://34.149.134.44.nip.io/hello-world
Hello, Guest!

Proxy が複数登場するため分かりづらいですが、上記 MIG の VM も Proxy です。MIG の Proxy 先が API Proxy です。API Proxy が Proxy する先が、実際の API です。

実際には API Proxy を複数まとめて API Product としてユーザに提供します。

Create an API product

API Proxy は Apigee 管理の Instance で稼働します。Instance には Private Services Access で利用する IP レンジ内の IP が付与されていることが確認できます。

VPC Service Controls の併用

Apigee X の Customer VPC のプロジェクトを VPC-SC に含めることができます。

関連資料:

Private Services Access 先の VPC 内のリソース

VPC-SC を設定済みであっても、API Proxy からインターネット上の Target を指定可能です。

$ curl -sS https://34.149.134.44.nip.io/hello-world
Hello, Guest!

gcloud services vpc-peerings enable-vpc-service-controls を利用することにより、Private Services Access の VPC network peering で接続された先の VPC 内のリソースからの通信を Customer VPC にルーティングさせることができます。

username@cloudshell:~ (myproject-20211206)$ gcloud services vpc-peerings enable-vpc-service-controls --network=myvpc --project=myproject-20211206
Operation "operations/evsc.p28-464464998635-294c81f8-4399-4737-8233-71a04f5d5c42" finished successfully.

$ curl -sS https://34.149.134.44.nip.io/hello-world
{"fault":{"faultstring":"The Service is temporarily unavailable","detail":{"errorcode":"messaging.adaptors.http.flow.ServiceUnavailable"}}}

Both the Google Cloud project and its associated runtime are incuded within that project's VPC Service Controls perimeter.
https://cloud.google.com/apigee/docs/api-platform/security/vpc-sc

When VPC Service Controls are enabled, access to the internet is disabled: the Apigee runtime will no longer communicate with any public internet target.
https://cloud.google.com/apigee/docs/api-platform/security/vpc-sc

Customer VPC 内の Target

インターネット上の API にアクセスしたい場合は、一旦 Customer VPC の VM にルーティングする必要があります。

You have to route traffic to your VPC by establishing custom routes.
https://cloud.google.com/apigee/docs/api-platform/security/vpc-sc

Cloud Storage へのアクセス

以下の二つの Cloud Storage Bucket を用いて実験してみます。Cloud Shell で実行すると、どちらもパブリックにアクセスできることが分かります。

username@cloudshell:~ (myproject-20211206)$ gsutil ls gs://gcp-public-data-landsat/
gs://gcp-public-data-landsat/index.csv.gz
gs://gcp-public-data-landsat/LC08/
gs://gcp-public-data-landsat/LE07/
gs://gcp-public-data-landsat/LM01/
gs://gcp-public-data-landsat/LM02/
gs://gcp-public-data-landsat/LM03/
gs://gcp-public-data-landsat/LM04/
gs://gcp-public-data-landsat/LM05/
gs://gcp-public-data-landsat/LO08/
gs://gcp-public-data-landsat/LT04/
gs://gcp-public-data-landsat/LT05/
gs://gcp-public-data-landsat/LT08/

username@cloudshell:~ (myproject-20211206)$ gsutil ls gs://apigee-5g-saas/
gs://apigee-5g-saas/apigee-envoy-proxy-release/
gs://apigee-5g-saas/apigee-southbound-nat-release/

VPC-SC を Cloud Storage API についても設定すると、MIG で管理される VM 内では以下のようになります。

username@apigee-proxy-3ksw:~$ gsutil ls gs://gcp-public-data-landsat/
AccessDeniedException: 403 Request is prohibited by organization's policy. vpcServiceControlsUniqueIdentifier: uCVEeFd2EHek3OrPMYPi1gbFi7k1QN0WGlJrYDRqFy4Vmwu82Bng9Q

username@apigee-proxy-3ksw:~$ gsutil ls gs://apigee-5g-saas/
gs://apigee-5g-saas/apigee-envoy-proxy-release/
gs://apigee-5g-saas/apigee-southbound-nat-release/

VM の startup-script-url で指定された Bucket については、VPC-SC が存在していてもアクセスできることが分かります。

apigee.google.com について

Cloud Identity の Google サービスへのアクセス制御

Apigee X の apigee.google.com は 2021-12-19 現在、Cloud Identity のサービスアクセス制御に対応していません。「Additional services without individual control」に属するため、以下のページで ON/OFF を制御する必要があります。

関連資料: Manage access to services that aren't controlled individually

BeyondCorp Enterprise IP 制限

以下のページで言及されている BeyondCorp Enterprise の IP アクセス制限は apigee.google.com へのアクセスについては機能しません。

IP 制限を実施したい場合は、BeyondCorp Enterprise ではなく VPC-SC を設定する必要があります。

Likeボタン(off)0
詳細設定を開く/閉じる
アカウント プロフィール画像

UNIX / TypeScript / AWS / Go

記事の執筆者にステッカーを贈る

有益な情報に対するお礼として、またはコメント欄における質問への返答に対するお礼として、 記事の読者は、執筆者に有料のステッカーを贈ることができます。

>>さらに詳しくステッカーを贈る
ステッカーを贈る コンセプト画像

Feedbacks

Feedbacks コンセプト画像

    ログインするとコメントを投稿できます。

    ログインする

    関連記事