Я попытался использовать root-доступ и секретный ключ, получил ошибку об отказе в доступе.Я попытался восстановить ключи, и использовал новые ключи, и мне все еще было отказано в доступе.Я также попытался создать пользователя IAM, предоставив ему полный доступ к s3access, а также создать политику корзины, как показано ниже, и все еще получил ошибку «Отказано в доступе».Любая помощь будет оценена!Я знаю, что могу решить эту проблему, обнародовав ведро, и это для моего собственного веб-сайта портфолио, и я единственный человек, который когда-либо будет загружать фотографии на этот сайт, однако я знаю, что это не очень хорошая практика и хотел бычтобы выяснить, почему я получаю эту ошибку.
{
"Id": "Policy***********",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1545097638***",
"Action": "s3:*",
"Effect": "Allow",
"Resource": "arn:aws:s3:::my-bucket-name",
"Principal": {
"AWS": [
"arn:aws:iam::iamidhere:user/useridhere"
]
}
}
]
}
Я также обновил указанную выше политику корзины, включив в нее корневые учетные данные для идентификатора пользователя и имени пользователя, но при этом доступ запрещен.Я перезапустил сервер rails, закрылся на локальном хосте, на котором я тестирую, и перезапустил весь процесс, но безуспешно.Да, я переключил ключи доступа и убедился, что использую правильные ключи в зависимости от того, был ли он для пользователя root или для пользователя IAM, которого я создал.
Мой локальный файл .env
S3_BUCKET_NAME=bucket-name
AWS_ACCESS_KEY_ID=*************
AWS_SECRET_ACCESS_KEY=************
AWS_REGION=us-east-1
Я использую драгоценный камень carrierwave-aws, мой файл carrierwave.rb:
CarrierWave.configure do |config|
config.storage = :aws
config.aws_bucket = ENV.fetch('S3_BUCKET_NAME')
config.aws_acl = 'public-read'
config.aws_authenticated_url_expiration = 60 * 60 * 24 * 7
config.aws_attributes = {
expires: 1.week.from_now.httpdate,
cache_control: 'max-age=604800'
}
config.aws_credentials = {
access_key_id: ENV.fetch('AWS_ACCESS_KEY_ID'),
secret_access_key: ENV.fetch('AWS_SECRET_ACCESS_KEY'),
region: ENV.fetch('AWS_REGION'),
stub_responses: Rails.env.test?
}
end
Я попробовал оба ответа ниже, но безуспешно!