This Terraform module deploys customizable and reusable Lambda@Edge functions that provide middleware for AWS CloudFront.
auth-at-edge
: Also known ascognito-at-edge
, this feature provides authentication and authorization to restrict access to a site hosted on CloudFront. Users can optionally customize the authorization rules via an Open Policy Agent (OPA) policy.url-rewriter
: This feature rewrites the URLs of requests. Users can define URL rewrite rules via an Open Policy Agent (OPA) policy.
module "cloudfront_middleware_at_edge" {
source = "cruxstack/cloudfront-middleware-at-edge/aws"
version = "x.x.x"
auth_service_config = {
enabled = true
cognito_idp_arn = "arn:aws:cognito-idp:us-east-1:123456789012:userpool/us-east-1_TESTPOOL"
cognito_idp_domain = "test.auth.us-east-1.amazoncognito.com"
cognito_idp_client_id = "your-client-id"
cognito_idp_client_secret = "your-client-secret"
cognito_idp_client_scopes = ["openid", "email", "profile"]
cognito_idp_jwks = {
keys = [
{ "alg": "RS256", "e": "AQAB", "kid": "...", "kty": "RSA", "n": "...", "use": "sig" },
{ "alg": "RS256", "e": "AQAB", "kid": "...", "kty": "RSA", "n": "...", "use": "sig" },
]
}
}
urlrewrite_service_config = {
enabled = true
policy_content = <<-EOF
package urlrewriter
result := []
EOF
}
}
In addition to the variables documented below, this module includes several
other optional variables (e.g., name
, tags
, etc.) provided by the
cloudposse/label/null
module. Please refer to its documentation
for more details on these variables.
Name | Description | Type | Default | Required |
---|---|---|---|---|
auth_service_config | Configuration details for the authentication service. More details below. | object | {} |
no |
urlrewrite_service_config | Configuration details for the URL rewrite service, More details below. | object | {} |
no |
aws_account_id | The AWS account ID that the module will be deployed in | string | "" |
no |
aws_region_name | The AWS region name where the module will be deployed | string | "" |
no |
Property | Description | Type | Default | Required |
---|---|---|---|---|
enabled | Enable the authentication service | bool | true |
no |
log_level | Logging level | string | "info" |
no |
aws_region | AWS region for the service | string | null |
no |
cognito_idp_arn | ARN of the Cognito Identity Provider | string | n/a | yes |
cognito_idp_domain | Domain of the Cognito Identity Provider | string | n/a | yes |
cognito_idp_jwks | JWKS of the Cognito Identity Provider | object({ keys = list(map(string)) }) | n/a | yes |
cognito_idp_client_id | Client ID of the Cognito Identity Provider | string | n/a | yes |
cognito_idp_client_secret | Client secret of the Cognito Identity Provider | string | n/a | yes |
cognito_idp_client_scopes | Client scopes of the Cognito Identity Provider | list(string) | n/a | yes |
opa_policy_content | Content of the OPA policy | string | null |
no |
opa_policy_data | Data for the OPA policy | map(string) | {} |
no |
Property | Description | Type | Default | Required |
---|---|---|---|---|
enabled | Enable the URL rewrite service | bool | false |
no |
log_level | Logging level | string | "info" |
no |
aws_region | AWS region for the service | string | null |
no |
policy_content | Content of the URL rewrite policy | string | "package urlrewriter\nresult := []" |
no |
Name | Description |
---|---|
auth_services | Details of the created AWS Lambda functions for each of the auth services |
auth_routes | Route configurations for the auth services |
urlrewrite_services | Details of the created AWS Lambda function for the URL rewrite service |
We welcome contributions to this project. For information on setting up a development environment and how to make a contribution, see CONTRIBUTING documentation.