Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

ts-gcloud-sdk

terence41038MIT License0.1.12TypeScript support: included

Google Cloud SDK functional wrapper written in TypeScript. Useful for automation and integration.

google, google cloud, gcp, cloud sdk, cloud functions, cloud schedulers, cloud projects, cloud organizations, cloud datastore, cloud app

readme

ts-gcloud-sdk

Google Cloud SDK functional wrapper written in TypeScript. Useful for automation and integration.

Settings

  • GCP_SDK_PATH
    • If your sdk it not added to path, you can specific the env variable to point to the path directly
    • export GCP_SDK_PATH=C:\Program Files\google-cloud-sdk\bin\gcloud
  • GCP_BQ_PATH
    • default value is "bq"
  • GCP_GSUTIL_PATH
    • default value is "gsutil"
  • DEBUG=gcloud
    • show all the logs and commands of the sdk

Quick Start

import {GcloudSdk} from "./ts-gcloud-sdk";
async function quickStart() {
    const gcloudSDK = await new GcloudSdk("project-name");
    const help = await gcloudSDK.help();
    const version = await gcloudSDK.version();
    const gcloud = gcloudSDK.init();

    // make sure the existing gcloud session is same as the clientEmail
    const gcloudSDK1 = await new GcloudSdk("project-name",
        {clientEmail: "abc@example.com"});

    // prompt a web view to login
    const gcloudSDK2 = await new GcloudSdk("project-name", {useInteractiveLogin: true});

    // prompt a web view to login
    const gcloudSDK3 = await new GcloudSdk("project-name", {keyFilename: "serviceAccount.json"});
}

Functions

async function functions() {
    const gcloudSDK = await new GcloudSdk("project-name");
    const gcloud = await gcloudSDK.init();
    const functions = gcloud.functions();

    const help = await functions.help();
    const regions = await functions.regions();
    const logs = await functions.logs();
    const eventTypes = await functions.eventTypes();
    const list = await functions.list();
    for (const item of list) {
        const describeResult = await functions.describe(item.name, {region: item.region});
        if (item.status === "READY" || item.status === "ACTIVE") {
            const callResult = await functions.call(item.name, {region: item.region, data: {name: "value"}});
        }
    }

    const name = "helloGET";
    const region = gcloud.regions.usCentral1;
    const deploy = await functions
        .deploy(name, {
            triggerHttp: true,
            entryPoint: "testing",
            runtime: functions.runtimes.nodejs8,
            region,
            memory: functions.memory.M128,
            setEnvVars: "name=gcp",
        });
    await functions.delete(name, {region});
}

Organizations

async function cloudOrganizations() {
    const gcloud = await new GcloudSdk(process.env.GCP_PROJECT_NAME).init();
    const organizations = gcloud.organizations();
    const list = await organizations.list();
    for (const item of list) {
        const describe = await organizations.describe(item.id);
        console.log(describe);
    }
}

Datastore

async function cloudDatastore() {
    const gcloud = await new GcloudSdk("project-name").init();
    const datastore = gcloud.datastore();
    const datastoreIndexes = datastore.indexes();

    const listResult = await datastoreIndexes.listIndexes();
    const createResult = await datastoreIndexes.createIndexes("./index.yaml");
    const cleanupResult = await datastoreIndexes.cleanupIndexes("./index.yaml");
}

Gsutil Command

async function gsutilCommand() {
    const gsutil = new GsutilCommandHelper();
    gsutil.addParams(["help", "rm"]);
    gsutil.addArgument({q: ""});
    const result = await gsutil.exec();
}

Big Query Command

async function bigQueryCommand() {
    const bigQuery = new BigQueryCommandHelper();
    bigQuery.addArgument({help: ""});
    const result = await bigQuery.exec();
}

Run with Service Account

  • Please grant the below permission if you use service account
    • Cloud Functions Admin
    • Cloud Scheduler Admin
    • Cloud Datastore Owner
    • Service Account User
    • Logging Admin