Connecting Your Application to a Platform Service Instance
To establish communication between the service instance that you have created and your application, you bind your application to the service instance.
Before you begin
Deploy your application to Cloud Foundry.
About this task
When you bind your application to your service instance, Cloud Foundry provisions the service's connection details in the VCAP_SERVICES environment variable. Cloud Foundry runtime uses the VCAP_SERVICES environment variable to communicate with a deployed application about its environment.
You can retrieve the following instance details from VCAP_SERVICES environment variable:
- An
instance_uri
for your service instance. - A
instance_GUID
is thezoneID
for your service instance. - HTTP header information to access your service instance. It includes:
http-header-name
asPredix-Zone-Id
http-header-value
- An
oauth-scope
for your instance. The end-user token requires the scope to access the specific service instance.
If you bind to a UAA service instance, you get the following information in addition to instance_uri
and instance_GUID
:
-
A
uaa_instance_issuerId
for your instance. TheissuerID
is required when you create an instance of another service that uses your UAA instance for authentication.
Procedure
- Use the Cloud Foundry CLI to log into Cloud Foundry.
cf login -a <API_Endpoint>
Note: If you are a GE employee, you must use thecf login --sso
command to log into Cloud Foundry. After you enter your SSO, you will receive a one-time passcode URL. Copy this URL and paste it in a browser to retrieve your one-time passcode. Use this code with thecf
command to complete the CF login process.The value of
<API_Endpoint>
is available in the Predix welcome email that you receive when you register for a Predix.io user account. Depending on your Predix.io registration, the<API_Endpoint>
value is one of the following:- Predix US-West
https://api.system.aws-usw02-pr.ice.predix.io
- Predix Europe
https://api.system.aws-eu-central-1-pr.ice.predix.io
For example,
cf login -a https://api.system.aws-usw02-pr.ice.predix.io
The command produces the following output:Email> <your_predix_login> Password> <your_predix_password> Authenticating...OK Targeted org <your_predix_org> Targeted space dev API endpoint: https://api.system.aws-usw02-pr.ice.predix.io (API version: <version>) User: <your_predix_login> Org: <your_predix_org> Space: dev
- Predix US-West
- Bind your application to the service instance by entering the following command:
cf bind-service <your_app_name> <service_instance_name>
Your application is bound to the<service_instance_name>
instance, and the following message is returned:Binding service <service_instance_name> to app <your_app_name> in org predix-platform / space predix as [email protected]... OK TIP: Use 'cf restage' to ensure your env variable changes take effect
- Verify the binding by entering the following command:
cf env <your_app_name>
Example
If you bind an application, myApp, to a UAA instance, the following messages are returned:
Getting env variables for app myApp in org predix-platform / space security as [email protected]...
OK
...
],
"predix-uaa": [
{
"credentials":
{
"issuerId":
"https://ff27c315-d027-4d1d-a30c-64f49b369ed9.predix-uaa.run.aws-usw02-pr.ice.predix.io/oauth/token",
"uri":
"https://ff27c315-d027-4d1d-a30c-64f49b369ed9.predix-uaa.run.aws-usw02-pr.ice.predix.io",
"zone": {
"http-header-name": "X-Identity-Zone-Id",
"http-header-value": "ff27c315-d027-4d1d-a30c-64f49b369ed9"
}
},
"label":
"predix-uaa",
"name":
"my_uaa_instance",
"plan":
"free",
"tags":
[]
}
],
In this example, the following values are displayed:
uaa_instance_issuerId
=https://ff27c315-d027-4d1d-a30c-64f49b369ed9.predix-uaa.run.aws-usw02-pr.ice.predix.io/oauth/token
uaa_instance_uri
=https://ff27c315-d027-4d1d-a30c-64f49b369ed9.predix-uaa.run.aws-usw02-pr.ice.predix.io
uaa_instance_GUID
=ff27c315-d027-4d1d-a30c-64f49b369ed9
If you bind an application, myApp, to the ACS service instance, the following messages are returned:
Getting env variables for app myApp in org predix-platform / space security as [email protected]...
OK
...
],
"predix-acs": [
{
"credentials": {
"uri": "https://predix-acs.run.aws-usw02-pr.ice.predix.io",
"zone": {
"http-header-name": "Predix-Zone-Id",
"http-header-value": "9615a95a-9275-4a82-926d-89f06cbe04e1",
"oauth-scope": "predix-acs.zones.9615a95a-9275-4a82-926d-89f06cbe04e1.user"
}
},
"label": "predix-acs",
"name": "acs-sample-instance",
"plan": "Tiered",
"provider": null,
"syslog_drain_url": null,
"tags": []
}
],
In this example, the following values are displayed:
acs_instance_uri
=https://predix-acs.run.aws-usw02-pr.ice.predix.io
acs_instance_GUID
=9615a95a-9275-4a82-926d-89f06cbe04e1
http-header-name
=Predix-Zone-Id
http-header-value
=9615a95a-9275-4a82-926d-89f06cbe04e1
oauth-scope
=predix-acs.zones.9615a95a-9275-4a82-926d-89f06cbe04e1.user