Вот вопрос:
Есть ли способ использовать aws s3 sync...
для переноса файлов, доставленных SES, в корзину S3 в одной учетной записи и копирования их в корзину S3 в другой учетной записи?
подробности:
Я установил адрес Amazon Simple Email Service (SES) , который сбрасывает электронные письма в корзину S3. Я пытаюсь использовать команду aws cli aws s3 sync
, чтобы скопировать файлы в корзину другой учетной записи для тестирования.
Я настроил обе учетные записи в соответствии с AWS « Как скопировать объекты S3 из другой учетной записи AWS », но она не работает для файлов, доставляемых SES. Когда я запускаю команду, все файлы SES завершаются с ошибкой:
загрузка не удалась: {SOURCE} to {DESTINATION} Произошла ошибка (AccessDenied) при вызове операции GetObject: Access Denied
Это только для файлов, доставляемых SES. Любые файлы, которые я добавляю напрямую, просто переносятся.
Исходя из этого поста , я начал смотреть на владельца объектов и обнаружил, что у доставленных файлов SES есть владелец aws-ses+publishing.us-east-1.prod
. Но, похоже, реальная учетная запись должна иметь полный доступ. В частности, когда я бегу:
aws s3api get-object-acl --bucket {MY_BUCKET} --key {MY_KEY}
возвращает:
{
"Owner": {
"DisplayName": "my_display_name",
"ID": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
},
"Grants": [{
"Grantee": {
"DisplayName": "my_display_name",
"ID": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"Type": "CanonicalUser"
},
"Permission": "FULL_CONTROL"
}]
}
И когда я запускаю его на файле, доставленном SES, я получаю:
{
"Owner": {
"DisplayName": "aws-ses+publishing.us-east-1.prod",
"ID": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
},
"Grants": [
{
"Grantee": {
"DisplayName": "aws-ses+publishing.us-east-1.prod",
"ID": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"Type": "CanonicalUser"
},
"Permission": "FULL_CONTROL"
},
{
"Grantee": {
"DisplayName": "my_display_name",
"ID": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"Type": "CanonicalUser"
},
"Permission": "FULL_CONTROL"
}
]
}
Учитывая заявления о предоставлении гранта для моей учетной записи, похоже, это должно работать.
Я нашел эту ветку на форуме AWS, где обсуждается, как изменить владельца ключа. Он говорит, что вы не можете напрямую, но вы можете скопировать ключ обратно себе:
aws s3 cp s3://mybucket/mykey s3://mybucket/mykey --storage-class STANDARD
При этом обновляется владелец объекта. Я попробовал это с файлом SES и, конечно же, после получения обновления владельца я мог передать его с aws s3 sync...
.
Итак, это работает, но похоже на взлом. Есть ли лучший способ сделать это?