Основная идея для доступа к элементам в ведре S3 из браузера

Я использую [django-s3direct][1] для загрузки файла в ведро S3.

После загрузки файла приходит url, который отображается здесь.

https://s3.ap-northeast-1.amazonaws.com/cdk-sample-bk/line-assets/images/e236fc508939466a96df6b6066f418ec/1040

Однако при доступе из браузера возникает ошибка.

<Error>
<script/>
<Code>AccessDenied</Code>
<Message>Access Denied</Message>
<RequestId>025WQBJQ5K2W5Z5W</RequestId>
<HostId>FF3VeIft8zSQ7mRK1a5e4l8jolxHBB40TEh6cPhW0qQtDqT7k3ptgCQt3/nusiehDIXkgvxXkcc=</HostId>
</Error>

Теперь я могу использовать s3.ap-northeast-1.amazonaws.com url? Или мне нужно создать точку доступа?

Разрешение на доступ является публичным, а блочный публичный доступ выключен

Политика ведра такова

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::678100228133:role/st-dev-base-stack-CustomS3AutoDeleteObjectsCustomR-MLBJDQF3OWFJ"
            },
            "Action": [
                "s3:GetBucket*",
                "s3:List*",
                "s3:DeleteObject*"
            ],
            "Resource": [
                "arn:aws:s3:::cdk-st-dev-sample-bk",
                "arn:aws:s3:::cdk-st-dev-sample-bk/*"
            ]
        }
    ]
}

Есть ли еще какие-то вещи, которые мне нужно проверить?

Как сказал @marcin, ваша политика bucket разрешает только действия для роли IAM arn:aws:iam::678100228133:role/st-dev-base-stack-CustomS3AutoDeleteObjectsCustomR-MLBJDQF3OWFJ. Если вы хотите, чтобы все ваши объекты были общедоступны (не рекомендуется писать), вам нужно изменить политику bucket следующим образом -

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": [
                "s3:GetBucket*",
                "s3:GetObject",
                "s3:List*",
                "s3:DeleteObject*"
            ],
            "Resource": [
                "arn:aws:s3:::cdk-st-dev-sample-bk",
                "arn:aws:s3:::cdk-st-dev-sample-bk/*"
            ]
        }
    ]
}

Приведенная выше политика делает все ваши объекты bucket общедоступными (а также позволяет удалять их!!). Я рекомендую использовать django-storages и presigned urls, чтобы позволить вашим пользователям получить доступ к вашим объектам bucket.

Вернуться на верх