[
https://issues.apache.org/jira/browse/HADOOP-17261?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17195722#comment-17195722
]
Steve Loughran commented on HADOOP-17261:
-----------------------------------------
{code}
2020-09-14 20:45:22,207 [main] DEBUG shell.Command
(Command.java:displayError(461)) - mv failure
java.nio.file.AccessDeniedException: rename s3a://stevel-london/src to
s3a://stevel-london/dest on s3a://stevel-london/src:
com.amazonaws.services.s3.model.MultiObjectDeleteException: One or more objects
could not be deleted (Service: null; Status Code: 200; Error Code: null;
Request ID: 005E717D632BA6AF; S3 Extended Request ID:
o9P5GsHwIedAdCsXvpDN6JSmHi5DvV02tW234Es2eIcrGItcEMW+su2Qcy9aIEJ2VdlmtlBLUKo=),
S3 Extended Request ID:
o9P5GsHwIedAdCsXvpDN6JSmHi5DvV02tW234Es2eIcrGItcEMW+su2Qcy9aIEJ2VdlmtlBLUKo=:null:
AccessDenied: src/file2: Access Denied
AccessDenied: src/file1: Access Denied
AccessDenied: src/file4: Access Denied
AccessDenied: src/file10: Access Denied
AccessDenied: src/file3: Access Denied
at
org.apache.hadoop.fs.s3a.impl.MultiObjectDeleteSupport.translateDeleteException(MultiObjectDeleteSupport.java:101)
at
org.apache.hadoop.fs.s3a.S3AUtils.translateException(S3AUtils.java:304)
at
org.apache.hadoop.fs.s3a.s3guard.RenameTracker.convertToIOException(RenameTracker.java:267)
at
org.apache.hadoop.fs.s3a.s3guard.RenameTracker.deleteFailed(RenameTracker.java:198)
at
org.apache.hadoop.fs.s3a.impl.RenameOperation.removeSourceObjects(RenameOperation.java:695)
at
org.apache.hadoop.fs.s3a.impl.RenameOperation.completeActiveCopiesAndDeleteSources(RenameOperation.java:265)
at
org.apache.hadoop.fs.s3a.impl.RenameOperation.endOfLoopActions(RenameOperation.java:490)
at
org.apache.hadoop.fs.s3a.impl.RenameOperation.recursiveDirectoryRename(RenameOperation.java:465)
at
org.apache.hadoop.fs.s3a.impl.RenameOperation.execute(RenameOperation.java:303)
at
org.apache.hadoop.fs.s3a.S3AFileSystem.innerRename(S3AFileSystem.java:1526)
at
org.apache.hadoop.fs.s3a.S3AFileSystem.rename(S3AFileSystem.java:1376)
at
org.apache.hadoop.fs.shell.MoveCommands$Rename.processPath(MoveCommands.java:124)
at
org.apache.hadoop.fs.shell.CommandWithDestination.processPath(CommandWithDestination.java:271)
at
org.apache.hadoop.fs.shell.Command.processPathInternal(Command.java:367)
at org.apache.hadoop.fs.shell.Command.processPaths(Command.java:331)
at
org.apache.hadoop.fs.shell.Command.processPathArgument(Command.java:304)
at
org.apache.hadoop.fs.shell.CommandWithDestination.processPathArgument(CommandWithDestination.java:266)
at org.apache.hadoop.fs.shell.Command.processArgument(Command.java:286)
at org.apache.hadoop.fs.shell.Command.processArguments(Command.java:270)
at
org.apache.hadoop.fs.shell.CommandWithDestination.processArguments(CommandWithDestination.java:237)
at
org.apache.hadoop.fs.shell.FsCommand.processRawArguments(FsCommand.java:120)
at org.apache.hadoop.fs.shell.Command.run(Command.java:177)
at org.apache.hadoop.fs.FsShell.run(FsShell.java:327)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:76)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:90)
at org.apache.hadoop.fs.FsShell.main(FsShell.java:390)
Caused by: com.amazonaws.services.s3.model.MultiObjectDeleteException: One or
more objects could not be deleted (Service: null; Status Code: 200; Error Code:
null; Request ID: 005E717D632BA6AF; S3 Extended Request ID:
o9P5GsHwIedAdCsXvpDN6JSmHi5DvV02tW234Es2eIcrGItcEMW+su2Qcy9aIEJ2VdlmtlBLUKo=),
S3 Extended Request ID:
o9P5GsHwIedAdCsXvpDN6JSmHi5DvV02tW234Es2eIcrGItcEMW+su2Qcy9aIEJ2VdlmtlBLUKo=
at
com.amazonaws.services.s3.AmazonS3Client.deleteObjects(AmazonS3Client.java:2262)
at
org.apache.hadoop.fs.s3a.S3AFileSystem.lambda$deleteObjects$11(S3AFileSystem.java:2162)
at org.apache.hadoop.fs.s3a.Invoker.retryUntranslated(Invoker.java:407)
at
org.apache.hadoop.fs.s3a.S3AFileSystem.deleteObjects(S3AFileSystem.java:2154)
at
org.apache.hadoop.fs.s3a.S3AFileSystem.removeKeysS3(S3AFileSystem.java:2440)
at
org.apache.hadoop.fs.s3a.S3AFileSystem.removeKeys(S3AFileSystem.java:2541)
at
org.apache.hadoop.fs.s3a.S3AFileSystem$OperationCallbacksImpl.removeKeys(S3AFileSystem.java:1610)
at
org.apache.hadoop.fs.s3a.impl.RenameOperation.removeSourceObjects(RenameOperation.java:680)
... 21 more
{code}
> s3a rename() now requires s3:deleteObjectVersion permission
> -----------------------------------------------------------
>
> Key: HADOOP-17261
> URL: https://issues.apache.org/jira/browse/HADOOP-17261
> Project: Hadoop Common
> Issue Type: Sub-task
> Components: fs/s3
> Affects Versions: 3.4.0
> Reporter: Steve Loughran
> Assignee: Steve Loughran
> Priority: Major
> Labels: pull-request-available
> Time Spent: 10m
> Remaining Estimate: 0h
>
> With the directory marker change (HADOOP-13230) you need the
> s3:deleteObjectVersion permission in your role, else the operation will fail
> in the bulk delete, *if S3Guard is in use*
> Root cause
> -if fileStatus has a versionId, we pass that in to the delete KeyVersion pair
> -an unguarded listing doesn't get that versionId, so this is not an issue
> -but if files in a directory were previously created such that S3Guard has
> their versionId in its tables, that is used in the request
> -which then fails if the caller doesn't have the permission
> Although we say "you need s3:delete*", this is a regression as any IAM role
> without the permission will have rename fail during delete
--
This message was sent by Atlassian Jira
(v8.3.4#803005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]