Skip to main content

Simple Authorizer for Amazon API Gateway

This is a simple Lambda authorizer for Amazon API Gateway, designed to protect an HTTP API, placed behind a CloudFront distribution, from direct access. The authorizer checks a secret value from an environment variable against a value received in an HTTP header from the client (CloudFront). If the values match, access is granted.

This authorizer is lightweight and requires minimal resources, making it highly cost-effective for simple use cases. It doesn't use AWS Secrets Manager, make external network calls, or support key rotation, keeping the implementation straightforward.

Installation

To install the package, run:

pip install amazon-api-gateway-simple-authorizer

Usage

The Lambda function authorizer can be used to protect API Gateway endpoints by verifying a custom header passed by CloudFront. It compares the header value with a secret API key stored as an environment variable.

Environment Variables

  • API_KEY: The secret API key expected from the client (CloudFront).
  • API_KEY_HEADER_NAME: (Optional) The name of the header that contains the API key. If not set, the default header name "x-origin-verify" will be used.

Lambda Handler

The Lambda function handler is located at:

simple_authorizer.authorizer.handler

Example Event

Here's a sample event that can be passed to the Lambda authorizer:

{
    "headers": {
        "x-origin-verify": "your-secret-api-key"
    }
}

If the secret in the x-origin-verify header matches the value stored in the API_KEY environment variable, the request is authorized.

Example Usage

To deploy the Lambda authorizer, follow these steps:

  1. Set up Lambda environment variables:

    • API_KEY: Your secret key, e.g., "your-secret-api-key".
    • API_KEY_HEADER_NAME: (Optional) If you want to use a custom header name, e.g., "x-api-key". If not set, the default is "x-origin-verify".
  2. Deploy your Lambda function using the AWS Management Console or AWS CLI and ensure the handler is set to simple_authorizer.authorizer.handler.

  3. Configure API Gateway:

    • In your API Gateway, set up a custom authorizer and select the Lambda function as the authorizer.
    • Use the matching header (default: "x-origin-verify", or your custom value set by API_KEY_HEADER_NAME) in your CloudFront configuration to pass the API key.

Performance and Cost Recommendations

  • Memory: Allocate 128MB of memory to the Lambda function for optimal cost efficiency.
  • Timeout: Set the timeout to 3 seconds, as the function is lightweight and doesn't require more time even with the cold start.
  • Caching: Cache the authorization result for the maximum allowed time (1 hour) for both performance and cost savings.

Limitations

  • This solution does not support key rotation.
  • It does not integrate with AWS Secrets Manager or any external key storage service.
  • It requires manual updates for key changes.

License

This project is licensed under the MIT License. See the LICENSE file for details.

Disclaimer

This software product is not affiliated with, endorsed by, or sponsored by Amazon Web Services (AWS) or Amazon.com, Inc. The use of the term "AWS" is solely for descriptive purposes to indicate that the software is compatible with AWS services. Amazon Web Services and AWS are trademarks of Amazon.com, Inc. or its affiliates.

Metadata

Release files for amazon-api-gateway-simple-authorizer 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for amazon-api-gateway-simple-authorizer 0.1.0
File Size Uploaded
amazon-api-gateway-simple-authorizer-0.1.0.tar.gz 6.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for amazon-api-gateway-simple-authorizer 0.1.0
File Interpreter ABI Platform
amazon_api_gateway_simple_authorizer-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 11.6 kB

Release files / amazon-api-gateway-simple-authorizer-0.1.0.tar.gz

Download URL amazon-api-gateway-simple-authorizer-0.1.0.tar.gz
Size 6.3 kB
Tags Source
SHA-256 checksum
How to use checksums
ed53dde3b5c872633002fd3825ad48137b3bdc47d4aa443d0653e4a5b4a3eeee
BLAKE2b-256 checksum
How to use checksums
214fbb1af4e9e38270991700c516c3d4b4834ed73116cbc4810ad2279ac7319f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.12.1

Release files / amazon_api_gateway_simple_authorizer-0.1.0-py3-none-any.whl

Download URL amazon_api_gateway_simple_authorizer-0.1.0-py3-none-any.whl
Size 5.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a41271e9b195fa8df70a2cb32e20ba0a2f170e7fa9d5490ff8452d8f18ff6249
BLAKE2b-256 checksum
How to use checksums
d2033212515ef9dd2d2c1f19db1f5f3733f6f14fc6a98a5752ce58f4dd6f4403
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.12.1

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page