Datastoreに外部からアクセスする方法です。
事前に外部からアクセスできるように以下のURLに載っている「Accessing the Datastore API from another platform」の手順を実施しておきます。
https://cloud.google.com/datastore/docs/activate
- Use the Enable Datastore API Wizard to activate the Datastore API. The wizard allows you to activate the API for an existing project, or create a new project and activate it for that.
- In the left sidebar, under APIs & auth, select Credentials.
- Click on Create new Client ID.
- Select Service account and then click Create Client ID. Your browser will download the private key.
- Your Service Account is the Email address displayed under the Service Account section.
- Your Private Key is the file you just downloaded.
- Your Dataset ID is your new or existing Cloud Project ID.
Javaからアクセスするには以下のURLにあるように環境変数に認証情報をセットします。
https://cloud.google.com/datastore/docs/getstarted/start_java/
export DATASTORE_SERVICE_ACCOUNT=<service-account> export DATASTORE_PRIVATE_KEY_FILE=<path-to-private-key-file>
でも、環境変数にセットしたくないケースがあると思います。
その場合は以下のようにしてセットします。
public static final String ACCOUNT = "accountname"; public static final String PROJECT_ID = "projectname"; public static final String PRIVATE_KEY_FILE = "keyfilename"; /** * Datastoreへの接続 * * @param data */ public static void connectDatastore(RunData rundata) { try { ServletContext servletContext = ((JetspeedRunData) rundata).getServletContext(); String privateKeyFile = servletContext.getRealPath("/WEB-INF/conf/" + PRIVATE_KEY_FILE); DatastoreOptions.Builder optionsfromEnv = DatastoreHelper.getOptionsfromEnv(); Credential newCredential = DatastoreHelper.getServiceAccountCredential(ACCOUNT, privateKeyFile); optionsfromEnv.credential(newCredential); datastore = DatastoreFactory.get().create( optionsfromEnv.dataset(PROJECT_ID).build()); } catch (GeneralSecurityException ex) { logger.error("Error", ex); } catch (IOException ex) { logger.error("Error", ex); } catch (Exception ex) { logger.error("Error", ex); } }