У меня есть проблема разрешений в ведре S3, когда я пытаюсь получить доступ к определенным файлам с помощью BOTO в Python. Вот ведро политика:S3ResponseError: 403 Запрещено с помощью Boto
{
"Version": "2008-10-17",
"Id": "Policy1407346649831",
"Statement": [
{
"Sid": "Stmt1407346646598",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::029030651757:user/my_iam_user"
},
"Action": "s3:*",
"Resource": ["arn:aws:s3:::my_bucket/*",
"arn:aws:s3:::my_bucket"]
},
{
"Sid": "2",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity EFUS443HMBYF"
},
"Action": "s3:GetObject",
"Resource": ["arn:aws:s3:::my_bucket/*",
"arn:aws:s3:::my_bucket"]
},
{
"Sid": "3",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity EFUS443HMBYF"
},
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::my_bucket/*"
}
]
}
У меня есть 3 заявления. Первый заключается в том, чтобы разрешить пользователю my_iam_user
получить доступ к ведру my_bucket
, а второй - разрешить распределению Cloudfront для чтения ведра, а последний - разрешить распределение Cloudfront для записи в ведро.
Теперь у меня есть файлы на моем ковше profile_pictures/15/file1.jpg
и profile_pictures/15/file2.jpg
. Первый был создан с использованием подписанного url и CloudFront, второй был помещен на S3 с помощью Boto. Теперь я пытаюсь получить доступ к файлам с помощью Boto. Вот мой код:
import boto
from boto.s3.key import Key
s3 = boto.connect_s3(
aws_access_key_id="access_key_of_my_iam_user",
aws_secret_access_key="secret_key_of_my_iam_user"
)
bucket = s3.get_bucket("my_bucket", validate=False)
k1 = Key(bucket)
k1.key = "profile_pictures/15/file1.jpg"
k1.get_contents_as_string()
k2 = Key(bucket)
k2.key = "profile_pictures/15/file2.jpg"
k2.get_contents_as_string()
Проблема заключается в том, что доступ к file1 возвращает ошибку:
S3ResponseError: S3ResponseError: 403 Forbidden
<?xml version="1.0" encoding="UTF-8"?>
<Error><Code>AccessDenied</Code><Message>Access Denied</Message><RequestId>8C5DE910C7B18F9E</RequestId><HostId>XiKU5Q+B0Wme3GpUNmUoD9KpUN63T3bFu/rAb/wh3rhDMkykoRsdQIFgyIp8zfAwMR1apbqUEFY=</HostId></Error>
а второй один успех. Что может быть неправильным?
Примечание: время на клиенте, которое работает с кодом, является хорошим.
Является ли пользователь IAM также владелец ведра? – garnaat