Ich bin in der Heroku Dokumentation (https://devcenter.heroku.com/articles/s3-upload-python) über einen direkten Upload zu S3 mit einer vor-signierten Anfrage von Heroku.vor-signierte Anfrage von Heroku erhalten
Für den folgenden Code wird von Ihnen erwartet, dass Sie die Datei an Heroku senden, um die vor-signierte Anfrage zu erhalten, oder können Sie einfach die Dateiinformationen (Name, Typ usw.) senden?
@app.route('/sign_s3/')
def sign_s3():
S3_BUCKET = os.environ.get('S3_BUCKET')
file_name = request.args.get('file_name')
file_type = request.args.get('file_type')
s3 = boto3.client('s3')
presigned_post = s3.generate_presigned_post(
Bucket = S3_BUCKET,
Key = file_name,
Fields = {"acl": "public-read", "Content-Type": file_type},
Conditions = [
{"acl": "public-read"},
{"Content-Type": file_type}
],
ExpiresIn = 3600
)
return json.dumps({
'data': presigned_post,
'url': 'https://%s.s3.amazonaws.com/%s' % (S3_BUCKET, file_name)
})