Accessing buckets in S3 Express One Zone (aka directory buckets) from AWS Lamba function is not working. My Lambda function is based on the example from the documentation:
import boto3
import json
def get_object(s3_client, bucket_name, key_name):
try:
response = s3_client.get_object(Bucket=bucket_name, Key=key_name)
body = response['Body'].read()
print(f"Got object '{key_name}' from bucket '{bucket_name}'.")
return body
except Exception as e:
print(str(e))
raise
def lambda_handler(event, context):
s3_client = boto3.client('s3')
resp = get_object(s3_client, 'mybucket--use1-az4--x-s3', 'myobject')
return {'statusCode': 200}
I get an exception at calling get_object
:
An error occurred (NoSuchBucket) when calling the GetObject operation: The specified bucket does not exist.
If I use the name of a regular (non-directory) bucket, it works.
The issue has been corroborated at SO.
I created a new Lambda function with the latest Python environment and used
boto3
bundled with it... I searched to find out which version ofboto3
is required, but did not find anything...The current version is 1.27.1. I will try to make a layer with the latest version.