Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django boto S3ResponseError:400错误请求_Django_Amazon Web Services_Amazon S3_Boto_Boto3 - Fatal编程技术网

Django boto S3ResponseError:400错误请求

Django boto S3ResponseError:400错误请求,django,amazon-web-services,amazon-s3,boto,boto3,Django,Amazon Web Services,Amazon S3,Boto,Boto3,我正在AWS上EC2的Ubuntu上部署Django应用程序 我完成了所有需要的工作,但连接到boto 在mysettings.py中 AWS_ACCESS_KEY = 'AWS_ACCESS_KEY' AWS_SECRET_ACCESS_KEY = 'AWS_SECRET_ACCESS_KEY' AWS_STORAGE_BUCKET_NAME = 'BUCKET-s3' AWS_QUERYSTRING_AUTH = False S3_URL = 'https://s3.ap-northeast

我正在AWS上EC2的Ubuntu上部署Django应用程序

我完成了所有需要的工作,但连接到boto

在my
settings.py中

AWS_ACCESS_KEY = 'AWS_ACCESS_KEY'
AWS_SECRET_ACCESS_KEY = 'AWS_SECRET_ACCESS_KEY'
AWS_STORAGE_BUCKET_NAME = 'BUCKET-s3'
AWS_QUERYSTRING_AUTH = False
S3_URL = 'https://s3.ap-northeast-2.amazonaws.com/%s' % AWS_STORAGE_BUCKET_NAME

DEFAULT_FILE_STORAGE = 'PROJECT.s3utils.MediaS3BotoStorage'
STATICFILES_STORAGE = 'PROJECT.s3utils.StaticRootS3BotoStorage'
MEDIA_URL = S3_URL + '/media/'
STATIC_URL = S3_URL + '/static/'

MEDIA_ROOT = MEDIA_URL
STATIC_ROOT = STATIC_URL
'PROJECT.s3utils.py'如下所示:

from storages.backends.s3boto import S3BotoStorage
StaticRootS3BotoStorage = lambda: S3BotoStorage(location='static') # s3 directory name
class MediaS3BotoStorage(S3BotoStorage):
    location = 'media'
[Credentials]
aws_access_key_id = aws_access_key_id
aws_secret_access_key = aws_secret_access_key
[s3]
host=s3.ap-northeast-2.amazonaws.com
aws_access_key_id = aws_access_key_id
aws_secret_access_key = aws_secret_access_key
最后,我需要设置连接boto的配置文件

如果没有任何内容,当我命令“python manage.py collectstatic”时,错误显示以下消息:

boto.exception.NoAuthHandlerFound:未准备好处理程序 证明…是真实的检查了1个处理器。['HmacAuthV1Handler']检查 你的证件

因此,我确实在
'~/.boto'
添加了配置文件,如下所示:

[Credentials]
AWS_ACCESS_KEY_ID=AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY=AWS_SECRET_ACCESS_KEY
在创建配置文件~/.boto之后,我执行了命令“python manage.py collectstatic”

我有一个错误:

boto.exception.S3ResponseError:S3ResponseError:400错误请求

我所做的是遵循boto文档:

我现在缺什么了吗

~/.boto

from storages.backends.s3boto import S3BotoStorage
StaticRootS3BotoStorage = lambda: S3BotoStorage(location='static') # s3 directory name
class MediaS3BotoStorage(S3BotoStorage):
    location = 'media'
[Credentials]
aws_access_key_id = aws_access_key_id
aws_secret_access_key = aws_secret_access_key
[s3]
host=s3.ap-northeast-2.amazonaws.com
aws_access_key_id = aws_access_key_id
aws_secret_access_key = aws_secret_access_key
它正在使用上面的
~/.boto文件

~/.boto

from storages.backends.s3boto import S3BotoStorage
StaticRootS3BotoStorage = lambda: S3BotoStorage(location='static') # s3 directory name
class MediaS3BotoStorage(S3BotoStorage):
    location = 'media'
[Credentials]
aws_access_key_id = aws_access_key_id
aws_secret_access_key = aws_secret_access_key
[s3]
host=s3.ap-northeast-2.amazonaws.com
aws_access_key_id = aws_access_key_id
aws_secret_access_key = aws_secret_access_key
conn = boto.connect_s3(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, host=REGION_HOST)
它正在使用上面的
~/.boto文件

conn = boto.connect_s3(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, host=REGION_HOST)
必填字段-主机(s3端点)

必填字段-主机(s3端点)

请使用此链接解释此代码的工作原理,不要只给出代码,因为解释更有可能帮助未来的读者。另请参阅。请使用该链接解释此代码的工作原理,不要只给出代码,因为解释更有可能帮助未来的读者。另见。