我有这个代码使用boto2,我需要移植到boto3,坦率地说,我在boto3文档中有点遗失:
connection = boto.connect_s3(host=hostname,
aws_access_key_id=access_key,
aws_secret_access_key=secret_key,
is_secure=False,
calling_format=boto.s3.connection.OrdinaryCallingFormat())
s3_bucket = connection.get_bucket(bucket_name)
我还需要与其他不是S3的对象商店一起工作。
答案 0 :(得分:1)
import boto3
s3 = boto3.client('s3', aws_access_key_id=access_key,
aws_secret_access_key=secret_key,
endpoint_url=hostname, use_ssl=False)
response = s3.get_bucket(Bucket=bucket_name)
答案 1 :(得分:0)
boto3和boto不兼容。大多数命名都不向后兼容。
您必须阅读boto3文档才能重新创建脚本。好消息是,Boto3文档比boto更好,虽然不是很棒(很多棘手的参数示例没有提供)。
如果你有一些使用旧功能的应用程序,你应该为它创建一个包装器代码,以使切换透明。
因此,您通过包装器实例化任何对象存储连接,然后实例化各种存储桶以使用不同的连接器。这是一些想法。
#AWS
# object_wrapper is a your bucket wrapper that All the application willc all
from object_wrapper import object_bucket
from boto3lib.s3 import s3_connector
connector = s3_connector()
bucket = object_bucket(BucketName="xyz", Connector=connector)
# say you use boto2 to connect to Google object store
from object_wrapper import object_bucket
from boto2lib.s3 import s3_connector
connector = s3_connector()
bucket = object_bucket(BucketName="xyz", Connector=connector)
# say for Azure
from object_wrapper import object_bucket
from azure.storage.blob import BlockBlobService
connector = BlockBlobService(......)
bucket = object_bucket(BucketName="xyz", Connector=connector)