【问题标题】:AWS S3ResponseError 400AWS S3ResponseError 400
【发布时间】:2017-01-03 16:15:31
【问题描述】:

我正在尝试将我的 Django 应用程序设置为 AWS。

我的 EC2 配置是 Ubuntu 14.04 、 Apache2 、 Django 1.8 和 Python 3.4。

所以我尝试按照本教程将静态文件移动到 S3:https://www.caktusgroup.com/blog/2014/11/10/Using-Amazon-S3-to-store-your-Django-sites-static-and-media-files/

按照教程,我终于在我的项目中运行'python manage.py collectstatic'并得到一个错误:

boto.exception.S3ResponseError: S3ResponseError: 400 Bad Request

我的 S3 存储桶策略如下:

{
"Version": "2008-10-17",
"Statement": [
    {
        "Sid": "PublicReadForGetBucketObjects",
        "Effect": "Allow",
        "Principal": {
            "AWS": "*"
        },
        "Action": "s3:GetObject",
        "Resource": "arn:aws:s3:::MY_BUCKET_NAME/*"
    },
    {
        "Effect": "Allow",
        "Principal": {
            "AWS": "MY_USER_ARN"
        },
        "Action": "s3:*",
        "Resource": [
            "arn:aws:s3:::MY_BUCKET_NAME",
            "arn:aws:s3:::MY_BUCKET_NAME/*"
        ]
    }
  ]
}

我的 COR 配置如下:

<CORSConfiguration>
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>Authorization</AllowedHeader>

在我的'settings.py'

INSTALLED_APPS = ( ... , 'storages', ...)

# FOR AWS
AWS_STORAGE_BUCKET_NAME = 'MY_BUCKET_NAME'
AWS_ACCESS_KEY_ID = 'MY_ACCESS_KEY_ID'
AWS_SECRET_ACCESS_KEY = 'MY_SECRET_ACCEESS_KEY'

AWS_S3_SECURE_URLS =False
AWS_QUERYSTRING_AUTH = False
AWS_S3_CUSTOM_DOMAIN = '%s.s3.amazonaws.com' % AWS_STORAGE_BUCKET_NAME
STATIC_URL = "http://%s/" % AWS_S3_CUSTOM_DOMAIN
STATICFILES_STORAGE = 'storages.backends.s3boto.S3BotoStorage'

我错过了什么?

更新

~/.aws/config

[default]
aws_secret_access_key = MY_SECRET_ACCESS_KEY_FROM_MY_SECURITY_CREDENTIALS
region = ap-northeast-2
output=text
aws_access_key_id = MY_ACCESS_KEY_ID_FROM_MY_SECURITY_CREDENTIALS

~/.aws/credentials

[default]
aws_access_key_id=MY_ACCESS_KEY_ID_FROM_MY_SECURITY_CREDENTIALS
aws_secret_access_key=MY_SECRET_ACCESS_KEY_FROM_MY_SECURITY_CREDENTIALS
region = ap-northeast-2

【问题讨论】:

  • 你能粘贴 ~/.aws/config 或 ~/.aws/credentials 吗?
  • @error2007s 我更新了它,在 MY SECURITY CREDENTIALS 中创建的相同访问密钥 ID 和秘密访问密钥包含在“~/.aws/config”和“~/.aws/credentials”中跨度>
  • 在 ~/.aws/credentials 中添加 region = ap-northeast-2 然后检查
  • @error2007s 我做了,但是在运行“python manage.py collectstatic”时,它显示了相同的错误消息。无论如何,谢谢您的热情回复!
  • 我看了这篇文章:stackoverflow.com/questions/27400105/… 但是在我的 'settings.py' 中更改了 'AWS_S3_CUSTOM_DOMAIN' 之后,从 '%s.s3.amazonaws.com' % AWS_STORAGE_BUCKET_NAME --> ' %s.s3.ap-northeast-2.amazonaws.com' % AWS_STORAGE_BUCKET_NAME ,但不幸的是,它也不起作用

标签: django amazon-web-services amazon-s3 amazon-ec2 awss3transfermanager


【解决方案1】:

我应该正确设置'~/.boto'文件。

【讨论】:

    猜你喜欢
    • 2017-05-03
    • 2018-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多