Сделать файлы загруженными по 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.