我正在嘗試使用本機 boto3 將物件從 Minio 存盤桶復制到 aws s3 存盤桶。我已經看到協議完全相同,但桶端點的問題。我知道通過 mc 客戶端可以實作,但我想使用原生 boto3 客戶端。我已將源存盤桶和目標存盤桶都設定為公共存盤桶,但仍然無法完成。這是一個示例代碼
import boto3
SESSION_s3 = boto3.session.Session(region_name="MY_REGION")
s3 = SESSION_s3.resource('s3', aws_access_key_id='MY_ACCESS_KEY',aws_secret_access_key='MY_SECRET_KEY').meta.client
SESSION_minio = boto3.session.Session(region_name="MY_REGION")
config=boto3.session.Config(signature_version='s3v4')
minio = SESSION_minio.resource('s3', endpoint_url='http://my_minio_public_server:9000',
aws_access_key_id='username',
aws_secret_access_key='password', config=config
).meta.client
src = {"Bucket": "minio_bucket", "Key": "example.jpg"}
s3.copy(src, "s3_bucket_name", "example.jpg", SourceClient=minio)
導致以下錯誤
botocore.exceptions.ClientError: An error occurred (AccessDenied) when calling the CopyObject operation: Access Denied
有沒有辦法在兩個客戶端之間建立這種連接?或者有什么更好的主意嗎?注意到 minio 客戶端不是我的選擇。
uj5u.com熱心網友回復:
該copy()命令告訴 Amazon S3在 Amazon S3 生態系統中復制物件。它可用于在同一存盤桶內或存盤桶之間復制物件,即使這些存盤桶位于不同的區域。
但是,minio 存在于 Amazon S3 的“外部”。它不知道如何與 Amazon S3 對話,S3 也不知道如何與 minio 對話。他們使用自己的一組其他系統也無法識別的憑據。兩個系統之間沒有互動。
底線:您需要從一個系統下載檔案并將它們上傳到另一個系統。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/371299.html
