Я создал корзину на S3 и хочу, чтобы она была частной, так что никто с прямой связью какого-либо объекта не может получить доступ к этому объекту, а ко всем объектам этой корзины можно получить доступ только через мое приложение.
Я разработал свое приложение на Ruby on Rails , развернуло на Heroku и использую PaperClip для хранения файлов.
AsЯ не хочу публичного доступа, я заблокировал публичный доступ в Настройки публичного доступа в Разрешения на вкладке панели инструментов.
изображение скриншота настроек: Я создал пользователя IAM, а также создал политику IAM и назначен этому пользователю.Это моя политика.Однако я получаю, Доступ запрещен Ошибка
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetBucketLocation",
"s3:ListAllMyBuckets"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::bucket-name"
]
},
{
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:DeleteObject"
],
"Resource": [
"arn:aws:s3:::bucket-name/*"
]
}
]
}
В моем production.rb
я использую учетные данные S3 для Paperlcip следующим образом:
config.paperclip_defaults = {
storage: :s3,
s3_credentials: {
bucket: ENV['S3_BUCKET_NAME'],
access_key_id: ENV['AWS_ACCESS_KEY_ID'],
secret_access_key: ENV['AWS_SECRET_ACCESS_KEY'],
s3_region: ENV['AWS_REGION'],
}
}
И у меня естьопределили эти переменные среды в Heroku.Идентификатор ключа доступа и секретный ключ доступа принадлежат моему пользователю IAM.
В моем paperclip.rb
у меня есть:
Paperclip::Attachment.default_options[:s3_host_name] = 's3.amazonaws.com'
ОШИБКА:
Ошибка, которую я получаю в консоли Chrome: Failed to load resource: the server responded with a status of 403 (Forbidden)