Invoking Amazon API Gateway with an API Key
Contents
To invoke an Amazon API Gateway with an API Key we need to pass in the API key in a x-api-key
header.
For the following examples, assume the invoke URL is https://12abcde45.execute-api.us-west-1.amazonaws.com/prod/create
and the API key is abc123
.
Invoking with curl
To invoke this API with curl
it would look like this:
# GET request
curl --header "x-api-key: abc123" https://12abcde45.execute-api.us-west-1.amazonaws.com/prod/create
# POST request with data
curl -d "key1=value1&key2=value2" --header "x-api-key: abc123" -X POST https://12abcde45.execute-api.us-west-1.amazonaws.com/prod/create
Invoking with HTTPie
To invoke the API with HTTPie:
# GET request
http https://12abcde45.execute-api.us-west-1.amazonaws.com/prod/create x-api-key:abc123
# POST request with data
http post https://12abcde45.execute-api.us-west-1.amazonaws.com/prod/create key1=value1 x-api-key:abc123
Invoking with Python
GET
request:
import requests
url = "https://12abcde45.execute-api.us-west-1.amazonaws.com/prod/create"
# API key specified as a header
# Key hardcoded for demonstrational purposes. Do not push/commit plaintext keys!
headers = {"x-api-key": "abc123"}
# GET request with custom header
response = requests.get(url, headers=headers)
print(response.status_code)
POST
request with data:
import requests
url = "https://12abcde45.execute-api.us-west-1.amazonaws.com/prod/create"
# API key specified as a header
# Key hardcoded for demonstrational purposes. Do not push/commit plaintext keys!
headers = {"x-api-key": "abc123"}
# Data to be sent
data = {"key1": "value1"}
# POST request with custom header and data
response = requests.post(url, json=data, headers=headers)
print(response.status_code)