Skip to main content

Perform Foundational Infrastructure Tasks in Google Cloud: Challenge Lab [GSP315]




Link to the video: https://youtu.be/ypbGzTmMUb4

STEPS

Task 1

Go to cloud storage

Make a bucket with the bucket name given <Bucket Name>


Task 2

GO TO PUB/SUB 

Name = <Topic Name>


Task 3

GO TO CLOUD FUNCTIONS

create cloud functions

name = <Cloud Function Name>

region = us-east1

Trigger type = cloud storage

Event type = Finalize/create

Select the bucket you made earlier

done

next

entry point = thumbnail


index.js:


/* globals exports, require */

//jshint strict: false

//jshint esversion: 6

"use strict";

const crc32 = require("fast-crc32c");

const { Storage } = require('@google-cloud/storage');

const gcs = new Storage();

const { PubSub } = require('@google-cloud/pubsub');

const imagemagick = require("imagemagick-stream");

exports.thumbnail = (event, context) => {

  const fileName = event.name;

  const bucketName = event.bucket;

  const size = "64x64"

  const bucket = gcs.bucket(bucketName);

  const topicName = "REPLACE_WITH_YOUR_TOPIC ID";

  const pubsub = new PubSub();

  if ( fileName.search("64x64_thumbnail") == -1 ){

    // doesn't have a thumbnail, get the filename extension

    var filename_split = fileName.split('.');

    var filename_ext = filename_split[filename_split.length - 1];

    var filename_without_ext = fileName.substring(0, fileName.length - filename_ext.length );

    if (filename_ext.toLowerCase() == 'png' || filename_ext.toLowerCase() == 'jpg'){

      // only support png and jpg at this point

      console.log(`Processing Original: gs://${bucketName}/${fileName}`);

      const gcsObject = bucket.file(fileName);

      let newFilename = filename_without_ext + size + '_thumbnail.' + filename_ext;

      let gcsNewObject = bucket.file(newFilename);

      let srcStream = gcsObject.createReadStream();

      let dstStream = gcsNewObject.createWriteStream();

      let resize = imagemagick().resize(size).quality(90);

      srcStream.pipe(resize).pipe(dstStream);

      return new Promise((resolve, reject) => {

        dstStream

          .on("error", (err) => {

            console.log(`Error: ${err}`);

            reject(err);

          })

          .on("finish", () => {

            console.log(`Success: ${fileName} → ${newFilename}`);

              // set the content-type

              gcsNewObject.setMetadata(

              {

                contentType: 'image/'+ filename_ext.toLowerCase()

              }, function(err, apiResponse) {});

              pubsub

                .topic(topicName)

                .publisher()

                .publish(Buffer.from(newFilename))

                .then(messageId => {

                  console.log(`Message ${messageId} published.`);

                })

                .catch(err => {

                  console.error('ERROR:', err);

                });

          });

      });

    }

    else {

      console.log(`gs://${bucketName}/${fileName} is not an image I can handle`);

    }

  }

  else {

    console.log(`gs://${bucketName}/${fileName} already has a thumbnail`);

  }

};


 

package.json:


{

  "name": "thumbnails",

  "version": "1.0.0",

  "description": "Create Thumbnail of uploaded image",

  "scripts": {

    "start": "node index.js"

  },

  "dependencies": {

    "@google-cloud/pubsub": "^2.0.0",

    "@google-cloud/storage": "^5.0.0",

    "fast-crc32c": "1.0.4",

    "imagemagick-stream": "4.1.1"

  },

  "devDependencies": {},

  "engines": {

    "node": ">=4.3.2"

  }

}



Download this image: https://storage.googleapis.com/cloud-training/gsp315/map.jpg  

put it in your bucket after deployment of cloud function


GO TO IAM

remove username 2




Congratulations You have completed the Challenge Lab!

SAKURA SATIO



Comments

Popular posts from this blog

A Tour of Google Cloud Hands-on Labs [GSP282]

Link to the Lab:  https://www.cloudskillsboost.google/focuses/2794?parent=catalog Link to the Video:  https://youtu.be/KFjyI-o60W8 Link to the Channel:  https://www.youtube.com/channel/UCiWP5KYh4MWj-yp3j-DMIrA Answers are marked bold and are highlighted in light yellow This builds a temporary environment in Google Cloud. Start lab (button) Credit Time Score When the timer reaches 00:00:00, you will lose access to your temporary Google Cloud environment. False True Some labs have tracking, which scores your completion of hands-on lab activities. False True In order to receive completion credit for a lab that has tracking, you must complete the required hands-on lab activities. False True What field is NOT found in the left pane? Project ID System admin Password Open Google Console The username in the left panel, which resembles googlexxxxxx_student@qwiklabs.net, is a Cloud IAM identity. True False An organizing entity for anything you build with Google Cloud. Password...

Deploy and Manage Cloud Environments with Google Cloud: Challenge Lab [GSP314]

Link to the Lab:  https://google.qwiklabs.com/focuses/10417?parent=catalog Link to the youtube video:  https://youtu.be/eraSK1T45Do Link to my youtube channel:  https://www.youtube.com/channel/UCiWP5KYh4MWj-yp3j-DMIrA   DO NOT START WITHOUT LAB RESOURCES! DO NOT MAKE HASTE. COPY PASTE STEP BY STEP OTHERWISE IT WILL NOT WORK. TASK 1: GO TO COMPUTE ENGINE > VM INSTANCES > OPEN SSH OF kraken-jumphost TYPE THE COMMANDS IN SSH: cd /work/dm sed -i s/SET_REGION/us-east1/g prod-network.yaml gcloud deployment-manager deployments create prod-network --config=prod-network.yaml gcloud config set compute/zone us-east1-b gcloud container clusters create kraken-prod --num-nodes 2 --network kraken-prod-vpc --subnetwork kraken-prod-subnet --zone us-east1-b gcloud container clusters get-credentials kraken-prod cd /work/k8s for F in $(ls *.yaml); do kubectl create -f $F; done

Perform Foundational Data, ML, and AI Tasks in Google Cloud: Challenge Lab [GSP323]

Link to the Lab:  https://www.cloudskillsboost.google/focuses/11044?parent=catalog Link to the Video:  https://youtu.be/lkI8WscliSs Link to the Channel:  https://www.youtube.com/channel/UCiWP5KYh4MWj-yp3j-DMIrA STEPS (will be unique for everyone) storage →  bucket → create bucket with your Cloud Storage Bucket Name . For Access Control select Fine-Grained → Press create bigquery →  select project →  create dataset →  name= BigQuery Dataset Name open cloud shell gsutil cp gs://cloud-training/gsp323/lab.csv . cat lab.csv gsutil cp gs://cloud-training/gsp323/lab.schema . cat lab.schema copy the bigquery schema and store it somewhere go to bigquery go to dataset lab create table create table from = google cloud storage select file from GCS bucket = cloud-training/gsp323/lab.csv table name = customers enable edit as text paste the bigquery schema that you copied earlier create Go to dataproc clusters create cluster → Cluster on Compute Engine → Create ...