
始める前に
- ラボでは、Google Cloud プロジェクトとリソースを一定の時間利用します
- ラボには時間制限があり、一時停止機能はありません。ラボを終了した場合は、最初からやり直す必要があります。
- 画面左上の [ラボを開始] をクリックして開始します
Proxy the Cloud Translation API
/ 20
Change the API request and response
/ 20
Add API key verification and quota enforcement
/ 20
Add message logging
/ 20
Rewrite a backend error message
/ 20
チャレンジラボでは、シナリオと一連のタスクが提供されます。手順ガイドに沿って進める形式ではなく、コース内のラボで習得したスキルを駆使して、ご自身でタスクを完了していただきます。タスクが適切に完了したかどうかは、このページに表示される自動スコアリング システムで確認できます。
チャレンジラボは、Google Cloud の新しいコンセプトについて学習するためのものではありません。デフォルト値を変更する、エラー メッセージを読み調査を行ってミスを修正するなど、習得したスキルを応用する能力が求められます。
100% のスコアを達成するには、制限時間内に全タスクを完了する必要があります。
このラボは、「Apigee X を使用した API の開発と保護」コースのラボを完了した受講者を対象としています。準備が整ったらチャレンジを開始しましょう。
こちらの説明をお読みください。ラボには時間制限があり、一時停止することはできません。タイマーは、Google Cloud のリソースを利用できる時間を示しており、[ラボを開始] をクリックするとスタートします。
このハンズオンラボでは、シミュレーションやデモ環境ではなく実際のクラウド環境を使って、ラボのアクティビティを行います。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。
このラボを完了するためには、下記が必要です。
あなたは全国展開する小売店 Cymbal Shops でクラウド エンジニアとして働いています。Cymbal Shops はグローバルな販売に力を入れており、翻訳サービスはグローバルなビジネスを展開するための重要なツールとして位置づけられています。あなたは、translation API の最初のバージョンを作成することになりました。
これらのタスクのスキルや知識があるという前提のため、手順ガイドは提供されません。
プロジェクトの Apigee 組織に、新しい Apigee API プロキシとその他のリソースを作成します。各タスクの説明文に目を通し、必要な機能を作成してください。
API プロキシへの変更を保存する際に、Could not save new revision
エラーが出る場合があります。保存プルダウン ボタン()を使用し、[Save as new revision] を選択した場合は、エラー メッセージが表示され、何が無効であるかがわかります。
Cymbal Shops は API プロキシのバックエンド サービスとして Google Cloud の Translation API を使用することにしました。
要件:
apigee-proxy
を作成し、[Logging] > [ログ書き込み] のロールを付与します。https://translation.googleapis.com/language/translate/v2
)です。https://www.googleapis.com/auth/cloud-translation
とします。スクリプトが ORG IS READY TO USE
を返したら、次の手順に進むことができます。
Apigee 組織内の eval 環境は、eval.example.com というホスト名で呼び出すことができます。この DNS エントリは内部ネットワークでのみ利用可能なため、作成された VM を使用する必要があります。
承認するよう求められた場合は、[承認] をクリックします。gcloud コマンドで尋ねられる各質問について、Enter または Return キーを押して、デフォルトの入力を指定します。
タスク 1 が成功したら、以下の curl コマンドでテキストが翻訳されるはずです。
レスポンスは次のようになります。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
Cymbal Shops は Translation API が提供するインターフェースとは異なる API を作りたいと考えています。修正すべき Translation API 呼び出しは 2 つあります。
最初の呼び出しで、有効な言語のリストを取得します。
Cloud Translation API リクエスト:
Cloud Translation API レスポンス:
translate-v1 リクエスト:
translate-v1 レスポンス:
API プロキシは、GET を POST に置き換え、data と languages のレスポンスのフィールドを削除し、プロパティ セットからターゲット言語のコードを得る必要があります。アクセス トークンは、タスク 1 の [認証] セクションで自動的に追加されました。
2 回目の呼び出しで、テキストを指定された言語に翻訳します。
Cloud Translate API リクエスト:
Cloud Translate API レスポンス:
translate-v1 リクエスト:
translate-v1 レスポンス:
API プロキシは lang クエリ パラメータからターゲット言語を取得し、受信テキストと翻訳テキストのフィールド名を変更する必要があります。lang クエリ パラメータはオプションで translate-v1 リクエストから省略することができ、その場合、ターゲット言語はプロパティ セットのプロパティから取得されます。
要件:
API プロキシ内に、language.properties という名前のプロパティ セットを作成します。このプロパティ セットには、es
の値をもつ output と、en
の値をもつ caller の 2 つのプロパティが必要です。caller プロパティは、言語のリスティング時にターゲット言語(name フィールドに使用される言語)を指定するために使用します。output では lang クエリ パラメータが提供されない場合に使用されるデフォルトのターゲット言語を指定します。
プロキシ エンドポイントで、POST /
リソース用のパスと動詞の条件付きフローを作成します。そのフローの名前を translate
とします。
プロキシ エンドポイントで、/languages
リソース用のパス(動詞なし)の条件付きフローを作成します。そのフローの名前を getLanguages
とします(動詞は含みません。リクエストの動詞を GET
(プロキシへの入力用)から POST
(バックエンドで必要)に変更することになります。条件に動詞を含めると、request.verb
が GET
と等しくなくなるため、フロー内のレスポンス ポリシーは実行されません)。
translate 条件付きフローで使用するバックエンド リクエストを作成するには、AM-BuildTranslateRequest
という名前の AssignMessage ポリシーを作成します。
ポリシーの内容は以下のとおりです。
AssignVariable とテンプレートによって、のちにログに記録されたメッセージで使用する変数を作成します。text
という名前の変数は jsonPath メッセージ テンプレート関数を使用して、リクエストから text
フィールドを抽出する必要があります。
language
という名前の変数は、firstnonnull メッセージ テンプレート関数を使用して作成する必要があります。この変数には、lang クエリ パラメータ値がある場合はその値を含める必要があり lang クエリ パラメータが指定されていない場合は、ターゲット言語の言語プロパティ セットの output プロパティを含める必要があります。
バックエンド サービスが必要とする JSON ペイロードを設定するには Set セクションを使用します。作成した両変数は、ペイロードで使用されます。
[AssignTo] 要素では既存のリクエスト メッセージを使用する必要があります。
AssignMessage ポリシーの AssignVariable セクションは、以下のようになります
AM-BuildTranslateResponse
という名前の AssignMessage ポリシーを作成します。ポリシーの内容は以下のとおりです。
AssignVariable と jsonPath テンプレートによって、translated
という名前の変数を作成し、Translation API レスポンスから translatedText フィールドを抽出します。ヒント: このフィールドを抽出する JSONPath 式は、$.data.translations[0].translatedText
です。
createNew を true に設定します
新しい JSON ペイロードは translated 変数を使用します。
AssignMessage ポリシーの AssignVariable セクションは、以下のようになります
AM-BuildLanguagesRequest
という名前の AssignMessage ポリシーを作成します。ポリシーの内容は以下のとおりです。
バックエンド リクエストの正しい動詞とペイロードを設定するには、Set を使用します。
バックエンド ペイロードの target パラメータフィールドには、language プロパティ セットの caller プロパティを使用する必要があります。
createNew を true に設定します
コンテンツ タイプが application/json になるようにバックエンド リクエスト ペイロードを設定します。
AssignMessage ポリシーの AssignVariable セクションは、以下のようになります
JS-BuildLanguagesResponse
という名前の JavaScript ポリシーを作成します。JavaScript コードでは、次の手順に従う必要があります。response.content
変数を取得します。response.content
をステップ 3 の JSON に置き換えます。JavaScript コードは次のようになります。
言語リスト:
指定した言語(ドイツ語)に翻訳:
デフォルトの言語(スペイン語)に翻訳:
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
この API へのアクセスは承認されたアプリケーションに限定する必要があるため、VerifyAPI キーポリシーと、リクエスト数を制限する割り当てポリシーを追加します。
要件:
名前と表示名を translate-product
とする API プロダクトを作成します。この API プロダクトは公開アクセスが有効であり、アクセス リクエストを自動的に承認する必要があります。また、この API プロダクトは評価環境で利用できる必要があります。
translate-product
API プロダクトにオペレーションを追加します。このオペレーションは translate-v1 プロキシへのアクセスを許可し、/ を含むすべてのリクエストへのアクセスを許可する /
のパスを使用する必要があります。許可されているメソッドは GET と POST です1 分間に 10 件のリクエストとするオペレーション割り当て設定を追加します。
メール joe@example.com
でデベロッパーを作成します。そして、あなた自身の氏名とユーザー名を選びます。
translate-app
という名前のアプリを作成し、translate-product
API プロダクトを有効にします。また、このアプリを joe@example.com
デベロッパーと関連付ける必要があります。
プロキシ エンドポイントの preflow に VA-VerifyKey
という名前の VerifyAPIKey ポリシーを追加します。API キーはリクエストごとに必要であり、Key ヘッダーを使用して送信する必要があります。
プロキシ エンドポイントの preflow に Q-EnforceQuota
という名前の割り当てポリシーを追加します。
ポリシーには以下の手順を含めます。
calendar
を使用します。calendar の種類には StartTime
要素が必要ですUseQuotaConfigInAPIProduct
を指定して、API プロダクトから割り当てを使用します。API プロダクトで割り当て設定が指定されていない場合は、デフォルトの割り当てである 1 時間ごとに 5 件のリクエストを使用します。これらの変更が行われると、有効な API キーが Key ヘッダーに指定されていない場合、リクエストはエラーを返します。
失敗(API キーなし):
失敗(無効な API キー):
成功(有効な API キー KEY=<前のステップでデベロッパー アプリを設定するときに指定した値>
に KEY 変数が設定されている場合):
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
翻訳サービスの利用状況を把握するため、MessageLogging ポリシーにより、翻訳された各メッセージがログに記録されます。
要件:
ML-LogTranslation
という名前の MessageLogging ポリシーを
translate 条件付きフローに追加します。このポリシーは AM-BuildTranslateResponse
ステップの後に実行する必要があります。LogName
の値は以下のようにします。
ログに記録されたメッセージは contentType を text/plain
とし、メッセージ コンテンツは以下のようにする必要があります
このメッセージは AM-BuildTranslateRequest
ポリシーと AM-BuildTranslateResponse
ポリシーで作成された language、text、translated 変数が必要です。
Google Cloud コンソールの Logging ページでログに記録されたメッセージを検証します。logName : "translate"
クエリを使用して、翻訳されたログのみを表示します。
MessageLogging ポリシーが正常に追加されたら、次の curl コマンドを使用します。
その curl コマンドで次の内容のログ メッセージが作成されるはずです。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
Translation API に送信された target パラメータが無効な場合、400 Bad Request というエラー メッセージが返されます。
このエラー メッセージは送信者を混乱させるので、エラー メッセージを書き換えます。
要件:
FaultRules セクションに FaultRule を追加します。この FaultRule の条件は、fault.name
が ErrorResponseCode
である場合に FaultRule を実行するよう設定する必要があります。
AM-BuildErrorResponse
という名前の AssignMessage ポリシーを作成し、FaultRule に設定します。以下のポリシー構成を使用します。
ポリシーが設定されると、ターゲット エンドポイントの FaultRules セクションは次のようになります。
このような有効なリクエストは、引き続き機能する必要があります。
このような無効な言語クエリ パラメータでは、書き換えられたエラー メッセージを返す必要があります。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
このチャレンジラボのコースでは、Apigee X を使用した API の開発と保護に関する知識を確認しました。
このセルフペース ラボは、「Apigee X を使用した API の開発と保護」クエストの一部です。このクエストを完了すると成果が認められて上のようなバッジが贈られます。獲得したバッジを履歴書やソーシャル プラットフォームに記載し、#GoogleCloudBadge を使用して成果を公表しましょう。
このスキルバッジ クエストは Google Cloud の API デベロッパー向け学習プログラムの一部です。「Deploy and Manage Apigee X」クエストに登録し、学習を続けてください。
Google Cloud トレーニングと認定資格を通して、Google Cloud 技術を最大限に活用できるようになります。必要な技術スキルとベスト プラクティスについて取り扱うクラスでは、学習を継続的に進めることができます。トレーニングは基礎レベルから上級レベルまであり、オンデマンド、ライブ、バーチャル参加など、多忙なスケジュールにも対応できるオプションが用意されています。認定資格を取得することで、Google Cloud テクノロジーに関するスキルと知識を証明できます。
マニュアルの最終更新日: 2024 年 7 月 10 日
ラボの最終テスト日: 2024 年 7 月 10 日
Copyright 2025 Google LLC. All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。
このコンテンツは現在ご利用いただけません
利用可能になりましたら、メールでお知らせいたします
ありがとうございます。
利用可能になりましたら、メールでご連絡いたします
1 回に 1 つのラボ
既存のラボをすべて終了して、このラボを開始することを確認してください