Python 3 boto3将文件加载到S3 AWS

时间:2017-09-16 20:17:24

标签: python amazon-web-services amazon-s3 aws-lambda

我需要部署一个lambda函数来加载S3中的文件,与此同时我只是在我的本地环境中工作,这是我的代码:

import boto3
from botocore.client import Config

ACCESS_KEY_ID = 'xxxx'
ACCESS_SECRET_KEY = 'xxxxx'
BUCKET_NAME = 'biximontreal'

s3 = boto3.resource(
    's3',
    aws_access_key_id=ACCESS_KEY_ID,
    aws_secret_access_key=ACCESS_SECRET_KEY,
    config=Config(signature_version='s3v4')
)


for bucket in s3.buckets.all():
    print(bucket.name)

FILE_NAME = 'Bixi_9_16_14-38.json'
s3_client = boto3.client('s3')
s3_client.upload_file(FILE_NAME, BUCKET_NAME, FILE_NAME)

在我的代码结束时,所有内容似乎都无缝地执行,但是当我转到我的S3存储桶时,文件就没有数据了:

enter image description here

我本地存储库中的文件不是空的:

enter image description here

你能帮助我理解为什么它没有加载数据文件并帮助我解决这个问题吗?

非常感谢

1 个答案:

答案 0 :(得分:0)

最后,我发现我的问题是我没有将正文数据作为参数发送到我的查询中以加载带有信息的文件。

x = 'x'
x = 'x'
BUCKET_NAME = 'x'

s3 = boto3.resource(
    's3',
    aws_access_key_id=x,
    aws_secret_access_key=x,
    config=Config(signature_version='s3v4')
)


filename = 'Bixi_%s_%s_%s-%s.json' % (month, day, hour, mins)
datafile = open('/tmp/Bixi_%s_%s_%s-%s.json' % (month, day, hour, mins),'rb')

s3.Bucket(BUCKET_NAME).put_object(Key=filename, Body=datafile)

谢谢大家。