API - Connect to Amazon Web Services
Establish a direct, layer 2 connection between your IBX colocated assets and your Amazon Web Services (AWS) resources.
Identify Your Amazon Account ID
Log in to AWS Management Console and locate your account number.
Refer to the AWS documentation for instructions on how to find your account number.
Fabric API Prerequisites
-
Authenticate - Submit your user credentials, Client ID, and Client Secret for OAuth2 authentication. Refer to API Authentication for instructions on how to call OAuth API to validate and authenticate your credentials.
-
Determine Your A-side Information. Either:
- Retrieve your Equinix Fabric ports information using the Get All Ports API request.
OR
- Determine your Network Edge device information. You need a provisioned Equinix Virtual Device/Redundant Devices/Cluster with a registered license. Check your available virtual devices and clusters by calling Get Virtual Devices or Get Virtual Device {uuid}. You may choose any available interface on the device for your connection. However, Equinix will select an interface if you do not specify one.
-
Choose the Z-side metro location. Use the Get All Metros API request to find all metros where Equinix Fabric is available and determine destination location.
-
Identify the service profile. Use the Retrieve Service Profiles API request to search for a specific service profile or use the Get Service Profiles API request to list all available service profiles, and identify the profile you want to connect to.
-
Validate your Authorization Key. Use the Validate Connection Authorization Key API request to verify that your AWS Account ID can be used to create a connection to the selected service profile in the given metro.
Connecting to AWS from a DOT1Q port
To create a connection from your DOT1Q port to AWS, send a POST
request to the /fabric/v4/connections
endpoint. Specify your connection's configuration details in the body of the request.
POST /fabric/v4/connections | |
---|---|
Method | POST |
Endpoint | /fabric/v4/connections |
Headers | Authorization , Content-Type |
Path Parameters | Not applicable |
Query Parameters | Not applicable |
Body Parameters | type , name , order , bandwidth , redundancy , aSide , zSide , notifications |
Sample cURL Request:
curl -X
POST 'https://api.equinix.com/fabric/v4/connections'
-H 'content-type: application/json'
-H 'authorization: Bearer <token>'
-d '{
"type": "EVPL_VC",
"name": "Conn-1",
"order": {
"purchaseOrderNumber": "1-129105284100"
},
"bandwidth": 1000,
"redundancy": {
"priority: "PRIMARY"
},
"aSide": {
"accessPoint": {
"type": "COLO",
"port": {
"uuid": "a867f685-41b0-1b07-6de0-320a5c00abdd"
},
"linkProtocol": {
"type": "DOT1Q",
"vlanTag": 1001
}
}
},
"zSide": {
"accessPoint": {
"type": "SP",
"profile": {
"uuid": "20d32a80-0d61-4333-bc03-707b591ae2f5"
},
"location": {
"metroCode": "SV"
},
"sellerRegion": "us-west-1",
"authenticationKey": "xx-xx-xx"
}
},
"notifications": [
{
"type": "ALL",
"emails": [
"test@equinix.com",
"test@equinix.com"
]
}
]
}'
The parameters included in the request body are specific to this example. For a full list of parameters and their descriptions, see the API Reference.
Sample Response:
{
"href": "https://api.equinix.com/fabric/v4/connections/3a58dd05-f46d-4b1d-a154-2e85c396ea62",
"type": "EVPL_VC",
"uuid": "3a58dd05-f46d-4b1d-a154-2e85c396ea62",
"name": "Conn-1",
"state": "PROVISIONING",
"order": {
"purchaseOrderNumber": "1-129105284100",
"billingTier": "Up to 1 Gbps"
},
"redundancy": {
"group": "b767f685-41b0-1b07-6de0-320a5c00abdd",
"priority": "SECONDARY"
},
"bandwidth": 1000,
"aSide": {
"accessPoint": {
"type": "COLO",
"port": {
"href": "https://api.equinix.com/fabric/v4/ports/a867f685-41b0-1b07-6de0-320a5c00abdd",
"type": "XF_PORT",
"uuid": "a867f685-41b0-1b07-6de0-320a5c00abdd"
},
"linkProtocol": {
"type": "DOT1Q",
"vlanTag": 1001
}
}
},
"zSide": {
"accessPoint": {
"type": "SP",
"profile": {
"href": "https://api.equinix.com/fabric/v4/services/serviceProfiles/20d32a80-0d61-4333-bc03-707b591ae2f5",
"type": "L2_PROFILE",
"uuid": "20d32a80-0d61-4333-bc03-707b591ae2f5"
},
"location": {
"href": "https://api.equinix.com/v4/metros/SV",
"metroCode": "SV",
"region": "AMER"
},
"sellerRegion": "us-west-1",
"authenticationKey": "xx-xx-xx"
}
},
"notifications": [
{
"type": "ALL",
"emails": [
"test@equinix.com",
"test2@equinix.com"
]
}
],
"operation": {
"equinixStatus": "PROVISIONING",
"providerStatus": "PROVISIONING"
},
"changeLog": {
"createdDateTime": "2021-07-15T19:30:29.526Z"
}
}
Response payload includes configuration parameters defined in the request body. For a full list of possible parameters and their descriptions, see the API Reference.
Connecting to AWS from a QINQ Port
To create a connection from your QINQ port to AWS, send a POST
request to the /fabric/v4/connections
endpoint. Specify your connection's configuration details in the body of the request.
POST /fabric/v4/connections | |
---|---|
Method | POST |
Endpoint | /fabric/v4/connections |
Headers | Authorization , Content-Type |
Path Parameters | Not applicable |
Query Parameters | Not applicable |
Body Parameters | type , name , order , bandwidth , redundancy , aSide , zSide , notifications |
Sample cURL Request:
curl -X
POST 'https://api.equinix.com/fabric/v4/connections'
-H 'content-type: application/json'
-H 'authorization: Bearer <token>'
-d '{
"type": "EVPL_VC",
"name": "Conn-1",
"order": {
"purchaseOrderNumber": "1-129105284100"
},
"bandwidth": 1000,
"redundancy": {
"priority: "PRIMARY"
},
"aSide": {
"accessPoint": {
"type": "COLO",
"port": {
"uuid": "a867f685-41b0-1b07-6de0-320a5c00abdd"
},
"linkProtocol": {
"type": "QINQ",
"vlanCTag": 1001,
"vlanSTag": 1002
}
}
},
"zSide": {
"accessPoint": {
"type": "SP",
"profile": {
"uuid": "20d32a80-0d61-4333-bc03-707b591ae2f5"
},
"location": {
"metroCode": "SV"
},
"sellerRegion": "us-west-1",
"authenticationKey": "xx-xx-xx"
}
},
"notifications": [
{
"type": "ALL",
"emails": [
"test@equinix.com",
"test@equinix.com"
]
}
]
}'
The parameters included in the request body are specific to this example. For a full list of parameters and their descriptions, see the API Reference.
Connecting to AWS from a Network Edge Device
To create a connection from your Network Edge device to AWS, send a POST
request to the /fabric/v4/connections
endpoint. Specify your connection's configuration details in the body of the request.
POST /fabric/v4/connections | |
---|---|
Method | POST |
Endpoint | /fabric/v4/connections |
Headers | Authorization , Content-Type |
Path Parameters | Not applicable |
Query Parameters | Not applicable |
Body Parameters | type , name , order , bandwidth , redundancy , aSide , zSide , notifications |
Sample cURL Request:
curl -X
POST 'https://api.equinix.com/fabric/v4/connections'
-H 'content-type: application/json'
-H 'authorization: Bearer <token>'
-d '
{
"type": "IP_VC",
"bandwidth": 200,
"project": {
"projectId": "188572000188973"
},
"aSide": {
"accessPoint": {
"type": "CLOUD_ROUTER",
"router": {
"uuid": "13fa98e8-8497-44d9-a45c-ce00d89b0a56"
}
}
},
"zSide": {
"accessPoint": {
"type": "VD",
"virtualDevice": {
"uuid": "f6b1f188-3af4-47d0-a46e-ef175973c233"
}
}
},
"name": "test-fcr-to-ne-device",
"order": {
"purchaseOrderNumber": ""
},
"notifications": [
{
"type": "ALL",
"emails": [
"x@equinix.com"
]
}
]
}
'
The parameters included in the request body are specific to this example. For a full list of parameters and their descriptions, see the API Reference.
Sample Response:
{
"type": "EVPL_VC",
"href": "https://api.equinix.com/fabric/v4/connections/f89bc4b5-324a-462f-9ea4-23cb670dec44",
"uuid": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"name": "test-aws-3-vd-api",
"operation": {
"providerStatus": "PROVISIONING",
"equinixStatus": "PROVISIONING"
},
"order": {
"billingTier": "Up to 50 MB"
},
"notifications": [
{
"type": "ALL",
"emails": [
"test@equinix.com",
"test@equinix.com"
]
}
],
"changeLog": {
"createdBy": "X@EQUINIX.COM",
"createdByFullName": "XXXXX XXXXXX",
"createdByEmail": "x@x.com",
"createdDateTime": "2024-04-22T20:49:46.840Z",
"updatedBy": "x@x.COM",
"updatedByFullName": "XXXXX XXXXX",
"updatedByEmail": "x@x.com",
"updatedDateTime": "2024-04-22T20:49:46.840Z"
},
"bandwidth": 50,
"redundancy": {
"group": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"priority": "PRIMARY"
},
"aSide": {
"accessPoint": {
"interface": {
"uuid": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"id": 7,
"type": "NETWORK"
},
"location": {
"metroCode": "AM"
},
"virtualDevice": {
"uuid": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"type": "EDGE"
}
}
},
"zSide": {
"accessPoint": {
"location": {
"metroCode": "DA"
},
"profile": {
"href": "https://api.equinix.com/fabric/v4/serviceProfiles/69ee618d-be52-468d-bc99-00566f2dd2b9",
"type": "L2_PROFILE",
"name": "AWS Direct Connect",
"uuid": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
},
"sellerRegion": "us-east-1",
"authenticationKey": "123456123456"
}
}
}
Response payload includes configuration parameters defined in the request body. For a full list of possible parameters and their descriptions, see the API Reference.
Monitoring the Connection Status
Send a GET
request to the fabric/v4/connections/{connectionId}
endpoint to monitor connection status.
equinixStatus attribute values | providerStatus attribute values | AWS Direct Connect State | Description |
---|---|---|---|
PROVISIONING | PROVISIONING | Connection request has not been sent to AWS yet. | |
PROVISIONED | PENDING_APPROVAL | Ordering -> Requested | The connection awaits for acceptance. |
PROVISIONED | PROVISIONING | Pending | Connection establishment in progress. |
PROVISIONED | PROVISIONED | Pending -> Available | The connection has been accepted. |
Accepting the Connection
You can either:
-
Log in to AWS Management Console to accept pending connections.
-
Log in to the Equinix Customer Portal to accept pending connections.
-
Send a
POST
request to the/fabric/v4/connections/{id}
endpoint. Pass the connection ID as a path parameter and theaccessKey
andsecretKey
in the body of your request.curl -X
POST 'https://api.equinix.com/fabric/v4/connections/c31199e6-e776-4017-9433-ad97a2c9848c'
-H 'content-type: application/json'
-H 'authorization: Bearer <token>'
-d '[
{
"op": "add",
"path": "/zSide",
"value": {
"additionalInfo": [
{
"key": "accessKey",
"value": "AKIA4TNUPZNEUHUXXXXXXX"
},
{
"key": "secretKey",
"value": "1EQ2rm137ldG3H8TFGQastXXXXXXXXXX"
}
]
}
}
]'