Pada challenge ini, kita diminta untuk membuat service account
, menetapkan role
yang diperlukan, mengonfigurasi IAM permission
menggunakan gcloud CLI
, membuat role
khusus menggunakan YAML, dan menggunakan client library
untuk mengakses BigQuery dari service account
.
Task 2. Create a service account using the gcloud CLI
Pada lab ini, instance Compute Engine dengan nama lab-vm
telah disediakan. Kita akan menggunakan instance ini untuk menyelesaikan challenge ini.
Buka daftar compute instance dengan membuka
Navigation Menu
>Compute Engine
>VM instances
.Pada baris dengan instance bernama
lab-vm
, klikSSH
.Mulai mengonfigurasi environment gcloud. Di dalam sesi SSH, jalankan:
gcloud auth login --no-launch-browser
Kita akan mendapatkan URL untuk login. Salin URL tersebut dan buka di browser. Setelah login, salin kode verifikasi dan paste di terminal SSH.
Buat service account dengan nama
devops
:gcloud iam service-accounts create devops --display-name devops
Jika sudah selesai, tekan
Check my progress
pada GCSB untuk melanjutkan.
Task 3. Grant IAM permissions to a service account using the gcloud CLI
- Karena kita akan menggunakan project id dan service account beberapa kali, maka sebaiknya kita mengekspor project id dan service account ke dalam variabel lokal yang akan kita gunakan nantinya:
export PROJECTID=$(gcloud config get-value project)
- Sama seperti sebelumnya, ekspor service account ke dalam variabel lokal dengan nama
SA
:gcloud iam service-accounts list --filter "displayName=devops" SA=$(gcloud iam service-accounts list --format="value(email)" --filter "displayName=devops")
- Berikan role
iam.serviceAccountUser
dengan permissioncompute.instanceAdmin
ke service accountdevops
:gcloud projects add-iam-policy-binding $PROJECTID --member serviceAccount:$SA --role=roles/iam.serviceAccountUser gcloud projects add-iam-policy-binding $PROJECTID --member serviceAccount:$SA --role=roles/compute.instanceAdmin
- Jika sudah selesai, tekan
Check my progress
pada GCSB untuk melanjutkan.
Task 4. Create a compute instance with a service account attached using gcloud
Untuk task ini, VM bernama lab-vm
telah disediakan. SSH ke VM lab-vm
untuk memulai. Buat instance bernama vm-2
dengan service account devops
yang kita buat pada task 2:
gcloud compute instances create vm-2 \
--service-account=$SA \
--zone=$ZONE
Jika sudah selesai, tekan Check my progress
pada GCSB untuk melanjutkan.
Task 5. Create a custom role using a YAML file
- Buat YAML file dengan nama
role-definition.yaml
yang memiliki custom role dengan permissioncloudsql.instances.connect
dancloudsql.instances.get
:cat > role-definition.yaml <<EOF title: Custom Role description: Custom role with cloudsql.instances.connect and cloudsql.instances.get permissions includedPermissions: - cloudsql.instances.connect - cloudsql.instances.get EOF
- Jalankan command gcloud untuk membuat role pada level project menggunakan YAML file:
gcloud iam roles create customRole --project=$PROJECTID --file=role-definition.yaml
- Jika sudah selesai, tekan
Check my progress
pada GCSB untuk melanjutkan.
Task 6. Use the client libraries to access BigQuery from a service account
Untuk tugas ini, kita akan melakukan query terhadap dataset publik BigQuery dari suatu instance dengan bantuan service account yang telah dikonfigurasi roles yang diperlukan.
- Buat service account dengan nama
bigquery-qwiklab
dan berikan roleBigQuery Data Viewer
sebagaiBigQuery User
:gcloud iam service-accounts create bigquery-qwiklab --display-name bigquery-qwiklab SSA=$(gcloud iam service-accounts list --format="value(email)" --filter "displayName=bigquery-qwiklab") gcloud projects add-iam-policy-binding $PROJECTID --member=serviceAccount:$SSA --role=roles/bigquery.dataViewer gcloud projects add-iam-policy-binding $PROJECTID --member=serviceAccount:$SSA --role=roles/bigquery.user
- Buat VM instance dengan nama
bigquery-instance
dengan service accountbigquery-qwiklab
:gcloud compute instances create bigquery-instance --service-account=$SSA --scopes=https://www.googleapis.com/auth/bigquery --zone=$ZONE
- SSH ke instance
bigquery-instance
dan install dependencies yang dibutuhkan:export PROJECT_ID=$(gcloud config get-value project) sudo apt-get update sudo apt-get install -y git python3-pip pip3 install --upgrade pip pip3 install google-cloud-bigquery pip3 install pyarrow pip3 install pandas pip3 install db-dtypes
- Jalankan command berikut untuk membuat python file:
echo " from google.auth import compute_engine from google.cloud import bigquery credentials = compute_engine.Credentials( service_account_email='bigquery-qwiklab@$PROJECT_ID.iam.gserviceaccount.com') query = ''' SELECT name, SUM(number) as total_people FROM "bigquery-public-data.usa_names.usa_1910_2013" WHERE state = 'TX' GROUP BY name, state ORDER BY total_people DESC LIMIT 20 ''' client = bigquery.Client( project='$PROJECT_ID', credentials=credentials) print(client.query(query).to_dataframe()) " > query.py
- Jalankan script python yang telah dibuat:
python3 query.py
- Jika sudah selesai, tekan
Check my progress
pada GCSB untuk menyelesaikan challenge ini.
Links