
시작하기 전에
- 실습에서는 정해진 기간 동안 Google Cloud 프로젝트와 리소스를 만듭니다.
- 실습에는 시간 제한이 있으며 일시중지 기능이 없습니다. 실습을 종료하면 처음부터 다시 시작해야 합니다.
- 화면 왼쪽 상단에서 실습 시작을 클릭하여 시작합니다.
Some API resource flows require calling more than one service and combining the responses into a single response. This is often called "mashing up" service calls.
In this lab, you call a third-party service, extract data, and add the data to the target's API response.
In this lab, you learn how to perform the following tasks:
For each lab, you get a new Google Cloud project and set of resources for a fixed time at no cost.
Sign in to Qwiklabs using an incognito window.
Note the lab's access time (for example, 1:15:00
), and make sure you can finish within that time.
There is no pause feature. You can restart if needed, but you have to start at the beginning.
When ready, click Start lab.
Note your lab credentials (Username and Password). You will use them to sign in to the Google Cloud Console.
Click Open Google Console.
Click Use another account and copy/paste credentials for this lab into the prompts.
If you use other credentials, you'll receive errors or incur charges.
Accept the terms and skip the recovery resource page.
Google Cloud Shell is a virtual machine that is loaded with development tools. It offers a persistent 5GB home directory and runs on the Google Cloud.
Google Cloud Shell provides command-line access to your Google Cloud resources.
In Cloud console, on the top right toolbar, click the Open Cloud Shell button.
Click Continue.
It takes a few moments to provision and connect to the environment. When you are connected, you are already authenticated, and the project is set to your PROJECT_ID. For example:
gcloud is the command-line tool for Google Cloud. It comes pre-installed on Cloud Shell and supports tab-completion.
Output:
Example output:
Output:
Example output:
These assets have already been added to the Apigee organization:
These assets will be added to the Apigee organization as soon as the runtime is available:
The highlighted items are used during this lab.
In this task, you use a ServiceCallout policy to call a Google Maps geocoding API to get a street address by latitude and longitude.
A list of stores may be retrieved by using GET /stores.
The beginning of the GET /stores response is:
The first store has the ID benbrook. GET /stores/benbrook
returns:
This request is handled by the getStoreById conditional flow. The latitude and longitude must be extracted from the location object.
You will modify the GET /stores/{storeId} API call to add the street address corresponding to the store's latitude and longitude.
In the Google Cloud console, on the Navigation menu (), look for Apigee in the Pinned Products section.
The Apigee console page will open.
If Apigee is not pinned, search for Apigee in the top search bar and navigate to the Apigee service.
Hover over the name, then click the pin icon ().
The Apigee console page will now be pinned to the Navigation menu.
On the left navigation menu, select Proxy development > API proxies.
Select the retail-v1 proxy.
Click the Develop tab.
You are modifying the version of the retail-v1 proxy that was created during Labs 1 through 7.
In the Navigator menu, click Proxy endpoints > default > getStoreById.
On the Response getStoreById flow, click Add Policy Step (+).
In the Add policy step pane, select Create new policy, and then select Mediation > Extract Variables.
Specify the following values:
Property | Value |
---|---|
Name | EV-ExtractLatLng |
Display name | EV-ExtractLatLng |
Click Add.
Click Policies > EV-ExtractLatLng.
Set the policy configuration to extract the latitude and longitude into variables:
This uses JSONPath to extract the latitude and longitude from the location object and store them in the variables lat and lng.
The service callout calls the Google Geocoding API, passing the latitude and longitude variables to the API.
Property | Value |
---|---|
Geocoding API Key | API-ENG-TRAINING-GEOCODING-KEY |
Geocoding API URL | https://gcp-cs-training-01-prod.apigee.net/googleapis/maps/api/geocode/json |
Open a new browser tab and make a call directly to the API, using this URL for the benbrook location:
The latlng query parameter contains the latitude and longitude, separated by a comma. The API key is passed in the key query parameter.
The response field formatted_address will be accessed using JSONPath. The first entry of the results array will be used. The JSONPath location is:
Click Proxy endpoints > default > getStoreById.
On the Response getStoreById flow, click Add Policy Step (+).
In the Add policy step pane, select Create new policy, and then select Extension > Service Callout.
Specify the following values:
Property | Value |
---|---|
Name | SC-GoogleGeocode |
Display name | SC-GoogleGeocode |
Leave the HTTP Target unchanged.
Click Add.
Click Policies > SC-GoogleGeocode.
The new policy should follow the EV-ExtractLatLng policy, which means that it will be executed after the ExtractVariables policy.
Change the configuration for the SC-GoogleGeocode policy to call the same location you called in the browser:
The response from the API call is stored in an object named calloutResponse.
Click Proxy endpoints > default > getStoreById.
On the Response getStoreById flow, click Add Policy Step (+).
In the Add policy step pane, select Create new policy, and then select Mediation > Extract Variables.
Specify the following values:
Property | Value |
---|---|
Name | EV-ExtractAddress |
Display name | EV-ExtractAddress |
Click Add.
Click Policies > EV-ExtractAddress.
Change the configuration for EV-ExtractAddress:
The response payload from the geocoding API call is the source, and the address from the response is stored in a variable named address.
Click Save, and then click Save as New Revision.
Click Deploy.
To specify that you want the new revision deployed to the eval environment, select eval as the Environment, and then click Deploy.
Click Confirm.
A proxy that is deployed and ready to take traffic will show a green status on the Overview tab.
When a proxy is marked as deployed but the runtime is not yet available and the environment is not yet attached, you may see a red warning sign. Hold the pointer over the Status icon to see the current status.
If the proxy is deployed and shows as green, your proxy is ready for API traffic. If your proxy is not deployed because there are no runtime pods, you can check the provisioning status.
In Cloud Shell, to confirm that the runtime instance has been installed and the eval environment has been attached, run the following commands:
When the script returns ORG IS READY TO USE
, you can proceed to the next steps.
While you wait, explore the following:
In this task, you use the debug tool to verify that the formatted address is retrieved from the geocoding API and extracted into the address variable.
The eval environment in the Apigee organization can be called using the hostname eval.example.com. The DNS entry for this hostname has been created within your project, and it resolves to the IP address of the Apigee runtime instance. This DNS entry has been created in a private zone, which means it is only visible on the internal network.
Cloud Shell does not reside on the internal network, so Cloud Shell commands cannot resolve this DNS entry. A virtual machine (VM) within your project can access the private zone DNS. A virtual machine named apigeex-test-vm was automatically created for this purpose. You can make API proxy calls from this machine.
The curl command will be used to send API requests to an API proxy. The -k
option for curl tells it to skip verification of the TLS certificate. For this lab, the Apigee runtime uses a self-signed certificate. For a production environment, you should use certificates that have been created by a trusted certificate authority (CA).
In Cloud Shell, open a new tab, and then open an SSH connection to your test VM:
The first gcloud command retrieves the zone of the test VM, and the second opens the SSH connection to the VM.
If asked to authorize, click Authorize.
For each question asked in the Cloud Shell, click Enter or Return to specify the default input.
Your logged in identity is the owner of the project, so SSH to this machine is allowed.
Your Cloud Shell session is now running inside the VM.
The API key may be retrieved directly from the app accessible on the Publish > Apps page. It can also be retrieved via Apigee API call.
In the Cloud Shell SSH session, run the following command:
This command retrieves a Google Cloud access token for the logged-in user, sending it as a Bearer token to the Apigee API call. It retrieves the retail-app app details as a JSON response, which is parsed by jq to retrieve the app's key. That key is then put into the API_KEY environment variable, and the export command is concatenated onto the .bashrc file which runs automatically when starting a the SSH session.
To get the store by ID, run this curl command in Cloud Shell:
In Debug, click on the GET request, and then click EV-ExtractAddress.
If you have successfully extracted the latitude and longitude, called the geocoding API, and extracted the formatted address, the address variable will be populated.
In this task, you use a JavaScript policy to insert the address into the target response.
Begin by adding a JavaScript policy that is executed after EV-ExtractAddress in the getStoreById flow.
Click Proxy endpoints > default > getStoreById.
On the Response getStoreById flow, click Add Policy Step (+).
In the Add policy step pane, select Create new policy, and then select Extension > Javascript.
Specify the following values:
Property | Value |
---|---|
Name | JS-AddAddress |
Display name | JS-AddAddress |
For Javascript file, select Create New Resource.
For Resource name, specify addAddress.js
.
Click Add.
For Javascript file, select addAddress.js.
Click Add.
The four policies in the getStoreById response flow should look like this:
The JavaScript policy configuration does not need to be changed.
In the Navigator pane, click Resources > jsc > addAddress.js.
The code pane contains the addAddress.js Javascript code. It is currently empty.
To combine the responses, use this Javascript code:
This code parses the JSON response payload into an object, adds an address field to the object, and converts the object back into a JSON string, storing it in the response.
try/catch is used so that an exception isn't thrown out of the JavaScript policy. A fault is raised if an exception isn't caught.
Click Save, and then click Save as New Revision.
Click Deploy.
To specify that you want the new revision deployed to the eval environment, click Deploy, and then click Confirm.
In this task, you verify that the API call returns the address in the response payload.
In the Cloud Shell SSH session, to get the store by ID, run the following command:
The response now should include the address:
If the address field is not in the response, use the debug tool to determine what is not working.
In this lab, you mashed up the responses from two calls into a single response, adding a feature to your API proxy without modifying the backend service.
When you have completed your lab, click End Lab. Google Cloud Skills Boost removes the resources you’ve used and cleans the account for you.
You will be given an opportunity to rate the lab experience. Select the applicable number of stars, type a comment, and then click Submit.
The number of stars indicates the following:
You can close the dialog box if you don't want to provide feedback.
For feedback, suggestions, or corrections, please use the Support tab.
Copyright 2022 Google LLC All rights reserved. Google and the Google logo are trademarks of Google LLC. All other company and product names may be trademarks of the respective companies with which they are associated.
현재 이 콘텐츠를 이용할 수 없습니다
이용할 수 있게 되면 이메일로 알려드리겠습니다.
감사합니다
이용할 수 있게 되면 이메일로 알려드리겠습니다.
한 번에 실습 1개만 가능
모든 기존 실습을 종료하고 이 실습을 시작할지 확인하세요.