Python 从heroku网站上传文件到Amazon s3 bucket时出现问题

Python 从heroku网站上传文件到Amazon s3 bucket时出现问题,python,django,heroku,amazon-s3,Python,Django,Heroku,Amazon S3,我正在把我的Django网站迁移到Heroku。但我不知道如何将Heroku与Amazon s3存储桶一起使用。以前我习惯于在项目中保存所有上传的文件,但我不能使用Heroku 我一直在关注Heroku的文档:和 该桶位于法兰克福 上载文件时,我遇到以下错误: <Error> <Code>InvalidArgument</Code> <Message>a non-empty Access Key (AKID) must be pro

我正在把我的Django网站迁移到Heroku。但我不知道如何将Heroku与Amazon s3存储桶一起使用。以前我习惯于在项目中保存所有上传的文件,但我不能使用Heroku

我一直在关注Heroku的文档:和 该桶位于法兰克福

上载文件时,我遇到以下错误:

<Error>
    <Code>InvalidArgument</Code>
    <Message>a non-empty Access Key (AKID) must be provided in the credential.</Message>
    <ArgumentName>X-Amz-Credential</ArgumentName>
    <ArgumentValue>/20180502/eu-central-1/s3/aws4_request</ArgumentValue>
    …
</Error>
我在Heroku中指定了如下密钥:“Heroku配置:set AWS\u ACCESS\u KEY\u ID=xxx AWS\u SECRET\u ACCESS\u KEY=yyy”

您可以转到并尝试上载图像

来自views.py

def sign_s3(request):
        S3_BUCKET = os.environ.get('S3_BUCKET')
        print(S3_BUCKET)

        file_name = request.GET.get('file_name')
        file_type = request.GET.get('file_type')

        s3 = boto3.client('s3', region_name='eu-central-1')

        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 HttpResponse(json.dumps({
        'data': presigned_post,
        'url': 'https://%s.s3.amazonaws.com/%s' % (S3_BUCKET, file_name)
    }))

您知道如何解决此问题吗?

在创建客户端对象时,似乎我必须添加“aws\u访问\u密钥\u id”和“aws\u机密\u访问\u密钥”

s3 = boto3.client(
        's3',
        region_name='eu-central-1',
        aws_access_key_id='KEY',
        aws_secret_access_key='KEY',
    )