[ 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)