Условия доступа к политике S3 Bucket
У меня есть политика S3 Bucket, как это, которая отклоняет запросы, если реферер не указан в
{
"Sid": "6",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::my_bucket_name/*",
"Condition": {
"StringNotLike": {
"aws:Referer": [
"http://example1.com/*",
"http://example2.com/*",
"https://*amazon.com*/*"
]
}
}
}
обратите внимание, я пытался https://*amazon.com*/*, https://*aws.amazon.com* ,https://*amazon.com*,http://*amazon.com*
Моя проблема заключается в том, что я не могу получить реферер (один из сервисов aws) для эластичного трафика, когда он пытается извлечь объект, и, таким образом, задание выдает ошибку, подобную этой: " У вас нет прав, необходимых для чтения указанного объекта из указанное ведро ". Обратите внимание, что все работает нормально, если я удаляю политику. Таким образом, мой вопрос заключается в том, что я должен поставить эластичный транскодер как реферер? Я попробовал пару комбинаций и искал здесь и там, но все напрасно. Пожалуйста, дайте мне знать, если вы думаете, что есть лучший способ для этого.
- Обновить:
Также есть способ, которым я могу отфильтровать некоторые отклоненные запросы с помощью политики сегмента, например, в вышеупомянутом случае я могу разрешить запрос, который не от доменов выше, но с определенным IP-адресом. Из документов Amazon на этом сайте я увидел, что сначала они проверяют явное отклонение, а затем эти отклоненные запросы не проверяются. Есть ли способ обойти это? Любая помощь будет высоко оценена. Спасибо за ваше время
1 ответ
Вместо создания Bucket Policy, который разрешает доступ для Amazon Elastic Transcoder, разрешения предоставляются через роль службы, используемую службой Transcoder.
До тех пор, пока у служебной роли есть разрешения на доступ к вашим файлам в S3, не нужно предоставлять ее через Bucket Policy. (Хотя я не уверен, что произойдет, если у вас есть активный DENY
в ведре политики.)
См.: Сервисные роли для эластичных транскодерных трубопроводов.