
始める前に
- ラボでは、Google Cloud プロジェクトとリソースを一定の時間利用します
- ラボには時間制限があり、一時停止機能はありません。ラボを終了した場合は、最初からやり直す必要があります。
- 画面左上の [ラボを開始] をクリックして開始します
Create the API proxy
/ 20
Create the full access API product
/ 20
Create the read-only API product, app developer, and 2 apps
/ 20
Add the quota policy
/ 10
Add CORS to the API proxy
/ 20
Create the integrated developer portal
/ 10
API は、API を利用してユーザーに独自のエクスペリエンスを提供するアプリ デベロッパー向けに設計されています。Google Cloud の Apigee API Platform を使用すると、API を公開し、アプリ デベロッパーがその API を利用できるようにすることができます。
このラボでは、API へのアクセスを制限するために API キー検証が必要となる Apigee API プロキシを作成します。
API プロダクトを作成して、内部と外部のアプリケーション デベロッパーにさまざまなレベルのサービスを提供します。特定のアプリケーションごとに呼び出し回数を制限するために、割り当てポリシーを使用します。CORS ポリシーを作成して API にクロスオリジン リソース シェアリング(CORS)機能を追加し、ウェブ アプリケーションから呼び出すことができるようにします。次に、デベロッパー ポータルを作成して、アプリ デベロッパーが使用できるように API プロダクトを公開します。
このラボでは、次のタスクを行う方法について学びます。
こちらの説明をお読みください。ラボには時間制限があり、一時停止することはできません。タイマーは、Google Cloud のリソースを利用できる時間を示しており、[ラボを開始] をクリックするとスタートします。
このハンズオンラボでは、シミュレーションやデモ環境ではなく実際のクラウド環境を使って、ラボのアクティビティを行います。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。
このラボを完了するためには、下記が必要です。
[ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるダイアログでお支払い方法を選択してください。 左側の [ラボの詳細] ペインには、以下が表示されます。
[Google Cloud コンソールを開く] をクリックします(Chrome ブラウザを使用している場合は、右クリックして [シークレット ウィンドウで開く] を選択します)。
ラボでリソースがスピンアップし、別のタブで [ログイン] ページが表示されます。
ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。
必要に応じて、下のユーザー名をコピーして、[ログイン] ダイアログに貼り付けます。
[ラボの詳細] ペインでもユーザー名を確認できます。
[次へ] をクリックします。
以下のパスワードをコピーして、[ようこそ] ダイアログに貼り付けます。
[ラボの詳細] ペインでもパスワードを確認できます。
[次へ] をクリックします。
その後次のように進みます。
その後、このタブで Google Cloud コンソールが開きます。
Cloud Shell は、開発ツールと一緒に読み込まれる仮想マシンです。5 GB の永続ホーム ディレクトリが用意されており、Google Cloud で稼働します。Cloud Shell を使用すると、コマンドラインで Google Cloud リソースにアクセスできます。
Google Cloud コンソールの上部にある「Cloud Shell をアクティブにする」アイコン をクリックします。
ウィンドウで次の操作を行います。
接続した時点で認証が完了しており、プロジェクトに各自の Project_ID、
gcloud
は Google Cloud のコマンドライン ツールです。このツールは、Cloud Shell にプリインストールされており、タブ補完がサポートされています。
出力:
出力:
gcloud
ドキュメントの全文については、gcloud CLI の概要ガイドをご覧ください。
Apigee コンソールを開くには、次の手順に沿って操作します。
Apigee
」と入力し、検索結果で [Apigee API Management] をクリックします。Apigee コンソールが開き、よく使用される場所へのクイックリンクがランディング ページに表示されます。
Apigee がナビゲーション メニューに固定されます。
このタスクでは、バックエンド サービスのファサードとして機能する Apigee API プロキシを作成します。API プロキシでは、サービス アカウントを使用して、Cloud Run サービスに OpenID Connect ID トークンを提示できるようにします。
simplebank-rest
という名前のバックエンド サービスがすでに作成され、Cloud Run にデプロイされています。
この URL を保存します。API プロキシの作成時に使用します。
Apigee のナビゲーション メニューで、[Proxy development] > [API proxies] を選択します。
プロキシ ウィザードを使用して新しいプロキシを作成するには、[+Create] をクリックします。
バックエンド サービスのリバース プロキシを作成します。
[Proxy template] で、[General template] > [Reverse proxy (Most common)] を選択します。
[Proxy details] で次のように指定します。
プロパティ | 値 |
---|---|
Proxy name | bank-v1 |
Base path | /bank/v1 |
Target (Existing API) | バックエンド URL |
ターゲットには、このタスクですでに取得した次のようなバックエンド URL を指定します。
[Next] をクリックします。
[Deploy (optional)] の設定はデフォルトのままにして、[Create] をクリックします。
このタスクでは、API プロキシに VerifyAPIKey ポリシーを追加します。有効な API キーを提供しないリクエストは拒否されます。
VerifyAPIKey ポリシーを使用すると、実行時に API キーを検証できるため、承認された API キーを持つアプリケーションのみに API へのアクセスを許可できます。このポリシーにより、API キーが有効で失効しておらず、リクエストされた特定のリソースの利用が承認されていることを確認できます。
[Develop] タブをクリックします。
プロキシの [Navigator] メニューで、[Proxy Endpoints] セクションの [PreFlow] をクリックします。
VerifyAPIKey ポリシーは、API プロキシの初期段階に配置する必要があります。デフォルトのプロキシ エンドポイントのリクエスト PreFlow が、API プロキシにリクエストが届いたときに最初に実行されるフローです。
[Flow] ペインで、リクエスト フローの右上にある [+ Add Policy Step] ボタンをクリックします。
[Create new policy] を選択し、[Security] セクションの [select policy] で [Verify API Key] を選択した後、[Display Name] と [Name] に VAK-VerifyKey
を設定します。
[Add] をクリックします。
VerifyAPIKey 構成が [Code] ペインの [Policies] に表示されます。
APIKey 要素は、リクエストで指定されている API キーの場所を示します。
APIKey 要素で、request.queryparam.apikey
を request.header.apikey
に置き換えます。
API キーをヘッダーで指定すると、ログに記録されたりブラウザ履歴に保存されたりする可能性が低くなります。
バックエンド サービスは認証アクセスを必要とするようにデプロイされているため、有効な OpenID Connect の ID トークンがなければサービスを呼び出すことができません。
HTTPTargetConnection でサービスのバックエンド ターゲットを指定します。
プロキシの [Navigator] メニューで、[Target Endpoints] セクションの [PreFlow] をクリックします。
次のコードを探します(URL は異なります)。
Cloud Shell で、次のコマンドセットを貼り付けて実行します。
この一連のコマンドでは、Apigee API を使用して、Apigee ランタイム インスタンスが作成されて eval 環境がアタッチされたことを確認します。
インスタンスが使用可能になるまで待ちます。
***ORG IS READY TO USE***
というテキストが表示されたら、インスタンスは使用可能です。ラボを開始する前にすでに Apigee 組織(org)が作成されていることがあります。その場合はインスタンスが作成されるまで待つ必要はありません。
組織の準備が整うまで待つ場合は、その間にAPI プロダクト、クロスオリジン リソース シェアリング(CORS)、デベロッパー ポータルの詳細をご覧ください。
Apigee のナビゲーション メニューで、[Proxy development] > [API proxies] を選択し、[bank-v1] をクリックします。
[Deploy] をクリックします。
[Environment] で [eval] を選択します。
[Service account] に、サービス アカウントのメールアドレスを指定します。
[Deploy]、[Confirm] の順にクリックします。
eval のデプロイ ステータスを確認し、プロキシがデプロイされるまで待ちます。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
Apigee 組織の eval 環境は、eval.example.com というホスト名を使用して呼び出すことができます。このホスト名を Apigee ランタイム インスタンスの IP アドレスに解決する DNS エントリは、すでにプロジェクト内に作成されています。この DNS エントリは限定公開ゾーンに作成されているため、内部ネットワーク上でのみ表示されます。
Cloud Shell は内部ネットワークに存在しないため、Cloud Shell コマンドではこの DNS エントリを解決できません。組織内の仮想マシン(VM)であれば限定公開ゾーンの DNS にアクセスでき、apigeex-test-vm という名前の VM が自動的に作成されています。このマシンを使用して API プロキシを呼び出すことができます。
Cloud Shell で、テスト VM への SSH 接続を開きます。
承認するよう求められた場合は、[承認] をクリックします。
Cloud Shell で確認されるすべての項目について、Enter キーまたは Return キーを押して、デフォルトの入力を指定します。
プロジェクトのオーナーとしてログインしているため、このマシンへの SSH は許可されます。
これで、Cloud Shell セッションが VM 内で実行できるようになります。
eval 環境にデプロイした bank-v1 API プロキシを呼び出します。
-k
オプションを指定すると、curl
は TLS 証明書の検証をスキップします。このラボの Apigee ランタイムでは、信頼できる認証局(CA)によって作成された証明書ではなく、自己署名証明書を使用します。
-k
オプションを使用して証明書の検証を省略することは避けてください。
この API は、顧客リストを取得しようとします。次のような 401 Unauthorized レスポンスが表示されます。
このレスポンスは、API キーが指定されていないためにバックエンド サービスへのアクセスが API プロキシによってブロックされたことを示しています。
コマンド exit
を入力して SSH セッションを終了し、Cloud Shell に戻ります。
このタスクでは、API のさまざまなレベルのアクセスを提供する API プロダクトを追加します。次に、2 つのアプリケーションを作成し、個別の API プロダクトを関連付けて、異なるアクセス権を付与します。
最初の API プロダクトは、サービスへの完全アクセス権を付与します。
Apigee のナビゲーション メニューで、[Distribution] > [API Products] を選択します。
新しい API プロダクトを作成するには、[+Create] をクリックします。
[Product details] ペインで、以下を指定します。
プロパティ | 値 |
---|---|
Name | bank-fullaccess |
Display Name | bank (full access) |
Description | bank API への完全アクセスを許可する |
Environment | [eval] を選択 |
Access | [Public] を選択 |
[Automatically approve access requests] は選択したままにします。
[Operations] セクションで、[+Add an Operation] をクリックします。
オペレーションは、API プロダクトに関連付けられているアプリケーションに対してどの API プロキシのどのリクエストを許可するかを指定するために使用されます。
以下を指定します。
Name | 値 |
---|---|
Source | bank-v1 API プロキシを選択 |
Path | /** |
Methods | GET、PATCH、POST、PUT、DELETE を選択 |
パス式 "/**" は、任意の深さの任意のパス接尾辞がオペレーションに一致することを示します。
本番環境では、このワイルドカード パス式を使用せずに、許可する各オペレーションを個別に追加することもできます。
[Save] をクリックして、オペレーションを保存します。
API プロダクトの [Custom Attributes] セクションで、[+Add Custom Attribute] をクリックします。
カスタム属性を使用すると、プロキシで利用できるようにするデータをアタッチして、アクセスを制御できます。
この場合は、Retail API 用の完全アクセスの API プロダクトであるため、API を呼び出すアプリケーションに完全アクセス権を許可することを示すカスタム属性を作成します。
以下を指定します。
プロパティ | 値 |
---|---|
Name | full-access |
値 | yes |
[OK] をクリックしてカスタム属性を保存します。
API プロダクトを保存するには、ページ上部の [Save] をクリックします。
[Distribution] > [API Products] ページに戻ります。API プロダクトがリストに表示されます。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
2 つ目の API プロダクトは、サービスに対する読み取り専用アクセス権を付与します。
新しい API プロダクトを作成するには、[+Create] をクリックします。
[Product details] ペインで、以下を指定します。
プロパティ | 値 |
---|---|
Name | bank-readonly |
Display Name | bank (read-only) |
Description | bank API への読み取り専用アクセスを許可する |
Environment | [eval] を選択 |
Access | [Public] を選択 |
[Automatically approve access requests] は選択したままにします。
[Operations] セクションで、[+Add an Operation] をクリックします。
以下を指定します。
プロパティ | 値 |
---|---|
Source | bank-v1 API プロキシを選択 |
Path | /** |
Methods | GET を選択 |
[Save] をクリックして、オペレーションを保存します。
API プロダクトを保存するには、ページ上部の [Save] をクリックします。
[Distribution] > [API Products] ページに戻ります。API プロダクトがリストに表示されます。
アプリを作成する前に、アプリ デベロッパーを作成する必要があります。
Apigee のナビゲーション メニューで、[Distribution] > [Developers] をクリックします。
新しいアプリ デベロッパーを作成するには、[CREATE] をクリックします。
以下を指定します。
プロパティ | 値 |
---|---|
First Name | Joe |
Last Name | Developer |
joe@example.com | |
Username | joe |
[ADD] をクリックしてアプリ デベロッパーを作成します。
Apigee のナビゲーション メニューで、[Distribution] > [Apps] をクリックします。
新しいアプリを作成するには、[CREATE] をクリックします。
[App details] ペインで、以下を指定します。
プロパティ | 値 |
---|---|
Name | readonly-app |
Developer | 「Joe Developer」を選択 |
[Credentials] ペインで、[Add product] をクリックし、[bank (read-only)] をクリックしてから [Add(1)] をクリックして追加します。
[Product] で [bank (read-only)] の横にあるチェックボックスをオンにして、[APPROVE] をクリックします。
[Create] をクリックしてアプリを作成します。
これで、アプリのキーとシークレットが構成されました。
Apigee のナビゲーション メニューで、[Distribution] > [Apps] > [readonly-app] をクリックします。
[Credentials] で、[Key] の横にある [Show] をクリックします。
これが API の呼び出しに使用される API キーです。キーはコピーできますが、次のステップでは、Apigee API の curl 呼び出しを使用して API キーを取得します。
左側のナビゲーション メニューで [Distribution] > [Apps] をクリックします。
新しいアプリを作成するには、[+App] をクリックします。
[App details] ペインで、以下を指定します。
プロパティ | 値 |
---|---|
Name | fullaccess-app |
Developer | 「Joe Developer」を選択 |
[Credentials] ペインで、[Add product] をクリックし、[bank (full access)] をクリックしてから [Add(1)] をクリックして追加します。
[Product] で [bank (full-access)] の横にあるチェックボックスをオンにして、[APPROVE] をクリックします。
右上の [Create] をクリックしてアプリを作成します。
Apigee のナビゲーション メニューで、[Distribution] > [Apps] > [fullaccess-app] をクリックします。
[Credentials] で、[Key] の横にある [Show] をクリックします。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
Cloud Shell で、テスト VM への SSH 接続を開きます。
承認するよう求められた場合は、[承認] をクリックします。
これで、Cloud Shell セッションを VM 内で実行できるようになります。
読み取り専用アプリケーションの API キーを取得するには、次のコマンドを実行します。
最初のコマンドでは、gcloud 構成を読み取って現在のプロジェクトを取得します。2 番目のコマンドでは、Apigee API を使用して API キーを取得します。ログインしているユーザーのアクセス許可を持つアクセス トークンが送信されるので、リクエストは承認されます。
疑似 API キーを使用して、eval 環境でデプロイされている bank-v1 API プロキシを呼び出します。
レスポンスは、API キーが無効であることを示すフォールトを含む 401 Unauthorized です。
実際の API キーを使用して、eval 環境でデプロイされている bank-v1 API プロキシを呼び出します。
リクエストが許可され、レスポンスには顧客のリストが含まれます。
再び実際の API キーを使用して、eval 環境でデプロイされている bank-v1 API プロキシに対する別の呼び出しを行います。
今度は、レスポンスは指定されたリソースについて API キーが無効であることを示すフォールトを含む 401 Unauthorized です。指定された API キーが読み取り専用 API プロダクトに関連付けられているためにリクエストが拒否され、POST リクエストが許可されません。
「exit
」と入力して、仮想マシンの SSH セッションを終了します。
このタスクでは、アプリケーションごとに許可される特定の期間のリクエスト数を制限する割り当てポリシーを追加します。割り当てポリシーでは、API プロダクトで指定されている割り当て構成を使用します。
Apigee のナビゲーション メニューで、[Proxy development] > [API Proxies] を選択し、[bank-v1] をクリックします。
[Develop] タブをクリックします。
プロキシの [Navigator] メニューで、[Proxy Endpoints] セクションの [PreFlow] をクリックします。
割り当てポリシーでは、特定のアプリケーションの割り当てが超過していないことを確認します。上限に達するとエラーが発生し、リクエストは中止されます。上限に達していない場合は、許可されるリクエストの数が減少します。
割り当てポリシーは、VerifyAPIKey ポリシーで設定された変数に基づいて呼び出し元アプリケーションを特定します。そのため、割り当てポリシーは VerifyAPIKey ポリシーの後に配置する必要があります。
[Flow] ペインで、リクエスト フローの右上にある [+ Add Policy Step] ボタンをクリックします。
[Create new policy] を選択し、[Traffic Management] セクションの [select policy] で [Quota] を選択した後、[Display Name] と [Name] に Q-EnforceQuota
を設定します。
[Add] をクリックします。
割り当て構成が [Code] ペインに表示されます。
割り当て構成を次のように変更します。
API プロダクトを使用して、許可されるレートを指定します。UseQuotaConfigInAPIProduct 要素の stepName では、API プロダクトを特定するステップを指定しています。
API キーまたは OAuth トークンが検証されると、API プロダクトに関連付けられているアプリに関連付けることができます。こうしたポリシー設定を使用して、VAK-VerifyKey という VerifyAPIKey ステップが API プロダクトを特定します。Q-EnforceQuota ポリシーの前に VerifyAPIKey ポリシーを実行する必要があります。
割り当てポリシーで指定されているデフォルトの構成値では、1(Interval)か月(TimeUnit)あたり最大 2(Allow)つのリクエストが指定されます。デフォルト値は、値が使用できない場合にのみ使用され、これは API キーに関連付けられている API プロダクトの割り当て設定が指定されていない場合にのみ発生します。
[Save] をクリックします。プロキシが新しいリビジョンとして保存されたことを知らせるメッセージが表示された場合は、[OK] をクリックします。
[デプロイ] をクリックします。
[Service account] に、サービス アカウントのメールアドレスを指定します。
[Deploy] をクリックします。
[Overview] タブをクリックして eval のデプロイ ステータスを確認し、プロキシがデプロイされたと示されるまで待ちます。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
Debug は、Apigee で動作している API プロキシのトラブルシューティングとモニタリングを行うためのツールです。Debug ツールを使用すると、API 呼び出しの各ステップの詳細を調べることができます。
Apigee のナビゲーション メニューで、[Proxy development] > [API Proxies] を選択し、[bank-v1] をクリックします。
[Debug] タブをクリックします。
[Start a debug session] ペインで、環境のプルダウンから [eval] を選択します。
[Start Debug Session] をクリックします。
デバッグ セッションでリクエストのキャプチャが開始されるまで少し時間がかかる場合があります。
API リクエストを行ってからデバッグ セッションを確認します。
Cloud Shell で、テスト VM への SSH 接続を開きます。
承認するよう求められた場合は、[承認] をクリックします。
これで、Cloud Shell セッションを VM 内で実行できるようになります。
両方の API キーを取得するには、次のコマンドを実行します。
割り当てエラーが発生するまでこのリクエストを繰り返し送信します。
割り当て違反は次のようになります。
Apigee UI タブに戻ります。
数件の 200 リクエストと 1 件の 429 リクエストが表示されます。
200 リクエストをクリックします。トランザクション マップの右側に、バックエンドが呼び出されたことを示すファクトリー アイコンが表示されます。
デバッグ セッション ペインで、左上にある左矢印(<)をクリックして、[Start a debug session] ペインに戻ります。
[Start Debug Session] をクリックして新しいデバッグ セッションを開始します。
SSH セッションに戻り、割り当てエラーが発生するまで完全アクセスの API キーを使用してこのリクエストを繰り返し送信します。
今回は、429 レスポンスで拒否されるまで少なくとも 5 件のリクエストを送信できます。完全アクセスの API プロダクトの割り当ては、1 分あたり 5 件のリクエストです。時間の秒の部分がゼロにリセットされると、割り当てがリセットされます。上記のコマンドでは、API を呼び出す前に時間を出力しているため、割り当てがリセットされたおおよその時刻を確認できます。
「exit
」と入力して、仮想マシンの SSH セッションを終了します。
Apigee UI タブに戻ります。
リクエストを選択して割り当てアイコンをクリックすると、VAK-VerifyKey 割り当て変数が 1 分あたり 5 件のリクエストを示しているのがわかります。
このタスクでは、bank-v1 プロキシに クロスオリジン リソース シェアリング( CORS) を追加します。
CORS は、HTTP ヘッダーを使用して、別のドメインから制限付きリソースに安全にアクセスできるかどうかをブラウザに示すプロトコルです。デフォルトでは、クロスドメイン リクエストは、同一オリジン セキュリティ ポリシーで禁止されています。同一オリジン ポリシーは、ブラウザ ユーザーが知らないうちに不正な行為者とセッション情報を共有しないよう保護します。
同一オリジン ポリシーが適用されると、www.example.com から提供されたウェブページでは、api.example.com の API はホスト名が異なるためデフォルトでは呼び出すことができません。CORS を使用すると、このようなクロスオリジン アクセスが可能になります。
デベロッパー ポータルの bank API では CORS が必要です。Apigee デベロッパー ポータルにはドメイン名 *.apigee.io があり、API には別のドメインからアクセスします。ドキュメントから API を呼び出すには、エラー レスポンスなどのすべての API レスポンスに CORS ヘッダーを追加します。
CORS ではプリフライト リクエストも使用します。ブラウザは OPTIONS 動詞を使用してプリフライト リクエストを送信し、次の呼び出しが許可されるかどうかを確認します。
CORS ポリシーでは、すべての CORS 機能を処理できます。
CORS の詳細については、Apigee CORS のドキュメントを参照してください。
Apigee のナビゲーション メニューで、[Proxy development] > [API Proxies] を選択し、[bank-v1] をクリックします。
[Develop] タブをクリックします。
プロキシの [Navigator] メニューで、[Proxy Endpoints] セクションの [PreFlow] をクリックします。
[Flow] ペインで、リクエスト フローの右上にある [+ Add Policy Step] ボタンをクリックします。
[Create new policy] を選択し、[Security] セクションの [select policy] で [CORS] を選択した後、[Display Name] と [Name] に CORS
を設定します。
[Add] をクリックします。
[Flow] ペインの下に CORS ポリシーの構成が表示されます。
AllowOrigins には、許可されるオリジンが一覧表示されます。デフォルトの構成では、許可されるオリジンがリクエストで渡されるオリジンと等しいため、すべてのオリジンが許可されます。一般的な本番環境のユースケースでは、特定のホスト名からのリクエストのみを許可できます。
AllowMethods では、API の許可されるメソッドのみを指定します。
AllowHeaders には、リクエストで渡される可能性があるヘッダーが一覧表示されます。
ExposeHeaders では、オリジンで呼び出されたときに許可するレスポンスのヘッダーを指定します。デフォルト値の * を使用すると、レスポンス ヘッダーはレスポンスから削除されません。
MaxAge は、ブラウザでプリフライト レスポンスをキャッシュに保存する時間を秒単位で指定します。
AllowCredentials は、Authorization ヘッダー、TLS クライアント証明書、Cookie をリクエストで送信できるかどうかを示します。
GeneratePreflightResponse は、OPTIONS メソッドを含むプリフライト リクエストを処理するかどうかを指定します。
AllowHeaders 構成を次の構成に置き換えます。
API で apikey
ヘッダーを使用して API キーを指定しているため、これをブラウザから呼び出すことができるように追加する必要があります。
MaxAge の値を -1
に置き換えます。
これにより、ブラウザによるプリフライト レスポンスのキャッシュ保存が無効になるため、常にプリフライト リクエストが表示されます。本番環境のユースケースでは、一般的にレスポンスのキャッシュ保存を許可して、リクエストごとに呼び出しが 2 回行われないようにします。
プロキシの [Navigator] メニューで、[Proxy Endpoints] セクションの [PreFlow] をクリックします。
CORS ポリシーを追加すると、自動的にフローの最後に追加されます。ただし、プリフライト リクエストでは、API キーは必要ありません。
PreFlow 構成を編集して、CORS ポリシーを VAK-VerifyKey ポリシーの前に移動します。以下の構成を、
次の構成に置き換えます。
[Save] をクリックします。プロキシが新しいリビジョンとして保存されたことを知らせるメッセージが表示された場合は、[OK] をクリックします。
[デプロイ] をクリックします。
[Service account] に、サービス アカウントのメールアドレスを指定します。
[Deploy] をクリックします。
[Overview] タブをクリックして eval のデプロイ ステータスを確認し、プロキシがデプロイされたと示されるまで待ちます。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
[Debug] タブをクリックします。
[Start a debug session] ペインで、環境のプルダウンから [eval] を選択します。
[Start Debug Session] をクリックします。
デバッグ セッションでリクエストのキャプチャが開始されるまで少し時間がかかる場合があります。
Cloud Shell で、テスト VM への SSH 接続を開きます。
承認するよう求められた場合は、[承認] をクリックします。
これで、Cloud Shell セッションを VM 内で実行できるようになります。
API キーを取得するには、次のコマンドを実行します。
顧客リストを取得するリクエストを送信します。
オリジンがないため、CORS 機能はスキップされます。Access-Control-Allow-Origin ヘッダーが返されないことを確認します。
別のリクエストを送信しますが、今度は Origin ヘッダーを含めます。これにより、通常の CORS リクエストがテストされます。
オリジンが指定されているため、access-control-* ヘッダーが返されます。
プリフライト リクエストを送信します。
CORS ポリシーによってレスポンスにプリフライト ヘッダーが設定され、リクエストがバックエンドに到達しなくなります。
Apigee UI に戻ってデバッグツールで OPTIONS 呼び出しを確認すると、CORS ポリシーによってバックエンド サービスへの呼び出しの引き渡しが許可されなかったことを確認できます。
「exit
」と入力して、仮想マシンの SSH セッションを終了します。
このタスクでは、API プロキシのインターフェースを定義している OpenAPI 仕様をダウンロードして変更します。
OpenAPI 仕様は、API プロキシをデベロッパー ポータルに公開するときに使用されます。
Cloud Shell で API プロキシの OpenAPI 仕様をダウンロードするには、次のコマンドを実行します。
この curl コマンドにより、simplebank-spec.yaml という名前のファイルがダウンロードされ、ホーム ディレクトリに同じ名前のファイルで保存されます。
Cloud Shell で、[エディタを開く] をクリックし、必要に応じて [新しいウィンドウで開く] をクリックします。
エディタで、simplebank-spec.yaml ファイルを選択します。
この OpenAPI 仕様は、このラボで作成した API プロキシのインターフェースを指定しています。この仕様は、デベロッパー ポータルでライブ ドキュメントを提供するために使用されます。
デベロッパー ポータルは、外部ネットワークから Apigee プロキシにアクセスします。使用しているホスト名 eval.example.com は、内部ネットワークでのみ利用できます。
ロードバランサが API プロキシへの外部アクセスを提供するようにプロビジョニングされています。外部アクセスは、ワイルドカード DNS プロバイダである nip.io が提供するホスト名を使用します。
外部ホスト名は次のようになります。
このホスト名は、eval-group 環境グループで一致するホスト名としてすでに指定されています。
Cloud Shell で eval-group 設定を取得するには、次のコマンドを使用します。
hostnames 配列には、2 つのホスト名が含まれています。一つは IP アドレスのないホスト名(eval.example.com)、もう一つは IP アドレスを含むホスト名(eval.60.70.80.90.nip.io など)です。OpenAPI 仕様では IP アドレスを含むホスト名を使用します。
エディタで、10 行目のホスト名を次のホスト名に置き換えます。
サーバー URL のホスト名を置き換えると、10 行目は次のようになります。
[ファイル] > [保存] をクリックします。
[ファイル] > [ダウンロード] をクリックします。
これでファイルがローカルマシンにダウンロードされます。更新した仕様をデベロッパー ポータルで使用します。
このタスクでは、統合デベロッパー ポータルを作成して API を公開します。
Apigee のナビゲーション メニューで、[Distribution] > [Portals] を選択し、[GO TO CLASSIC APIGEE UI] をクリックします。
[Get started] をクリックします。
名前として「bank」と入力し、[Create] をクリックします。
作成には少し時間がかかる場合があります。作成されるとポータルの概要ページが開きます。
「Enroll in beta for team and audience management features」というメッセージが表示された場合は、[Enroll] をクリックします。
[API catalog] をクリックします。
[+] をクリックします。
[bank (full access)] プロダクトを選択し、[Next] をクリックします。
API の詳細をカスタマイズします。
プロパティ | 値 |
---|---|
Published (listed in the catalog) | 選択済み |
Display title | SimpleBank |
Display description | SimpleBank API v1 |
API visibility | [Public (visible to anyone)] を選択 |
[Published] を選択すると、API がポータルに表示され、[Public] を選択すると、ユーザーがポータルにログインしていない場合でも API を表示できます。
[Select image] をクリックしてから [Image URL] リンクをクリックします。
画像の URL を次のように設定します。
ブタの貯金箱の画像が表示されます。
[Select] をクリックします。
[API documentation] セクションで、[OpenAPI document] を選択します。
[Select Document] をクリックします。
クラウドの画像をクリックして、アップロードするファイルを選択します。
Cloud Shell からダウンロードした OpenAPI 仕様ファイル(simplebank-spec.yaml)を選択し、[Open] をクリックします。
[Select] をクリックします。
[Save] をクリックします。
デベロッパー ポータルを新しいタブで開くには、[Live Portal] をクリックします。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
Cloud Shell で完全アクセスの API キーを取得するには、次のコマンドを実行します。
API キーをクリップボードにコピーします。
[Live Portal] タブに戻り、[APIs] をクリックします。
ブタの貯金箱をクリックします。
SimpleBank API が表示されます。
[Authorize] をクリックします。
[Key] に API キーを貼り付けます。
[Authorize] をクリックしてから [OK] をクリックします。
任意のリクエストで API キーが送信されるようになります。
左側のメニューで [/customers POST] をクリックします。
次のリクエスト本文を指定します。
[Execute] をクリックします。
200 OK レスポンスは、顧客が作成されたことを示します。
左側のメニューで [/customers GET] をクリックします。
[Execute] をクリックします。
作成した顧客がデータベース内の他の顧客とともに返されます。
Apigee UI とデバッグ セッションに戻ると、両方のコマンドを送信する前に OPTIONS(プリフライト)リクエストがブラウザによって自動的に送信されたことがわかります。ブラウザは apikey ヘッダーが許可されるかどうかを把握していないため、GET コマンドの前にプリフライト リクエストが必要となります。
このタスクでは、デベロッパー ポータルを使用してアプリ デベロッパーを作成します。
[Live Portal] に戻り、[Sign In] をクリックします。
[Create an account] をクリックします。
名、姓、メールアドレス、パスワードを入力します。
パスワードを使用してデベロッパー ポータルにログインする必要があるため、覚えやすいパスワードにします。
チェックボックスをオンにして、利用規約に同意します。
利用規約ページは、アプリ デベロッパーに API を提供する組織が指定します。
[Create Account] をクリックします。
メールアドレスにメールが届きます。このメールには、アカウント ユーザーのログインを許可するためにクリックする必要があるリンクが含まれています。
メールに記載されたリンクをクリックします。
デベロッパー ポータルにブラウザタブが開きます。
[Sign In] をクリックします。
メールアドレスとパスワードを入力し、[Sign In] をクリックします。
右上のメールアドレスをクリックし、[Apps] をクリックします。
[+ New App] をクリックします。
[App Name] として MyApp
を指定します。
API セクションの SimpleBank で、[Enable] をクリックします。
[Save] をクリックします。
アプリが登録され、API キーが表示されます。この API キーは、デベロッパー ポータル内で使用できます。アプリ デベロッパーとアプリは、Apigee UI に戻り、それぞれ [Publish] > [Developers]、[Publish] > [Apps] に移動すると表示されます。
このラボでは、API キー検証を使用して API へのアクセスを制限しました。API プロダクトを作成して、内部と外部のアプリ デベロッパーにさまざまなレベルのサービスを提供しました。割り当てポリシーを使用して、各アプリの呼び出し回数を制限し、API での CORS をサポートとするために CORS ポリシーを追加しました。デベロッパー ポータルを作成し、アプリ デベロッパーが利用できるように API プロダクトを公開しました。
Google Cloud トレーニングと認定資格を通して、Google Cloud 技術を最大限に活用できるようになります。必要な技術スキルとベスト プラクティスについて取り扱うクラスでは、学習を継続的に進めることができます。トレーニングは基礎レベルから上級レベルまであり、オンデマンド、ライブ、バーチャル参加など、多忙なスケジュールにも対応できるオプションが用意されています。認定資格を取得することで、Google Cloud テクノロジーに関するスキルと知識を証明できます。
マニュアルの最終更新日: 2025 年 1 月 27 日
ラボの最終テスト日: 2025 年 1 月 27 日
Copyright 2025 Google LLC. All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。
このコンテンツは現在ご利用いただけません
利用可能になりましたら、メールでお知らせいたします
ありがとうございます。
利用可能になりましたら、メールでご連絡いたします
1 回に 1 つのラボ
既存のラボをすべて終了して、このラボを開始することを確認してください