[ 
https://issues.apache.org/jira/browse/ARROW-17894?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17648845#comment-17648845
 ] 

Bryce Mecum commented on ARROW-17894:
-------------------------------------

Hi Carl, I just ran through similar steps as your above with my own bucket and 
credentials and it worked as expected.

 
{code:java}
library(arrow)

arrow_info()$version
# [1] ‘10.0.1’

bucket <- gs_bucket("my-gcs-bucket",
                    json_credentials = 
readr::read_file("my-service-account.json"))
bucket$ls()
# [1] "starwars.csv"     "starwars.parquet" {code}
I wonder if some detail of how we generated our service accounts is different. 
I also set up Application Default Credentials instead of a Service Account 
(like Google themselves and our docs suggest), and read_parquet and 
open_dataset work against GCS URIs just fine.

 

I do want to see you get this working so we can either chat 1:1 or you could 
file a [new issue on GitHub|github.com/apache/arrow/issues/new] and we could go 
from there.

> [R] Documentation for json_credentials is misleading
> ----------------------------------------------------
>
>                 Key: ARROW-17894
>                 URL: https://issues.apache.org/jira/browse/ARROW-17894
>             Project: Apache Arrow
>          Issue Type: Bug
>          Components: R
>    Affects Versions: 9.0.1
>            Reporter: Joran Elias
>            Priority: Major
>
> For authenticating with GCS via a JSON credentials file, the documentation 
> under ?FileSystem for GcsFileSystem$create() says:
>  
>  * {{{}json_credentials{}}}: optional string for authentication. Point to a 
> JSON credentials file downloaded from GCS.
>  
> Additionally, the GCS Authentication section of Working with Cloud Storage 
> (S3, GCS) in the file system vignette says:
> {quote}or {{{}json_credentials{}}}, to reference a downloaded credentials 
> file.
> {quote}
>  
> Both of these seem to imply that json_credentials expects a path to a JSON 
> credentials file downloaded from GCP. However, when a file path is provided 
> you get an invalid argument error:
>  
> {code:java}
> > bucket <- gs_bucket(bucket = 'pinned_data',json_credentials = json_path)
> > bucket$ls(recursive = TRUE)
> Error: Invalid: google::cloud::Status(INVALID_ARGUMENT: Permanent error in 
> ListObjects: Invalid ServiceAccountCredentials,parsing failed on data loaded 
> from memory). Detail: [errno 22] Invalid argument
> {code}
>  
> However, if you pass a string containing the raw JSON from the file itself, 
> the above code snippet works and returns the names of the objects in the 
> bucket.
> Both sections of the documentation should be clarified to explicitly say that 
> the argument expects the actual JSON rather than a file path to the JSON file.



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

Reply via email to