Когда я пытаюсь скопировать данные из общедоступной корзины в свою, происходит сбой с ошибкой ниже
aws s3 cp s3://awssampledbuswest2/tickit/spectrum/sales/sales_ts.000 s3://<my bkt>/
copy failed: s3://awssampledbuswest2/tickit/spectrum/sales/sales_ts.000 to s3://<my bkt>/sales_ts.000 An error occurred (AccessDenied) when calling the GetObjectTagging operation: Access Denied
Поскольку исходный путь доступен всем, любой может попытаться сделать то же самое, заменив его <my bkt>своим.
Удивительно, но я могу загрузить файл из общедоступной корзины в локальную файловую систему и загрузить его в свою собственную корзину.
aws s3 cp s3://awssampledbuswest2/tickit/spectrum/sales/. --recursive
и
aws s3 cp sales_ts.000 s3://<my bkt>/
Любое объяснение, почему это происходит и как избежать этой ошибки, приветствуется!
PS. Я пробовал с владельцем учетной записи AWS и с пользователем IAM ниже, но не повезло.
Решение проблемы
Это не твоя вина. Это связано с политикой корзины в исходной корзине. Это не разрешает GetObjectTaggingвызов API.
Сегмент awssampledbuswest2был настроен для разрешения доступа из Amazon Redshift в соответствии с примерами в документации AWS. Такой доступ не пытается получить теги объекта.
Однако при копировании между сегментами команда интерфейса aws s3 cpкомандной строки AWS пытается создать полную копию объекта, включая теги объекта. Это приводит к сбою.
Копирование в локальную файловую систему прошло успешно, так как интерфейс командной строки AWS не пытается получить теги при копировании в место назначения за пределами S3, поскольку в обычных операционных системах нет понятия тегов для файлов.
Чтобы избежать этой проблемы, вы можете использовать aws s3api copy-objectкоманду для копирования файла между сегментами, которая просто делает копию, не пытаясь скопировать теги:
aws s3api copy-object --copy-source awssampledbuswest2/tickit/spectrum/sales/sales_ts.000 --bucket YOUR-BUCKET --key sales_ts.000
Комментариев нет:
Отправить комментарий