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