Pada kesempatan kali ini kita akan bahas solusi Cloud Run Functions: 3 Ways: Challenge Lab.
- Misalkan project berikut

- cek github ->https://github.com/prateekrajput08/Arcade-Google-Cloud-Labs/blob/main/Cloud%20Functions:%203%20Ways:%20Challenge%20Lab/TechCode.md
- Cek Video tutor ->https://www.youtube.com/watch?v=xxPCBepo4xw
- Masuk ke cloudshell eksekusi
gcloud services enable \
artifactregistry.googleapis.com \
cloudfunctions.googleapis.com \
cloudbuild.googleapis.com \
eventarc.googleapis.com \
run.googleapis.com \
logging.googleapis.com \
pubsub.googleapis.com
- Kemudian ini ( sesuaikan dengan soal )
export HTTP_FUNCTION=http-messenger
export FUNCTION_NAME=cs-monitor
export REGION=us-west1
- Lalu eksekusi
PROJECT_NUMBER=$(gcloud projects list --filter="project_id:$DEVSHELL_PROJECT_ID" --format='value(project_number)')
SERVICE_ACCOUNT=$(gsutil kms serviceaccount -p $PROJECT_NUMBER)
gcloud projects add-iam-policy-binding $DEVSHELL_PROJECT_ID \
--member serviceAccount:$SERVICE_ACCOUNT \
--role roles/pubsub.publisher
gsutil mb -l $REGION gs://$DEVSHELL_PROJECT_ID
export BUCKET="gs://$DEVSHELL_PROJECT_ID"
mkdir ~/$FUNCTION_NAME && cd $_
touch index.js && touch package.json
cat > index.js <<EOF
const functions = require('@google-cloud/functions-framework');
functions.cloudEvent('$FUNCTION_NAME', (cloudevent) => {
console.log('A new event in your Cloud Storage bucket has been logged!');
console.log(cloudevent);
});
EOF
cat > package.json <<EOF
{
"name": "nodejs-functions-gen2-codelab",
"version": "0.0.1",
"main": "index.js",
"dependencies": {
"@google-cloud/functions-framework": "^2.0.0"
}
}
EOF
gcloud functions deploy $FUNCTION_NAME \
--gen2 \
--runtime nodejs20 \
--entry-point $FUNCTION_NAME \
--source . \
--region $REGION \
--trigger-bucket $BUCKET \
--trigger-location $REGION \
--max-instances 2
Jika muncul error permission tunggu 5 – 10 menit baru eksekusi
gcloud functions deploy $FUNCTION_NAME \
--gen2 \
--runtime nodejs20 \
--entry-point $FUNCTION_NAME \
--source . \
--region $REGION \
--trigger-bucket $BUCKET \
--trigger-location $REGION \
--max-instances 2
- Terakhir eksekusi
cd ..
mkdir ~/HTTP_FUNCTION && cd $_
touch index.js && touch package.json
cat > index.js <<EOF
const functions = require('@google-cloud/functions-framework');
functions.http('$HTTP_FUNCTION', (req, res) => {
res.status(200).send('subscribe to quikclab');
});
EOF
cat > package.json <<EOF
{
"name": "nodejs-functions-gen2-codelab",
"version": "0.0.1",
"main": "index.js",
"dependencies": {
"@google-cloud/functions-framework": "^2.0.0"
}
}
EOF
gcloud functions deploy $HTTP_FUNCTION \
--gen2 \
--runtime nodejs20 \
--entry-point $HTTP_FUNCTION \
--source . \
--region $REGION \
--trigger-http \
--timeout 600s \
--max-instances 2 \
--min-instances 1
- completed
