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

Danny McCormick commented on BEAM-13215:
----------------------------------------

This issue has been migrated to https://github.com/apache/beam/issues/21214

> Portable OSS runners do not support GCP credentials for GCP IOs.
> ----------------------------------------------------------------
>
>                 Key: BEAM-13215
>                 URL: https://issues.apache.org/jira/browse/BEAM-13215
>             Project: Beam
>          Issue Type: Bug
>          Components: io-go-gcp, io-java-gcp, io-py-gcp, java-fn-execution
>            Reporter: Daniel Oliveira
>            Priority: P3
>
> The situation here is that when a pipeline is run on a portable runner using 
> a GCP IO, and uses docker for the SDK Harness environment, the SDK Harness 
> does not have the user's GCP credentials available and the pipeline fails. 
> There are apparently [pipeline options for setting 
> credentials|https://github.com/apache/beam/blob/v2.33.0/sdks/java/extensions/google-cloud-platform-core/src/main/java/org/apache/beam/sdk/extensions/gcp/options/GcpOptions.java#L170],
>  but as far as I can tell they are either meant only for non-portable 
> pipelines, or only for the Dataflow runner.
> The tricky part of implementing this is that credentials for GCP are not 
> straightforward, and having them available for something like the Application 
> Default Credentials API involves copying over multiple files or environment 
> variables. The following article provides a lot of context for the 
> difficulties involved: 
> [https://medium.com/datamindedbe/application-default-credentials-477879e31cb5]
> Possible solutions. Note these are mostly untested:
>  # Perform some volume-mounting when calling the "docker run" command to 
> mount directories containing credentials. Preferably this can be set via some 
> sort of pipeline option. (This could potentially also be used to provide 
> directories for docker containers to write output files to with TextIO or 
> FileIO.) See the article above for an example.
>  ** This solution may not work with runners on remote endpoints though. The 
> directory mounted must be on the same machine as the docker container to work 
> properly, which may not be possible in some cases with remote runners.
>  # Require custom containers with appropriate credentials provided. This is 
> more robust than the solution above, but less user-friendly, and would 
> require a good amount of documentation to be available.
>  ** This could be possible in conjunction with the solution above, and might 
> be a good way of supporting GCP credentials on remote runners. Custom 
> containers can store any valid credentials of the user's choice, (for example 
> service account credentials for a production service) and then be run on any 
> machine.



--
This message was sent by Atlassian Jira
(v8.20.7#820007)

Reply via email to