3 Antworten
- Neueste
- Die meisten Stimmen
- Die meisten Kommentare
0
If you use origin access control for authorization of the access to the origin bucket, you may solve the issue by changing the authorization method to origin access identity. Of course, you should modify bucket policy for all other buckets that you use in your Lambda@Edge.
beantwortet vor 9 Monaten
0
Region in response is wrong. I updated lambda code and works for me.
Try this:
us_bucket = "cdn-origin-bucket-us-east-1-XXXX.s3.us-east-1.amazonaws.com"
eu_bucket = "cdn-origin-bucket-eu-west-1-XXXX.s3.eu-west-1.amazonaws.com"
# ap_bucket = "mybucket-ap.amazonaws.com"
default_bucket = "cdn-origin-bucket-us-east-1-XXXX.s3.us-east-1.amazonaws.com"
# Regions Mapping
regions_mapping = {
# NA
"us-east-1": us_bucket,
"us-east-2": us_bucket,
"us-west-1": us_bucket,
"us-west-2": us_bucket,
"ca-central-1": us_bucket,
# EU
"eu-central-1": eu_bucket,
"eu-central-1": eu_bucket,
"eu-west-1": eu_bucket,
"eu-west-2": eu_bucket,
"eu-west-3": eu_bucket,
"eu-north-1": eu_bucket,
}
def lambda_handler(event, context):
request = event['Records'][0]['cf']['request']
# Identify edge region
lambda_region = context.invoked_function_arn.split(':')[3]
# Get S3 bucket based on regions mapping
domain_name = regions_mapping.get(lambda_region, default_bucket)
bucket_region = domain_name.split('.')[2]
# Update origin request object
request['origin']['s3']['domainName'] = domain_name
request['origin']['s3']['region'] = bucket_region
request['headers']['host'] = [{'key': 'host', 'value': domain_name}]
return request
beantwortet vor 8 Monaten
-1
Try using this code to get the region more effectively:
import os
def lambda_handler(event, context):
runtime_region = os.environ['AWS_REGION']
beantwortet vor einem Jahr
Relevanter Inhalt
- AWS OFFICIALAktualisiert vor 3 Jahren
- AWS OFFICIALAktualisiert vor 2 Jahren
- AWS OFFICIALAktualisiert vor 2 Jahren
I'm afraid this doesn't adress the issue, but thanks for the input