Сделать файлы загруженными по SMTP на S3 Public

Я использую cloudmailin.com для загрузки вложений из электронных писем в корзину S3. Само хранилище имеет общедоступные настройки, но я не могу получить доступ к загруженным данным по ссылке на данные, поскольку S3, очевидно, не делает файлы, загруженные другими пользователями, общедоступными.

В настоящее время я использую политику bucket ниже, которая должна сделать содержимое bucket общедоступным:

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

Это работает, только если я вручную загружаю что-то в S3. Если я загружаю что-то вручную, я могу просмотреть ссылку, и она может открыться в новом окне. Но если он загружен из cloudmailin, я не могу просмотреть файл.

Кто-нибудь знает обходной путь? Мне просто нужно сделать так, чтобы файлы, загруженные в корзину сторонним разработчиком (cloudmailin), были видны.

Благодарю.

1 ответ

Решение

Проблема состоит в том, что, поскольку CloudMailin загружает ваши вложения в AWS S3, ему необходимо установить для них разрешения ACL. Для этого AWS предлагает несколько "законсервированных разрешений". Единственные два, которые действительно представляют интерес для CloudMailin:

  • bucket-owner-full-control - это то, что вы в настоящее время настроены, это дает владельцу корзины полный контроль над загруженным вложением.
  • public-read - это даст вам полный контроль как владельца корзины, но также установит привилегии только для чтения для всех.

Если вы войдете в CloudMail, зайдите в свой список адресов и нажмите "управлять" на адресе, который нужно отредактировать. Затем перейдите в "Edit Store Attachment Store" и выберите "Public Read", затем CloudMailin установит эту стандартную политику, когда вложения электронной почты загружаются на S3.

Другие вопросы по тегам