Skip to content
This repository was archived by the owner on Mar 23, 2026. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions localstack-core/localstack/services/apigateway/helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -984,20 +984,20 @@ def is_variable_path(path_part: str) -> bool:
return path_part.startswith("{") and path_part.endswith("}")


def get_domain_name_hash(domain_name: str) -> str:
def get_domain_name_hash(domain_name: str, region_name: str) -> str:
"""
Return a hash of the given domain name, which help construct regional domain names for APIs.
TODO: use this in the future to dispatch API Gateway API invocations made to the regional domain name
"""
return hashlib.shake_128(to_bytes(domain_name)).hexdigest(4)
return hashlib.shake_128(to_bytes(domain_name + region_name)).hexdigest(4)


def get_regional_domain_name(domain_name: str) -> str:
def get_regional_domain_name(domain_name: str, region_name: str) -> str:
"""
Return the regional domain name for the given domain name.
In real AWS, this would look something like: "d-oplm2qchq0.execute-api.us-east-1.amazonaws.com"
In LocalStack, we're returning this format: "d-<domain_hash>.execute-api.localhost.localstack.cloud"
"""
domain_name_hash = get_domain_name_hash(domain_name)
domain_name_hash = get_domain_name_hash(domain_name, region_name)
host = localstack_host().host
return f"d-{domain_name_hash}.execute-api.{host}"
Original file line number Diff line number Diff line change
Expand Up @@ -562,7 +562,7 @@ def create_domain_name(
domainName=domain_name,
certificateName=certificate_name,
certificateArn=certificate_arn,
regionalDomainName=get_regional_domain_name(domain_name),
regionalDomainName=get_regional_domain_name(domain_name, context.region),
domainNameStatus=DomainNameStatus.AVAILABLE,
regionalHostedZoneId=zone_id,
regionalCertificateName=regional_certificate_name,
Expand Down
Loading