How to authenticate to Google Cloud API without Application Default Credentials or Cloud SDK?

4.2k Views Asked by At

I'm trying to access the Google Cloud API from an AWS Lambda function but I don't know how to authenticate. The auth guide in the Google Cloud documentation (https://cloud.google.com/docs/authentication) wants me to download a credentials JSON file and use Application Default Credentials, but as anyone who has used hosted functions already knows, the point is that you don't need to manage a server or runtime environment, so Lambda doesn't give me the ability to store arbitrary files in the environment of the running code.

I can use the Cloud SDK locally to get an access token but it expires so I can't use it in my function as a permanent solution.

Is there not a way I can get an access token that I can use indefinitely in my code to call the Google Cloud API? Is there any other solution?

1

There are 1 best solutions below

1
On BEST ANSWER

I found how to hard-code the credentials without the need to save them in a JSON file. It was in this documentation here:

https://googlecloudplatform.github.io/google-cloud-node/#/docs/language/0.7.0/guides/authentication

Below is an example that calls the Language API.

var language = require('@google-cloud/language')({
  projectId: '',
  credentials: {
      client_email: '',
      private_key: '',
  }
});

language.detectEntities('Axel Foley is from Detroit').then(function(data) {
  var entities = data[0];
  var apiResponse = data[1];
});