Pub/Sub ๋ฉ์์ง๋ฅผ ์ฌ์ฉํ์ฌ ์ํฌํ๋ก ํธ๋ฆฌ๊ฑฐ(gcloud CLI)
์ด ๋น ๋ฅธ ์์์์๋ Pub/Sub๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฒคํธ๋ฅผ ์์ ํ๋ Eventarc ํธ๋ฆฌ๊ฑฐ๋ฅผ ์ฌ์ฉํด์ ์ํฌํ๋ก๋ฅผ ์คํํ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ค๋๋ค. ํธ๋ฆฌ๊ฑฐ๋ Pub/Sub๋ฅผ ํตํด ๋ฐํ์ ์ธ์๋ก ์ ๊ณต๋๋ ์ด๋ฒคํธ๋ฅผ ๋์ ์ํฌํ๋ก์ ์ ๋ฌํ์ฌ ์ํฌํ๋ก๋ฅผ ์คํํฉ๋๋ค.
์ด ๋น ๋ฅธ ์์์์๋ ๋ค์์ ์ํํฉ๋๋ค.
- Workflows๋ฅผ ์ฌ์ฉํด์ Pub/Sub ๋ฉ์์ง๋ฅผ ๋์ฝ๋ฉํ๊ณ ๋ฐํํ๋ ์ํฌํ๋ก๋ฅผ ๋ง๋ค๊ณ ๋ฐฐํฌํฉ๋๋ค.
- Pub/Sub ์ฃผ์ ๋ฅผ Workflows ์ด๋ฒคํธ ์์ ์์ ์ฐ๊ฒฐํ๋ Eventarc ํธ๋ฆฌ๊ฑฐ๋ฅผ ๋ง๋ญ๋๋ค.
- Pub/Sub ์ฃผ์ ์ ๋ฉ์์ง๋ฅผ ๊ฒ์ํ์ฌ ์ด๋ฒคํธ๋ฅผ ์์ฑํฉ๋๋ค. ์ด ์ด๋ฒคํธ๋ ๋์ ์ํฌํ๋ก์ ๋ฐํ์ ์ธ์๋ก ์ ๋ฌ๋ฉ๋๋ค.
- Pub/Sub ๋ฉ์์ง๋ฅผ ์ํฌํ๋ก ์คํ ๊ฒฐ๊ณผ๋ก ํ์ธํฉ๋๋ค.
์์ํ๊ธฐ ์ ์
Google Cloud Workflows์ ๋น๊ณต๊ฐ ํ๋ฆฌ๋ทฐ์ ํ๋ก์ ํธ๋ฅผ ์ถ๊ฐํ๋๋ก ์์ฒญํ์ฌ ์ด ๊ธฐ๋ฅ์ ๋ํ ์ก์ธ์ค ๊ถํ์ ํ๋ณดํด์ผ ํฉ๋๋ค.
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Verify that billing is enabled for your Google Cloud project.
-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Verify that billing is enabled for your Google Cloud project.
- gcloud ๊ตฌ์ฑ์์๋ฅผ ์
๋ฐ์ดํธํฉ๋๋ค.
gcloud components update
- Compute Engine, Eventarc, Pub/Sub, Workflows API๋ฅผ ์ฌ์ฉ ์ค์ ํฉ๋๋ค.
gcloud services enable \ compute.googleapis.com \ eventarc.googleapis.com \ pubsub.googleapis.com \ workflows.googleapis.com \ workflowexecutions.googleapis.com
- ์ด ํํ ๋ฆฌ์ผ์์ ์ฌ์ฉ๋๋ ๊ตฌ์ฑ ๋ณ์๋ฅผ ์ค์ ํฉ๋๋ค.
export WORKFLOW_LOCATION=us-central1 export TRIGGER_LOCATION=us-central1 export PROJECT_ID=PROJECT_ID gcloud config set project ${PROJECT_ID} gcloud config set workflows/location ${WORKFLOW_LOCATION} gcloud config set eventarc/location ${TRIGGER_LOCATION}
-
ํ๋ก์ ํธ ์์ฑ์์๊ฒ๋ ๊ธฐ๋ณธ ์์ ์ ์ญํ (
roles/owner
)์ด ๋ถ์ฌ๋ฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก Identity and Access Management(IAM) ์ญํ ์๋ ๋๋ถ๋ถ์ Google Cloud๋ฆฌ์์ค์ ๋ํ ์ ์ฒด ์ก์ธ์ค์ ํ์ํ ๊ถํ์ด ํฌํจ๋๋ฉฐ, ์ด ๋จ๊ณ๋ฅผ ๊ฑด๋๋ธ ์ ์์ต๋๋ค.ํ๋ก์ ํธ ์์ฑ์๊ฐ ์๋๋ฉด ํ๋ก์ ํธ์์ ์ ํฉํ ์ฃผ ๊ตฌ์ฑ์์ ๋ํด ํ์ ๊ถํ์ ๋ถ์ฌํด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด ์ฃผ ๊ตฌ์ฑ์์ Google ๊ณ์ (์ต์ข ์ฌ์ฉ์)์ด๊ฑฐ๋ ์๋น์ค ๊ณ์ (์ ํ๋ฆฌ์ผ์ด์ ๋ฐ ์ปดํจํ ์ํฌ๋ก๋)์ผ ์ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ ์ด๋ฒคํธ ๋์์ ์ญํ ๋ฐ ๊ถํ ํ์ด์ง๋ฅผ ์ฐธ์กฐํ์ธ์.
ํ์ ๊ถํ
๋น ๋ฅธ ์์์ ์๋ฃํ๋ ๋ฐ ํ์ํ ๊ถํ์ ์ป์ผ๋ ค๋ฉด ๊ด๋ฆฌ์์๊ฒ ํ๋ก์ ํธ์ ๋ํ ๋ค์ IAM ์ญํ ์ ๋ถ์ฌํด ๋ฌ๋ผ๊ณ ์์ฒญํ์ธ์.
-
Eventarc ๊ด๋ฆฌ์(
roles/eventarc.admin
) -
๋ก๊ทธ ๋ทฐ ์ ๊ทผ์ (
roles/logging.viewAccessor
) -
ํ๋ก์ ํธ IAM ๊ด๋ฆฌ์(
roles/resourcemanager.projectIamAdmin
) -
Pub/Sub ๊ฒ์์(
roles/pubsub.publisher
) -
์๋น์ค ๊ณ์ ๊ด๋ฆฌ์(
roles/iam.serviceAccountAdmin
) -
์๋น์ค ๊ณ์ ์ฌ์ฉ์(
roles/iam.serviceAccountUser
) -
์๋น์ค ์ฌ์ฉ๋ ๊ด๋ฆฌ์(
roles/serviceusage.serviceUsageAdmin
) -
Workflows ๊ด๋ฆฌ์(
roles/workflows.admin
)
์ญํ ๋ถ์ฌ์ ๋ํ ์์ธํ ๋ด์ฉ์ ํ๋ก์ ํธ, ํด๋, ์กฐ์ง์ ๋ํ ์ก์ธ์ค ๊ด๋ฆฌ๋ฅผ ์ฐธ์กฐํ์ธ์.
์ปค์คํ ์ญํ ์ด๋ ๋ค๋ฅธ ์ฌ์ ์ ์๋ ์ญํ ์ ํตํด ํ์ํ ๊ถํ์ ์ป์ ์๋ ์์ต๋๋ค.
-
Eventarc ๊ด๋ฆฌ์(
ํ ์คํธ ๋ชฉ์ ์ผ๋ก Eventarc ํธ๋ฆฌ๊ฑฐ์ ์ฐ๊ฒฐํ ๋ ํธ๋ฆฌ๊ฑฐ์ ID๋ฅผ ๋ํ๋ด๊ธฐ ์ํด Compute Engine ๊ธฐ๋ณธ ์๋น์ค ๊ณ์ ์ ๊ธฐ๋กํด ๋ก๋๋ค. ์ด ์๋น์ค ๊ณ์ ์ Compute Engine์ ์ฌ์ฉํ๋ Google Cloud ์๋น์ค๋ฅผ ์ฌ์ฉ ์ค์ ํ๊ฑฐ๋ ์ฌ์ฉํ ํ์ ๋ค์ ์ด๋ฉ์ผ ํ์์ผ๋ก ์๋ ์์ฑ๋ฉ๋๋ค.
PROJECT_NUMBER-compute@developer.gserviceaccount.com
์ฌ๊ธฐ์์
PROJECT_NUMBER
๋ฅผ Google Cloudํ๋ก์ ํธ ๋ฒํธ๋ก ๋ฐ๊ฟ๋๋ค. Google Cloud ์ฝ์์ ์์ ํ์ด์ง์์ ๋๋ ๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํ์ฌ ํ๋ก์ ํธ ๋ฒํธ๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค.gcloud projects describe PROJECT_ID --format='value(projectNumber)'
ํ๋ก๋์ ํ๊ฒฝ์ ๊ฒฝ์ฐ ์ ์๋น์ค ๊ณ์ ์ ๋ง๋ค๊ณ ํ์ํ ์ต์ํ์ ๊ถํ์ ํฌํจํ๊ณ ์ต์ ๊ถํ ์์น์ ๋ฐ๋ฅด๋ ํ๋ ์ด์์ IAM ์ญํ ์ ๋ถ์ฌํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
- Compute Engine ๊ธฐ๋ณธ ์๋น์ค ๊ณ์ ์ ํ๋ก์ ํธ์ ๋ํ Workflows ํธ์ถ์ ์ญํ (
roles/workflows.invoker
)์ ๋ถ์ฌํ์ฌ ๊ณ์ ์ ์ํฌํ๋ก ์คํ์ ํธ๋ฆฌ๊ฑฐํ ๊ถํ์ ๋ถ์ฌํฉ๋๋ค.gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role=roles/workflows.invoker
- 2021๋
4์ 8์ผ ์ด์ ์ Cloud Pub/Sub ์๋น์ค ์์ด์ ํธ๋ฅผ ์ฌ์ฉ ์ค์ ํ์ฌ ์ธ์ฆ๋ Pub/Sub ํธ์ ์์ฒญ์ ์ง์ํ ๊ฒฝ์ฐ ์๋น์ค ๊ณ์ ํ ํฐ ์์ฑ์ ์ญํ (
roles/iam.serviceAccountTokenCreator
)์ ์๋น์ค ์์ด์ ํธ์ ๋ถ์ฌํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ๊ธฐ๋ณธ์ ์ผ๋ก ์ด ์ญํ ์ด ๋ถ์ฌ๋ฉ๋๋ค.gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com \ --role=roles/iam.serviceAccountTokenCreator
์ํฌํ๋ก ์์ฑ ๋ฐ ๋ฐฐํฌ
Pub/Sub ์ฃผ์ ์ ๊ฒ์๋ ๋ฉ์์ง๊ฐ HTTP ์์ฒญ์ผ๋ก ์ํฌํ๋ก๋ฅผ ํธ๋ฆฌ๊ฑฐํ ๋ ์คํ๋๋ ์ํฌํ๋ก๋ฅผ ๋ง๋ค๊ณ ๋ฐฐํฌํฉ๋๋ค.
- ํฐ๋ฏธ๋ ๋๋ Cloud Shell์ ์ฝ๋๋ค.
- ํ ๋๋ ํฐ๋ฆฌ์
myFirstWorkflow.yaml
๋๋myFirstWorkflow.json
์ด๋ผ๋ ์ด๋ฆ์ ์ ํ์ผ์ ๋ง๋ญ๋๋ค. - ๋ค์์ ๋ณต์ฌํ์ฌ ์ ํ์ผ์ ๋ถ์ฌ๋ฃ์ ํ ์ ์ฅํฉ๋๋ค.
YAML
main: params: [event] steps: - decode_pubsub_message: assign: - base64: ${base64.decode(event.data.message.data)} - message: ${text.decode(base64)} - return_pubsub_message: return: ${message}
JSON
{ "main": { "params": [ "event" ], "steps": [ { "decode_pubsub_message": { "assign": [ { "base64": "${base64.decode(event.data.message.data)}" }, { "message": "${text.decode(base64)}" } ] } }, { "return_pubsub_message": { "return": "${message}" } } ] } }
- ์ํฌํ๋ก๋ฅผ ๋ฐฐํฌํฉ๋๋ค.
์์ ์ํฌํ๋ก์ JSON ๋ฒ์ ์ ๋ณต์ฌํ ๊ฒฝ์ฐexport MY_WORKFLOW=myFirstWorkflow gcloud workflows deploy ${MY_WORKFLOW} --source=myFirstWorkflow.yaml
.yaml
์.json
์ผ๋ก ๋ฐ๊ฟ๋๋ค.
Eventarc ํธ๋ฆฌ๊ฑฐ ๋ง๋ค๊ธฐ
๋ฉ์์ง๊ฐ Pub/Sub ์ฃผ์ ์ ๊ฒ์๋์์ผ๋ฉด ์ด๋ฒคํธ๊ฐ ์ํฌํ๋ก๋ฅผ ํธ๋ฆฌ๊ฑฐํฉ๋๋ค.
- Pub/Sub ๋ฉ์์ง๋ฅผ ๋ฆฌ์จํ๋ ํธ๋ฆฌ๊ฑฐ๋ฅผ ๋ง๋ญ๋๋ค.
์ Pub/Sub ์ฃผ์
gcloud eventarc triggers create events-pubsub-trigger \ --destination-workflow=${MY_WORKFLOW} \ --destination-workflow-location=${WORKFLOW_LOCATION} \ --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \ --service-account="PROJECT_NUMBER-compute@developer.gserviceaccount.com"
์ด๋ ๊ฒ ํ๋ฉด ์ Pub/Sub ์ฃผ์ ์
events-pubsub-trigger
๋ผ๋ ํธ๋ฆฌ๊ฑฐ๊ฐ ์์ฑ๋ฉ๋๋ค.๊ธฐ์กด Pub/Sub ์ฃผ์
gcloud eventarc triggers create events-pubsub-trigger \ --destination-workflow=${MY_WORKFLOW} \ --destination-workflow-location=${WORKFLOW_LOCATION} \ --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \ --service-account="PROJECT_NUMBER-compute@developer.gserviceaccount.com" \ --transport-topic=TOPIC_ID
TOPIC_ID
๋ฅผ ๊ธฐ์กด Pub/Sub ์ฃผ์ ์ ID๋ก ๋ฐ๊ฟ๋๋ค.๊ธฐ์กด Pub/Sub ์ฃผ์ ์ ๋ํ
events-pubsub-trigger
๋ผ๋ ์ด๋ฆ์ ํธ๋ฆฌ๊ฑฐ๋ฅผ ๋ง๋ญ๋๋ค.Google Cloud ํ๋ก์ ํธ์์ ์ฒ์์ผ๋ก Eventarc ํธ๋ฆฌ๊ฑฐ๋ฅผ ๋ง๋ค ๋๋ Eventarc ์๋น์ค ์์ด์ ํธ๋ฅผ ํ๋ก๋น์ ๋ํ๋ ๋ฐ ์๊ฐ์ด ์ง์ฐ๋ ์ ์์ต๋๋ค. ์ด ๋ฌธ์ ๋ ์ผ๋ฐ์ ์ผ๋ก ํธ๋ฆฌ๊ฑฐ๋ฅผ ๋ค์ ๋ง๋ค๋ฉด ํด๊ฒฐํ ์ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ ๊ถํ ๊ฑฐ๋ถ ์ค๋ฅ๋ฅผ ์ฐธ์กฐํ์ธ์.
- ํธ๋ฆฌ๊ฑฐ๊ฐ ์ฑ๊ณต์ ์ผ๋ก ์์ฑ๋์๋์ง ํ์ธํ์ธ์.
gcloud eventarc triggers describe events-pubsub-trigger --location=${TRIGGER_LOCATION}
์ถ๋ ฅ์ ์์ฑ ์๊ฐ ๋ฐ ํธ๋ฆฌ๊ฑฐ ์์น๊ฐ ๋์ด๋ ๋ค์ ๋ชฉ๋ก๊ณผ ๋น์ทํ๊ฒ ํ์๋ฉ๋๋ค.
createTime: '2021-10-14T15:15:43.872360951Z' [...] name: projects/PROJECT_ID/locations/us-central1/triggers/events-pubsub-trigger
์ด๋ฒคํธ ์์ฑ ๋ฐ ํ์ธ
Pub/Sub ์ฃผ์ ์ ๋ฉ์์ง๋ฅผ ๊ฒ์ํ์ฌ ์ด๋ฒคํธ๋ฅผ ์์ฑํ๊ณ ์ํฌํ๋ก๋ฅผ ํธ๋ฆฌ๊ฑฐํฉ๋๋ค. ์์ฑ๋ ์ด๋ฒคํธ๊ฐ ์ํฌํ๋ก์ ๋ฐํ์ ์ธ์๋ก ์ ๋ฌ๋๊ณ , ์ด๋ Pub/Sub ๋ฉ์์ง๋ฅผ ์ํฌํ๋ก ์คํ ๊ฒฐ๊ณผ๋ก ๋ฐํํฉ๋๋ค. ์ํฌํ๋ก์ ์ ๋ฌํ๋ ์ด๋ฒคํธ ํฌ๊ธฐ๊ฐ 512KB๋ฅผ ์ด๊ณผํ์ง ์๋๋ก ํด์ผ ํฉ๋๋ค.
์ Pub/Sub ์ฃผ์ ์ ๋ํด ํธ๋ฆฌ๊ฑฐ๋ฅผ ๋ง๋ค์์ผ๋ฉด ์์ฑ๋ Pub/Sub ์ฃผ์ ๋ฅผ ์ฐพ์์ ํ๊ฒฝ ๋ณ์๋ก ์ค์ ํฉ๋๋ค.
export TOPIC_ID=$(basename $(gcloud eventarc triggers describe events-pubsub-trigger --format='value(transport.pubsub.topic)'))
์ํฌํ๋ก๋ฅผ ํธ๋ฆฌ๊ฑฐํ๊ธฐ ์ํด ๋ฉ์์ง๋ฅผ Pub/Sub ์ฃผ์ ์ ์ ์กํฉ๋๋ค.
gcloud pubsub topics publish $TOPIC_ID --message "Hello there"
์์ฑ๋ ์ด๋ฒคํธ๊ฐ ์ํฌํ๋ก์ ๋ฐํ์ ์ธ์๋ก ์ ๋ฌ๋๊ณ "Hello there" ๋ฉ์์ง๊ฐ ๋ฐํ๋ฉ๋๋ค.
์ํฌํ๋ก ์คํ์ด ํธ๋ฆฌ๊ฑฐ๋์๋์ง ํ์ธํ๋ ค๋ฉด ๋ง์ง๋ง์ 5๊ฐ ์คํ์ ๋์ดํฉ๋๋ค.
gcloud workflows executions list ${MY_WORKFLOW} --limit=5
์ถ๋ ฅ์ ๋ค์๊ณผ ์ ์ฌํด์ผ ํ๋ฉฐ, ๊ฐ ์ํฌํ๋ก ์คํ์์
SUCCEEDED
์ ๋์ผํ NAME ๋ฐ STATE๋ฅผ ๋์ดํด์ผ ํฉ๋๋ค.NAME: projects/606789101455/locations/us-central1/workflows/myFirstWorkflow/executions/8c02b8f1-8836-4a6d-99d9-fc321eb9668f STATE: SUCCEEDED START_TIME: 2021-09-13T19:15:10.275677049Z END_TIME: 2021-09-13T19:15:10.963136883Z NAME: projects/606789101455/locations/us-central1/workflows/myFirstWorkflow/executions/a6319d9d-36a6-4117-904e-3d1118bdc90a STATE: SUCCEEDED START_TIME: 2021-09-13T17:28:51.492864252Z END_TIME: 2021-09-13T17:28:52.227212414Z
์์ ์์์์
NAME
ํ๋์a6319d9d-36a6-4117-904e-3d1118bdc90a
๋ ์ํฌํ๋ก ์คํ์ ID์ ๋๋ค. ๋ค์ ๋จ๊ณ์์ ์ฌ์ฉํ ์คํ ID๋ฅผ ๋ณต์ฌํฉ๋๋ค.์คํ ์ํ๋ฅผ ๋ณด๋ ค๋ฉด ๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
gcloud workflows executions describe WORKFLOW_EXECUTION_ID --workflow=${MY_WORKFLOW}
WORKFLOW_EXECUTION_ID
๋ฅผ Pub/Sub ์ฃผ์ ์ ๊ฒ์ ์๊ฐ๊ณผ ์ผ์นํ๋ ์ํฌํ๋ก ์คํ ID๋ก ๋ฐ๊ฟ๋๋ค. ์ถ๋ ฅ์ ๋ค์๊ณผ ๋น์ทํฉ๋๋ค.argument: [...] endTime: '2021-09-13T17:28:47.301012152Z' name: projects/1234567/locations/us-central1/workflows/myFirstWorkflow/executions/f72bc6d4-5ea0-4dfb-bb14-2dae82303120 result: 'Hello there' startTime: '2021-09-13T17:28:51.492864252Z' state: SUCCEEDED
Pub/Sub ๋ฉ์์ง๊ฐ ๊ฒ์๋
publish_time
๊ณผ ์ํฌํ๋ก ์คํstartTime
์ด ์๋ก ์ผ์นํ๋์ง ํ์ธํฉ๋๋ค.
์๊ณ ํ์ จ์ต๋๋ค. Eventarc๋ฅผ ์ฌ์ฉํ์ฌ Workflows ์ด๋ฒคํธ ์์ ์๋ฅผ ํธ๋ฆฌ๊ฑฐํ Pub/Sub ์ฃผ์ ๋ฅผ ์ฌ์ฉํด์ ์ฑ๊ณต์ ์ผ๋ก ์ด๋ฒคํธ๋ฅผ ์์ฑํ์ต๋๋ค.
์ญ์
- ๋ง๋ ์ํฌํ๋ก๋ฅผ ์ญ์ ํฉ๋๋ค.
๊ณ์ ์งํํ ์ง ๋ฌป๋ ๋ฉ์์ง๊ฐ ํ์๋๋ฉดgcloud workflows delete ${MY_WORKFLOW}
y
๋ฅผ ์ ๋ ฅํฉ๋๋ค. - ๋ง๋ ํธ๋ฆฌ๊ฑฐ๋ฅผ ์ญ์ ํฉ๋๋ค.
gcloud eventarc triggers delete events-pubsub-trigger
- ๋๋ Google Cloud ํ๋ก์ ํธ๋ฅผ ์ญ์ ํ์ฌ ๋น์ฉ ์ฒญ๊ตฌ๋ฅผ ๋ฐฉ์งํ ์ ์์ต๋๋ค. Google Cloud ํ๋ก์ ํธ๋ฅผ ์ญ์ ํ๋ฉด ํ๋ก์ ํธ ๋ด์์ ์ฌ์ฉ๋๋ ๋ชจ๋ ๋ฆฌ์์ค์ ๋ํ ๋น์ฉ ์ฒญ๊ตฌ๊ฐ ์ค์ง๋ฉ๋๋ค.
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID