Есть ли минимальный размер для работы с AWS S3 Sync? - PullRequest
0 голосов
/ 02 мая 2018

Мне нужно переместить содержимое из корзины S3, которую я использовал до сих пор (src-bucket), в новую корзину S3 в новой учетной записи AWS (dst-bucket). Насколько я могу судить, прямой подход был бы

aws s3 sync s3://src-bucket s3://dst-bucket --exclude "*" --include="important_prefix*"

Но это работает только немного. Для подмножества объектов я получаю сообщение об ошибке

An error occurred (AccessDenied) when calling the CopyObject operation: Access Denied

и я не могу найти причину.

Пока я могу сказать, что все файлы, которые не могут быть синхронизированы, довольно малы (менее 700 КБ), в то время как успешно скопированные файлы имеют по крайней мере пару МБ каждый.

Существует ли какой-нибудь минимальный размер объекта (с относительно высоким значением по умолчанию), который должен быть достигнут, прежде чем s3 sync сможет выполнить свою работу?


Дополнительная информация

  • Я могу прекрасно aws s3 cp и aws s3api get-object проблемные объекты. Они просто терпят неудачу с aws s3 sync.
  • В обеих учетных записях у меня есть пользователь с S3FullAccess разрешениями
  • Я добавил следующую политику корзины в src-bucket

    {
    "Version": "2012-10-17",
    "Statement": [
    {
      "Sid": "Example permissions",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::newaccountid:user/myadminuser"
      },
      "Action": [
        "s3:GetBucketLocation",
        "s3:ListBucket"
      ],
      "Resource": "arn:aws:s3:::src-bucket"
    },
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::newaccountid:user/myadminuser"
      },
      "Action": [
        "s3:GetObject",
        "s3:PutObject",
        "s3:DeleteObject"
      ],
      "Resource": "arn:aws:s3:::src-bucket/*"
    }
    ]
    }
    
    • Я запускаю aws s3 sync как новый пользователь: user / myadminuser

Я могу просматривать пользователя src-bucket из новой учетной записи, и я могу загружать и скачивать файлы просто отлично. Запуск первоначально упомянутой команды aws s3 sync копирует несколько 100 объектов из src-bucket в dst-bucket, но завершается неудачей для некоторых других типов объектов.

Я попытался сравнить несинхронизируемые объекты с теми, которые мне удалось синхронизировать успешно. Я сделал aws s3api get-object-acl на многих объектах в src-bucket. Их списки ACL выглядят одинаково для успешно скопированных и неудачных копий:

{
    "Owner": {
        "ID": "reallylongidihadbashcomparethemformetomakesuretheyareidentical"
    },
    "Grants": [
        {
            "Grantee": {
                "Type": "CanonicalUser",
                "ID": "reallylongidihadbashcomparethemformetomakesuretheyareidentical"
            },
            "Permission": "FULL_CONTROL"
        }
    ]
}

На dst-bucket действительно длинный идентификатор отличается, но кроме этого ACL выглядят одинаково.

1 Ответ

0 голосов
/ 02 мая 2018

Нет, такого нет. Я соотносил неправильные вещи. Очевидно, s3 sync «зависит» от возможности копировать теги объектов, а также их данные. Чтение тегов объектов - это отдельная привилегия от чтения данных объектов. Я пропускал действие s3:GetObjectTagging при предоставлении прав моему новому пользователю.

Очевидно, что "они" начали разбивать данные на гораздо более мелкие куски в то же время, когда они начали использовать теги объектов.

...