[ 
https://issues.apache.org/jira/browse/ARROW-18290?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Alenka Frim updated ARROW-18290:
--------------------------------
    Description: 
I can't upload a file called `spam=ham` to a filesystem that emulates an S3 
API. I can workaround the issue by renaming the file `spam-ham`. 

To reproduce, run a filesystem that emulates an S3 API:
{code:java}
docker run -p 9444:9000 scireum/s3-ninja:latest
{code}
Authenticate with the filesystem:
{code:java}
export AWS_ACCESS_KEY_ID="AKIAIOSFODNN7EXAMPLE"
export AWS_SECRET_ACCESS_KEY="wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"
{code}
 Then run this Python script:
{code:python}
import os
import tempfile

import pyarrow.fs

source = tempfile.mkdtemp()
file_path = os.path.join(source, "spam")
open(file_path, "w").close()

filesystem, path = pyarrow.fs.FileSystem.from_uri(
"s3://bucket?scheme=http&endpoint_override=localhost:9444"
)
pyarrow.fs.copy_files(source, path, destination_filesystem=filesystem)
{code}
You'll get the error
{code:java}
OSError: When initiating multiple part upload for key 'spam=ham' in bucket 
'bucket': AWS Error [code 22]: The computed request signature does not match 
the one provided. Check login credentials. (Expected: 
e70ab9efb620f744abd43d13e8e6846c585a41da543bfb5da67d2fe1ccfd1aaa, Found: 
648456e3441dad5a014b2981c71b6e69ccac9732bdcdbe2d363d95105d914340)
{code}
This issue is motivated by [https://github.com/ray-project/ray/issues/29845].

  was:
I can't upload a file called `spam=ham` to a filesystem that emulates an S3 
API. I can workaround the issue by renaming the file `spam-ham`. 

 

To reproduce, run a filesystem that emulates an S3 API:

```

docker run -p 9444:9000 scireum/s3-ninja:latest

```

 

Authenticate with the filesystem:

 

```

export AWS_ACCESS_KEY_ID="AKIAIOSFODNN7EXAMPLE"

export AWS_SECRET_ACCESS_KEY="wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"

```

 

Then run this Python script:

 

```
import os
import tempfile

import pyarrow.fs

source = tempfile.mkdtemp()
file_path = os.path.join(source, "spam")
open(file_path, "w").close()

filesystem, path = pyarrow.fs.FileSystem.from_uri(
"s3://bucket?scheme=http&endpoint_override=localhost:9444"
)
pyarrow.fs.copy_files(source, path, destination_filesystem=filesystem)
```

You'll get the error

 

```

OSError: When initiating multiple part upload for key 'spam=ham' in bucket 
'bucket': AWS Error [code 22]: The computed request signature does not match 
the one provided. Check login credentials. (Expected: 
e70ab9efb620f744abd43d13e8e6846c585a41da543bfb5da67d2fe1ccfd1aaa, Found: 
648456e3441dad5a014b2981c71b6e69ccac9732bdcdbe2d363d95105d914340)

```

This issue is motivated by [https://github.com/ray-project/ray/issues/29845].


> [Python] `pyarrow.fs.copy_files` doesn't work if filenames contain special 
> characters
> -------------------------------------------------------------------------------------
>
>                 Key: ARROW-18290
>                 URL: https://issues.apache.org/jira/browse/ARROW-18290
>             Project: Apache Arrow
>          Issue Type: Bug
>          Components: Python
>    Affects Versions: 6.0.1
>            Reporter: Balaji Veeramani
>            Priority: Minor
>
> I can't upload a file called `spam=ham` to a filesystem that emulates an S3 
> API. I can workaround the issue by renaming the file `spam-ham`. 
> To reproduce, run a filesystem that emulates an S3 API:
> {code:java}
> docker run -p 9444:9000 scireum/s3-ninja:latest
> {code}
> Authenticate with the filesystem:
> {code:java}
> export AWS_ACCESS_KEY_ID="AKIAIOSFODNN7EXAMPLE"
> export AWS_SECRET_ACCESS_KEY="wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"
> {code}
>  Then run this Python script:
> {code:python}
> import os
> import tempfile
> import pyarrow.fs
> source = tempfile.mkdtemp()
> file_path = os.path.join(source, "spam")
> open(file_path, "w").close()
> filesystem, path = pyarrow.fs.FileSystem.from_uri(
> "s3://bucket?scheme=http&endpoint_override=localhost:9444"
> )
> pyarrow.fs.copy_files(source, path, destination_filesystem=filesystem)
> {code}
> You'll get the error
> {code:java}
> OSError: When initiating multiple part upload for key 'spam=ham' in bucket 
> 'bucket': AWS Error [code 22]: The computed request signature does not match 
> the one provided. Check login credentials. (Expected: 
> e70ab9efb620f744abd43d13e8e6846c585a41da543bfb5da67d2fe1ccfd1aaa, Found: 
> 648456e3441dad5a014b2981c71b6e69ccac9732bdcdbe2d363d95105d914340)
> {code}
> This issue is motivated by [https://github.com/ray-project/ray/issues/29845].



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to