Cross-region copy fails for Linode Object Storage

224 Views Asked by At

We're using boto3 with Linode Object Storage, which is compatible with AWS S3 according to their documentation. Everything seems to work well, except cross-region copy operation. When I download an object from source region/bucket and then upload it to destination region/bucket, everything works well. Although, I'd like to avoid that unnecessary upload/download step.

I have the bucket named test-bucket on both regions. And I'd like to copy the object named test-object from us-east-1 to us-southeast-1 cluster.

Here is the example code I'm using:

from boto3 import client
from boto3.session import Session

sess = Session(
    aws_access_key_id='***',
    aws_secret_access_key='***'
)

s3_client_src = sess.client(
    service_name='s3',  
    region_name='us-east-1',
    endpoint_url='https://us-east-1.linodeobjects.com'
)
# test-bucket and test-object are already exists.

s3_client_trg = sess.client(
    service_name='s3',
    region_name='us-southeast-1',
    endpoint_url='https://us-southeast-1.linodeobjects.com'
)

copy_source = {
    'Bucket': 'test-bucket',
    'Key': 'test-object'
}
s3_client_trg.copy(CopySource=copy_source, Bucket='test-bucket', Key='test-object', SourceClient=s3_client_src)

When I call:

s3_client_src.list_objects(Bucket='test-bucket')['Contents']

It shows me that the test-object exists, But when I run copy, then it throws following message:

An error occurred (NoSuchKey) when calling the CopyObject operation: Unknown

Any help is appreciated!

0

There are 0 best solutions below