python - Boto - 将文件上传到 Amazon S3 上的特定位置

标签 python amazon-web-services amazon-s3 boto

这是我正在使用的代码

import sys
import boto
import boto.s3

# AWS ACCESS DETAILS
AWS_ACCESS_KEY_ID = ''
AWS_SECRET_ACCESS_KEY = ''

bucket_name = AWS_ACCESS_KEY_ID.lower() + '-mah-bucket' conn = boto.connect_s3(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY)
bucket = conn.create_bucket(bucket_name, location=boto.s3.connection.Location.DEFAULT)
uploadfile = sys.argv[1]

print 'Uploading %s to Amazon S3 bucket %s' % \
       (uploadfile, bucket_name)

def percent_cb(complete, total):
    sys.stdout.write('.')
    sys.stdout.flush()

from boto.s3.key import Key
k = Key(bucket)
k.key = 'my test file'
k.set_contents_from_filename(testfile, cb=percent_cb, num_cb=10)

在我的 S3 上,我创建了“目录”,例如“bucket/images/holiday”。我知道这些只是虚拟目录。

我的问题是,我如何才能将此上传专门修改为 S3 上的 bucket/images/holiday 虚拟目录而不是存储桶根目录?

最佳答案

您所要做的就是在上传之前将虚拟目录路径添加到 key 名称。例如:

key_name = 'my test file'
path = 'images/holiday'
full_key_name = os.path.join(path, key_name)
k = bucket.new_key(full_key_name)
k.set_contents_from_filename(...)

您可能需要对您的应用程序进行一些更改,但希望这可以为您提供基本思路。

关于python - Boto - 将文件上传到 Amazon S3 上的特定位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14317243/

相关文章:

java - 如何等待查看我的 InputStream 是否已收到所有数据以进行进一步处理?

python - 您如何使用 boto3(或其他方式)在 emr 上自动化 pyspark 作业?

python - 如何在 Python 中自动创建字典

php - 让 Supervisord 定期重启子进程

amazon-web-services - Amazon S3 安全存储桶

amazon-web-services - 当 AWS Elasticsearch 域仅由 Lambda 函数使用时,我是否应该将其放入 VPC 中

amazon-web-services - AWS Cli 与非 DNS 兼容存储桶同步

python - 如何从不是 django 项目文件夹的文件夹运行 gunicorn

python - 如何将参数传递给 after_request?

python - 使用 Python Lambda 处理 AWS Step Function 中的意外错误的最佳实践是什么?