I have a code that lists keys with ListObjectsPages→ Contents→ Keyand copies these keys with CopyObject. This works in general, but for some keys that he complains about, the NoSuchKey: The specified key does not exist.set of keys he complains about includes keys with +.
ListObjectsPages
Contents
Key
CopyObject
NoSuchKey: The specified key does not exist.
+
NoSuchKey
Oddly enough, if I use the CLI: aws s3 cpon "foo + bar", the copy works. But I can not use the CLI. I need to use sdk.
aws s3 cp
I am using v1.8.11
As Raifen mentioned, plus symbols can be the result of a space change.
Update: Everything is hashed here https://github.com/aws/aws-sdk-go/issues/1438 . Raifen was right about the need QueryEscape. I am going to award the only current answer using the bounty, as it adds useful information, but does not select it as the correct one.
QueryEscape
This is the details of what was happening: https://github.com/aws/aws-sdk-go/issues/1438
CopySource
path.Join
\
:
:- [0-9a-zA-Z]!, -, _, ., *, ', ( )
[0-9a-zA-Z]
!
-
_
.
*
'
(
)
+ , ", " , ":" , QueryUnescape ( +).
QueryUnescape
, , : ( ), @ = ( ;), , ?.
@
=
;
,
?
, , , QueryUnescape, + ':' : "unescaped".
Source: https://habr.com/ru/post/1682347/More articles:Does the call contain a list for an optional value in Java? - javaPython: passing by reference and slice destination - functionPython - Poloniex Push API - pythonSlight performance difference between RDSEED and RDRAND - gccIs there an established order for the arguments 'ls'? - bashGetting the functionality of legacy powertool metrics in VS2017? - visual-studio-2017JQuery proxy does not call async function - javascriptwas sent to an object that does not meet the KVC requirements for the property "com" - iosKVO does not work with keypath like com.alpha. - iosPolymorphic variants of OCaml versus pattern - pattern-matchingAll Articles