【问题标题】:Not able to write file in amazon s3 with django无法使用 django 在 amazon s3 中写入文件
【发布时间】:2013-06-20 02:10:28
【问题描述】:

我已将“所有人”作为 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 下拉列表中看到该用户

【问题讨论】:

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


【解决方案1】:

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

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

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

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

不要忘记删除“所有人对存储桶的权限”

【讨论】:

  • 但是user_123 写在该政策的什么地方
  • 策略附加到 user_123。在IAM控制台中,选择users->user_123->Permissions tab->“Attack User Policy”,将上面的策略粘贴进去。由于附加到user_123,它会应用到user_123
猜你喜欢
  • 2016-11-03
  • 1970-01-01
  • 2012-10-10
  • 2013-05-08
  • 1970-01-01
  • 2012-10-23
  • 2015-06-05
  • 1970-01-01
  • 2014-12-16
相关资源
最近更新 更多