无法使用django在amazon s3中写入文件

时间:2013-06-23 12:29:06

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

我已将'everyone'作为AWS s3存储区权限的所有权限。

我正在使用django。我能够读取文件,但我无法写入。

我正在尝试这个

>>> print default_storage.connection
S3Connection:s3.amazonaws.com
>>> from django.core.files.base import ContentFile
>>> from django.core.cache import cache

>>> default_storage.exists('testkey')
True



>>> file = default_storage.open('storage_test', 'w')
>>> file.write('storage contents')
Traceback (most recent call last):


S3ResponseError: S3ResponseError: 403 Forbidden
<?xml version="1.0" encoding="UTF-8"?>
<Error><Code>AccessDenied</Code><Message>Access Denied</Message><RequestId>FDD54

我已在设置中添加了

DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
AWS_ACCESS_KEY_ID='XXXXXXXXXXXXXXA'
AWS_SECRET_ACCESS_KEY='XXXXXXX'
AWS_STORAGE_BUCKET_NAME='testbucket'

我也很困惑如何让django s3知道从s3使用哪个用户。我很迷惑。访问密钥用于我创建的user_123但是在权限中我无法在aws s3下拉列表中看到该用户

1 个答案:

答案 0 :(得分:5)

  

我也很困惑如何让django s3知道从s3使用哪个用户

这严格取决于您在配置中放置的Accesskey和密钥。

您是否已授予user_123访问S3的权限?在IAM控制台中,您需要授予user_123访问权限,如下所示:

{
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "s3:*",
      "Resource": ["arn:aws:s3:::testbucket/*", "arn:aws:s3:::testbucket"]
    }
  ]
}

不要忘记删除'每个人对桶的许可