IAM ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธ์ฆ์„ ์œ„ํ•œ ์ƒˆ ์ธ์Šคํ„ด์Šค ๋ฐ ๊ธฐ์กด ์ธ์Šคํ„ด์Šค ๊ตฌ์„ฑ

์ด ํŽ˜์ด์ง€์—๋Š” Cloud SQL IAM ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธ์ฆ์„ ์‚ฌ์šฉํ•˜๋„๋ก ๊ตฌ์„ฑ๋œ ์‚ฌ์šฉ์ž, ์„œ๋น„์Šค ๊ณ„์ • ๋˜๋Š” ๊ทธ๋ฃน์„ ํ—ˆ์šฉํ•˜๊ธฐ ์œ„ํ•ด Cloud SQL ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•˜๋Š” ์ ˆ์ฐจ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. Cloud SQL IAM์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ IAM ์ธ์ฆ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

์ƒˆ๋กœ ์ƒ์„ฑ๋œ ์ธ์Šคํ„ด์Šค์—๋Š” postgres ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹œ์ž‘ํ•˜๊ธฐ ์ „์—

  1. 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.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Install the gcloud CLI.

  5. ์™ธ๋ถ€ ID ๊ณต๊ธ‰์—…์ฒด(IdP)๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋จผ์ € ์ œํœด ID๋กœ gcloud CLI์— ๋กœ๊ทธ์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  6. gcloud CLI๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๋ ค๋ฉด, ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    gcloud init
  7. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  8. Verify that billing is enabled for your Google Cloud project.

  9. Install the gcloud CLI.

  10. ์™ธ๋ถ€ ID ๊ณต๊ธ‰์—…์ฒด(IdP)๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋จผ์ € ์ œํœด ID๋กœ gcloud CLI์— ๋กœ๊ทธ์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  11. gcloud CLI๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๋ ค๋ฉด, ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    gcloud init
  12. ์‚ฌ์šฉ์ž ๊ณ„์ •์— Cloud SQL ๊ด€๋ฆฌ์ž ๋ฐ Compute ๋ทฐ์–ด ์—ญํ• ์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

    IAM ํŽ˜์ด์ง€๋กœ ์ด๋™

    ์—ญํ•  ๋ฐ ๊ถŒํ•œ์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ

  13. ๋‹จ์ผ ํ”„๋กœ์ ํŠธ์— ๋ณด์œ ํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ์ธ์Šคํ„ด์Šค ์ˆ˜๋Š” ์ธ์Šคํ„ด์Šค์˜ ๋„คํŠธ์›Œํฌ ์•„ํ‚คํ…์ฒ˜์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

    • ์ƒˆ SQL ๋„คํŠธ์›Œํฌ ์•„ํ‚คํ…์ฒ˜: ์ธ์Šคํ„ด์Šค๋ฅผ ํ”„๋กœ์ ํŠธ๋‹น ์ตœ๋Œ€ 1,000๊ฐœ๊นŒ์ง€ ๋ณด์œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ์ด์ „ SQL ๋„คํŠธ์›Œํฌ ์•„ํ‚คํ…์ฒ˜: ์ธ์Šคํ„ด์Šค๋ฅผ ํ”„๋กœ์ ํŠธ๋‹น ์ตœ๋Œ€ 100๊ฐœ๊นŒ์ง€ ๋ณด์œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ๋‘ ์•„ํ‚คํ…์ฒ˜ ๋ชจ๋‘ ์‚ฌ์šฉ: ๋‘ ์•„ํ‚คํ…์ฒ˜์—์„œ์˜ ์ธ์Šคํ„ด์Šค ๋ฐฐํฌ ๋ฐฉ์‹์— ๋”ฐ๋ผ ํ•œ๋„๋Š” 100~1,000๊ฐœ์ž…๋‹ˆ๋‹ค.

    ์ƒํ–ฅ์„ ์š”์ฒญํ•˜๋ ค๋ฉด ์ง€์› ์ผ€์ด์Šค๋ฅผ ์ ‘์ˆ˜ํ•˜์„ธ์š”. ์ฝ๊ธฐ ๋ณต์ œ๋ณธ์€ ์ธ์Šคํ„ด์Šค๋กœ ๊ณ„์‚ฐ๋ฉ๋‹ˆ๋‹ค.

    IAM ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธ์ฆ์„ ์œ„ํ•œ ์ƒˆ ์ธ์Šคํ„ด์Šค ๊ตฌ์„ฑ

    IAM ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธ์ฆ์„ ์œ„ํ•ด ์ƒˆ Cloud SQL ์ธ์Šคํ„ด์Šค๋ฅผ ๊ตฌ์„ฑํ•˜๋ ค๋ฉด cloudsql.iam_authentication ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•œ ํ›„์—๋Š” Cloud SQL ์ธ์Šคํ„ด์Šค์— IAM ์‚ฌ์šฉ์ž, ์„œ๋น„์Šค ๊ณ„์ • ๋˜๋Š” ๊ทธ๋ฃน์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    IAM ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธ์ฆ์„ ์‚ฌ์šฉํ•˜๋„๋ก ์ƒˆ Cloud SQL ์ธ์Šคํ„ด์Šค๋ฅผ ๊ตฌ์„ฑํ•˜๋ ค๋ฉด ๋‹ค์Œ ์•ˆ๋‚ด๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

    ์ฝ˜์†”

    1. Google Cloud ์ฝ˜์†”์—์„œ Cloud SQL ์ธ์Šคํ„ด์Šค ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

      Cloud SQL ์ธ์Šคํ„ด์Šค๋กœ ์ด๋™

    2. ์ธ์Šคํ„ด์Šค ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
    3. PostgreSQL ์„ ํƒ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
    4. ์ธ์Šคํ„ด์Šค ID์˜ ์ด๋ฆ„์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
    5. ์ธ์Šคํ„ด์Šค ์ด๋ฆ„์€ ์™ธ๋ถ€์— ๊ณต๊ฐœ๋˜๋ฏ€๋กœ ๋ฏผ๊ฐํ•œ ์ •๋ณด๋‚˜ ๊ฐœ์ธ ์‹๋ณ„ ์ •๋ณด๋ฅผ ํฌํ•จํ•˜์ง€ ๋งˆ์„ธ์š”. ์ธ์Šคํ„ด์Šค ์ด๋ฆ„์— ํ”„๋กœ์ ํŠธ ID๋ฅผ ํฌํ•จํ•˜์ง€ ์•Š์•„๋„ ๋ฉ๋‹ˆ๋‹ค. ์ ์ ˆํ•œ ๊ฒฝ์šฐ ํ”„๋กœ์ ํŠธ ID๊ฐ€ ์ž๋™์œผ๋กœ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค(์˜ˆ: ๋กœ๊ทธ ํŒŒ์ผ์—์„œ).
    6. ๊ธฐ๋ณธ ๊ด€๋ฆฌ์ž์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
    7. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฒ„์ „ ๋ฉ”๋‰ด์—์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฒ„์ „์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
    8. ๋ฆฌ์ „ ๋ฐ ์˜์—ญ ๊ฐ€์šฉ์„ฑ ์„ ํƒ ์„น์…˜์—์„œ ์ธ์Šคํ„ด์Šค์˜ ๋ฆฌ์ „ ๋ฐ ์˜์—ญ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ์ธ์Šคํ„ด์Šค๋ฅผ ์ธ์Šคํ„ด์Šค์— ์•ก์„ธ์Šคํ•˜๋Š” ๋ฆฌ์†Œ์Šค์™€ ๊ฐ™์€ ๋ฆฌ์ „์— ๋ฐฐ์น˜ํ•ฉ๋‹ˆ๋‹ค. ์„ ํƒํ•œ ๋ฆฌ์ „์€ ๋‚˜์ค‘์— ์ˆ˜์ •ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์˜์—ญ์€ ์ผ๋ฐ˜์ ์œผ๋กœ ์ง€์ •ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
    9. ์ธ์Šคํ„ด์Šค ๋งž์ถค์„ค์ • ์„น์…˜์—์„œ ๊ตฌ์„ฑ ์˜ต์…˜ ํ‘œ์‹œ๋ฅผ ํด๋ฆญํ•œ ํ›„ ํ”Œ๋ž˜๊ทธ๋ฅผ ํ™•์žฅํ•ฉ๋‹ˆ๋‹ค.
    10. ํ”Œ๋ž˜๊ทธ ์ถ”๊ฐ€๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
    11. ํ”Œ๋ž˜๊ทธ ์„ ํƒ ๋ฉ”๋‰ด์—์„œ cloudsql.iam_authentication ํ”Œ๋ž˜๊ทธ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ์ด ํ”Œ๋ž˜๊ทธ์˜ ๊ฐ’์œผ๋กœ ์‚ฌ์šฉ์ด ์„ ํƒ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•œ ํ›„ ์™„๋ฃŒ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
    12. ํ•„์š”์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ์ธ์Šคํ„ด์Šค ์„ค์ •์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์„ค์ •์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์„ค์ •์„ ์ฐธ์กฐํ•˜์„ธ์š”.
    13. ์ธ์Šคํ„ด์Šค ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    gcloud

    --database-flags ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ cloudsql.iam_authentication=on์œผ๋กœ ์„ค์ •ํ•˜์—ฌ gcloud sql instances create๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    ๋‹ค์Œ์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

    • INSTANCE_NAME: ์ƒˆ ์ธ์Šคํ„ด์Šค์˜ ์ด๋ฆ„
    • POSTGRES_VERSION: PostgreSQL ๋ฒ„์ „(์˜ˆ: POSTGRES_9_6, POSTGRES_10, POSTGRES_11, ๋˜๋Š” POSTGRES_12)
    • NUMBER_OF_CORES: ๋จธ์‹ ์˜ ์ฝ”์–ด ์ˆ˜
    • AMOUNT_OF_MEMORY: ๋จธ์‹ ์˜ ๋ฉ”๋ชจ๋ฆฌ ์šฉ๋Ÿ‰. ํฌ๊ธฐ ๋‹จ์œ„๋ฅผ ์ œ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: 3072MiB ๋˜๋Š” 9GiB).
    • ZONE: ์„ ํ˜ธํ•˜๋Š” Compute Engine ์˜์—ญ(์˜ˆ: us-central1-a ๋˜๋Š” us-central1-b ๋“ฑ)
    • PASSWORD: ๋ฃจํŠธ ์‚ฌ์šฉ์ž์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ
    gcloud sql instances create INSTANCE_NAME \
    --database-version=POSTGRES_VERSION \
    --cpu=NUMBER_OF_CORES \
    --memory=AMOUNT_OF_MEMORY \
    --zone=ZONE_NAME \
    --root-password=PASSWORD \
    --database-flags=cloudsql.iam_authentication=on

    Terraform

    IAM ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธ์ฆ์ด ์‚ฌ์šฉ ์„ค์ •๋œ ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค๋ ค๋ฉด Terraform ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    resource "google_sql_database_instance" "default" {
      name             = "postgres-db-auth-instance-name-test"
      region           = "us-west4"
      database_version = "POSTGRES_14"
      settings {
        tier = "db-custom-2-7680"
        database_flags {
          name  = "cloudsql.iam_authentication"
          value = "on"
        }
      }
    }

    ๋ณ€๊ฒฝ์‚ฌํ•ญ ์ ์šฉ

    ํ”„๋กœ์ ํŠธ์— Terraform ๊ตฌ์„ฑ์„ ์ ์šฉํ•˜๋ ค๋ฉด Google Cloud ๋‹ค์Œ ์„น์…˜์˜ ๋‹จ๊ณ„๋ฅผ ์™„๋ฃŒํ•˜์„ธ์š”.

    Cloud Shell ์ค€๋น„

    1. Cloud Shell์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
    2. Terraform ๊ตฌ์„ฑ์„ ์ ์šฉํ•  ๊ธฐ๋ณธ Google Cloud ํ”„๋กœ์ ํŠธ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

      ์ด ๋ช…๋ น์–ด๋Š” ํ”„๋กœ์ ํŠธ๋‹น ํ•œ ๋ฒˆ๋งŒ ์‹คํ–‰ํ•˜๋ฉด ๋˜๋ฉฐ ์–ด๋–ค ๋””๋ ‰ํ„ฐ๋ฆฌ์—์„œ๋„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

      export GOOGLE_CLOUD_PROJECT=PROJECT_ID

      Terraform ๊ตฌ์„ฑ ํŒŒ์ผ์—์„œ ๋ช…์‹œ์  ๊ฐ’์„ ์„ค์ •ํ•˜๋ฉด ํ™˜๊ฒฝ ๋ณ€์ˆ˜๊ฐ€ ์žฌ์ •์˜๋ฉ๋‹ˆ๋‹ค.

    ๋””๋ ‰ํ„ฐ๋ฆฌ ์ค€๋น„

    ๊ฐ Terraform ๊ตฌ์„ฑ ํŒŒ์ผ์—๋Š” ์ž์ฒด ๋””๋ ‰ํ„ฐ๋ฆฌ(๋ฃจํŠธ ๋ชจ๋“ˆ์ด๋ผ๊ณ ๋„ ํ•จ)๊ฐ€ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    1. Cloud Shell์—์„œ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๋งŒ๋“ค๊ณ  ํ•ด๋‹น ๋””๋ ‰ํ„ฐ๋ฆฌ ๋‚ด์— ์ƒˆ ํŒŒ์ผ์„ ๋งŒ๋“œ์„ธ์š”. ํŒŒ์ผ ์ด๋ฆ„์—๋Š” .tf ํ™•์žฅ์ž๊ฐ€ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: main.tf). ์ด ํŠœํ† ๋ฆฌ์–ผ์—์„œ๋Š” ํŒŒ์ผ์„ main.tf๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
      mkdir DIRECTORY && cd DIRECTORY && touch main.tf
    2. ํŠœํ† ๋ฆฌ์–ผ์„ ๋”ฐ๋ผ ํ•˜๋Š” ๊ฒฝ์šฐ ๊ฐ ์„น์…˜์ด๋‚˜ ๋‹จ๊ณ„์—์„œ ์ƒ˜ํ”Œ ์ฝ”๋“œ๋ฅผ ๋ณต์‚ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

      ์ƒ˜ํ”Œ ์ฝ”๋“œ๋ฅผ ์ƒˆ๋กœ ๋งŒ๋“  main.tf์— ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค.

      ํ•„์š”ํ•œ ๊ฒฝ์šฐ GitHub์—์„œ ์ฝ”๋“œ๋ฅผ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” Terraform ์Šค๋‹ˆํŽซ์ด ์—”๋“œ ํˆฌ ์—”๋“œ ์†”๋ฃจ์…˜์˜ ์ผ๋ถ€์ธ ๊ฒฝ์šฐ์— ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค.

    3. ํ™˜๊ฒฝ์— ์ ์šฉํ•  ์ƒ˜ํ”Œ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๊ฒ€ํ† ํ•˜๊ณ  ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.
    4. ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
    5. Terraform์„ ์ดˆ๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค. ์ด ์ž‘์—…์€ ๋””๋ ‰ํ„ฐ๋ฆฌ๋‹น ํ•œ ๋ฒˆ๋งŒ ์ˆ˜ํ–‰ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.
      terraform init

      ์›ํ•˜๋Š” ๊ฒฝ์šฐ ์ตœ์‹  Google ๊ณต๊ธ‰์—…์ฒด ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด -upgrade ์˜ต์…˜์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

      terraform init -upgrade

    ๋ณ€๊ฒฝ์‚ฌํ•ญ ์ ์šฉ

    1. ๊ตฌ์„ฑ์„ ๊ฒ€ํ† ํ•˜๊ณ  Terraform์—์„œ ๋งŒ๋“ค๊ฑฐ๋‚˜ ์—…๋ฐ์ดํŠธํ•  ๋ฆฌ์†Œ์Šค๊ฐ€ ์˜ˆ์ƒ๊ณผ ์ผ์น˜ํ•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
      terraform plan

      ํ•„์š”์— ๋”ฐ๋ผ ๊ตฌ์„ฑ์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

    2. ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ํ”„๋กฌํ”„ํŠธ์— yes๋ฅผ ์ž…๋ ฅํ•˜์—ฌ Terraform ๊ตฌ์„ฑ์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.
      terraform apply

      Terraform์— '์ ์šฉ ์™„๋ฃŒ' ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค.

    3. ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ ค๋ฉด Google Cloud ํ”„๋กœ์ ํŠธ๋ฅผ ์—ฝ๋‹ˆ๋‹ค. Google Cloud ์ฝ˜์†”์—์„œ UI์˜ ๋ฆฌ์†Œ์Šค๋กœ ์ด๋™ํ•˜์—ฌ Terraform์ด ๋ฆฌ์†Œ์Šค๋ฅผ ๋งŒ๋“ค์—ˆ๊ฑฐ๋‚˜ ์—…๋ฐ์ดํŠธํ–ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

    ๋ณ€๊ฒฝ์‚ฌํ•ญ ์‚ญ์ œ

    ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์‚ญ์ œํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

    1. Terraform ๊ตฌ์„ฑ ํŒŒ์ผ์—์„œ ์‚ญ์ œ ๋ณดํ˜ธ๋ฅผ ์‚ฌ์šฉ ์ค‘์ง€ํ•˜๋ ค๋ฉด deletion_protection ์ธ์ˆ˜๋ฅผ false๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
      deletion_protection =  "false"
    2. ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ํ”„๋กฌํ”„ํŠธ์— yes๋ฅผ ์ž…๋ ฅํ•˜์—ฌ ์—…๋ฐ์ดํŠธ๋œ Terraform ๊ตฌ์„ฑ์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.
      terraform apply
    1. ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ํ”„๋กฌํ”„ํŠธ์— yes๋ฅผ ์ž…๋ ฅํ•˜์—ฌ ์ด์ „์— Terraform ๊ตฌ์„ฑ์— ์ ์šฉ๋œ ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

      terraform destroy

    REST v1

    ์ธ์Šคํ„ด์Šค ์ด๋ฆ„์€ ์™ธ๋ถ€์— ๊ณต๊ฐœ๋˜๋ฏ€๋กœ ๋ฏผ๊ฐํ•œ ์ •๋ณด๋‚˜ ๊ฐœ์ธ ์‹๋ณ„ ์ •๋ณด(PII)๋Š” ํฌํ•จํ•˜์ง€ ๋งˆ์„ธ์š”.

    ์ธ์Šคํ„ด์Šค ์ด๋ฆ„์— ํ”„๋กœ์ ํŠธ ID๋ฅผ ํฌํ•จํ•˜์ง€ ์•Š์•„๋„ ๋ฉ๋‹ˆ๋‹ค. (์˜ˆ: ๋กœ๊ทธ ํŒŒ์ผ์—์„œ) ํ•„์š”ํ•œ ๊ฒฝ์šฐ ํ”„๋กœ์ ํŠธ ID๊ฐ€ ์ž๋™์œผ๋กœ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

    ์š”์ฒญ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ๋‹ค์Œ์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

    • INSTANCE_ID: ์›ํ•˜๋Š” ์ธ์Šคํ„ด์Šค ID์ž…๋‹ˆ๋‹ค.
    • REGION: ์›ํ•˜๋Š” ๋ฆฌ์ „(์˜ˆ: us-east-1)์ž…๋‹ˆ๋‹ค.
    • PROJECT_ID: ํ”„๋กœ์ ํŠธ ID์ž…๋‹ˆ๋‹ค.
    • LOCATION_ID: ์œ„์น˜ ID์ž…๋‹ˆ๋‹ค.
    • DATABASE_VERSION: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฒ„์ „์˜ ์—ด๊ฑฐํ˜• ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด POSTGRES_12์ž…๋‹ˆ๋‹ค.
    • PASSWORD: ๋ฃจํŠธ ์‚ฌ์šฉ์ž์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ์ž…๋‹ˆ๋‹ค.
    • MACHINE_TYPE : db-custom-[CPUS]-[MEMORY_MBS]์™€ ๊ฐ™์€ ๋จธ์‹ (๋“ฑ๊ธ‰) ์œ ํ˜•์˜ ์—ด๊ฑฐํ˜• ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค.

    HTTP ๋ฉ”์„œ๋“œ ๋ฐ URL:

    POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/instances

    JSON ์š”์ฒญ ๋ณธ๋ฌธ:

    {
      "name": "INSTANCE_ID",
      "region": "REGION",
      "databaseVersion": "DATABASE_VERSION",
      "rootPassword": "PASSWORD",
      "settings": {
        "tier": "MACHINE_TYPE",
        "backupConfiguration": {
          "enabled": true
        },
        "databaseFlags": [
          {
            "name": "cloudsql.iam_authentication",
            "value": "on"
          }
        ]
      }
    }
    

    ์š”์ฒญ์„ ๋ณด๋‚ด๋ ค๋ฉด ๋‹ค์Œ ์˜ต์…˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ํŽผ์นฉ๋‹ˆ๋‹ค.

    ๋‹ค์Œ๊ณผ ๋น„์Šทํ•œ JSON ์‘๋‹ต์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

    {
      "kind": "sql#operation",
      "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
      "status": "PENDING",
      "user": "user@example.com",
      "insertTime": "2020-01-01T19:13:21.834Z",
      "operationType": "CREATE",
      "name": "OPERATION_ID",
      "targetId": "INSTANCE_ID",
      "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
      "targetProject": "PROJECT_ID"
    }
    
    ์ด ํƒœ์Šคํฌ์— ์ ํ•ฉํ•œ ๊ธฐ๋ณธ REST API ์š”์ฒญ์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์€ instances:insert ํŽ˜์ด์ง€์˜ API ํƒ์ƒ‰๊ธฐ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

    REST v1beta4

    ์ธ์Šคํ„ด์Šค ์ด๋ฆ„์€ ์™ธ๋ถ€์— ๊ณต๊ฐœ๋˜๋ฏ€๋กœ ๋ฏผ๊ฐํ•œ ์ •๋ณด๋‚˜ ๊ฐœ์ธ ์‹๋ณ„ ์ •๋ณด(PII)๋Š” ํฌํ•จํ•˜์ง€ ๋งˆ์„ธ์š”.

    ์ธ์Šคํ„ด์Šค ์ด๋ฆ„์— ํ”„๋กœ์ ํŠธ ID๋ฅผ ํฌํ•จํ•˜์ง€ ์•Š์•„๋„ ๋ฉ๋‹ˆ๋‹ค. (์˜ˆ: ๋กœ๊ทธ ํŒŒ์ผ์—์„œ) ํ•„์š”ํ•œ ๊ฒฝ์šฐ ํ”„๋กœ์ ํŠธ ID๊ฐ€ ์ž๋™์œผ๋กœ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

    ์š”์ฒญ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ๋‹ค์Œ์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

    • INSTANCE_ID: ์›ํ•˜๋Š” ์ธ์Šคํ„ด์Šค ID์ž…๋‹ˆ๋‹ค.
    • REGION: ์›ํ•˜๋Š” ๋ฆฌ์ „(์˜ˆ: us-east-1)์ž…๋‹ˆ๋‹ค.
    • PROJECT_ID: ํ”„๋กœ์ ํŠธ ID์ž…๋‹ˆ๋‹ค.
    • LOCATION_ID: ์œ„์น˜ ID์ž…๋‹ˆ๋‹ค.
    • DATABASE_VERSION: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฒ„์ „์˜ ์—ด๊ฑฐํ˜• ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด POSTGRES_12์ž…๋‹ˆ๋‹ค.
    • PASSWORD: ๋ฃจํŠธ ์‚ฌ์šฉ์ž์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ์ž…๋‹ˆ๋‹ค.
    • MACHINE_TYPE : db-custom-[CPUS]-[MEMORY_MBS]์™€ ๊ฐ™์€ ๋จธ์‹ (๋“ฑ๊ธ‰) ์œ ํ˜•์˜ ์—ด๊ฑฐํ˜• ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค.

    HTTP ๋ฉ”์„œ๋“œ ๋ฐ URL:

    POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/locations/LOCATION_ID/instances

    JSON ์š”์ฒญ ๋ณธ๋ฌธ:

    {
      "name": "INSTANCE_ID",
      "region": "REGION",
      "databaseVersion": "DATABASE_VERSION",
      "rootPassword": "PASSWORD",
      "settings": {
        "tier": "MACHINE_TYPE",
        "backupConfiguration": {
          "enabled": true
        },
        "databaseFlags": [
          {
            "name": "cloudsql.iam_authentication",
            "value": "on"
          }
        ]
      }
    }
    

    ์š”์ฒญ์„ ๋ณด๋‚ด๋ ค๋ฉด ๋‹ค์Œ ์˜ต์…˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ํŽผ์นฉ๋‹ˆ๋‹ค.

    ๋‹ค์Œ๊ณผ ๋น„์Šทํ•œ JSON ์‘๋‹ต์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

    {
      "kind": "sql#operation",
      "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID",
      "status": "PENDING",
      "user": "user@example.com",
      "insertTime": "2020-01-01T19:13:21.834Z",
      "operationType": "CREATE",
      "name": "OPERATION_ID",
      "targetId": "INSTANCE_ID",
      "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
      "targetProject": "PROJECT_ID"
    }
    
    ์ด ํƒœ์Šคํฌ์— ์ ํ•ฉํ•œ ๊ธฐ๋ณธ REST API ์š”์ฒญ์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์€ instances:insert ํŽ˜์ด์ง€์˜ API ํƒ์ƒ‰๊ธฐ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

    IAM ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธ์ฆ์„ ์œ„ํ•œ ๊ธฐ์กด ์ธ์Šคํ„ด์Šค ๊ตฌ์„ฑ

    IAM ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธ์ฆ์„ ์œ„ํ•ด ๊ธฐ์กด Cloud SQL ์ธ์Šคํ„ด์Šค๋ฅผ ๊ตฌ์„ฑํ•˜๋ ค๋ฉด cloudsql.iam_authentication ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•œ ํ›„์—๋Š” Cloud SQL ์ธ์Šคํ„ด์Šค์— IAM ์‚ฌ์šฉ์ž, ์„œ๋น„์Šค ๊ณ„์ • ๋˜๋Š” ๊ทธ๋ฃน์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    IAM ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธ์ฆ์„ ์‚ฌ์šฉํ•˜๋„๋ก ๊ธฐ์กด Cloud SQL ์ธ์Šคํ„ด์Šค๋ฅผ ๊ตฌ์„ฑํ•˜๋ ค๋ฉด ๋‹ค์Œ ์•ˆ๋‚ด๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

    ์ฝ˜์†”

    1. Google Cloud ์ฝ˜์†”์—์„œ Cloud SQL ์ธ์Šคํ„ด์Šค ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

      Cloud SQL ์ธ์Šคํ„ด์Šค๋กœ ์ด๋™

    2. ์ธ์Šคํ„ด์Šค์˜ ๊ฐœ์š” ํŽ˜์ด์ง€๋ฅผ ์—ด๋ ค๋ฉด ์ธ์Šคํ„ด์Šค ์ด๋ฆ„์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
    3. ์ˆ˜์ •์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
    4. ์ธ์Šคํ„ด์Šค ๋งž์ถค์„ค์ • ์„น์…˜์—์„œ ํ”Œ๋ž˜๊ทธ๋ฅผ ํ™•์žฅํ•ฉ๋‹ˆ๋‹ค.
    5. ํ”Œ๋ž˜๊ทธ ์ถ”๊ฐ€๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
    6. ํ”Œ๋ž˜๊ทธ ์„ ํƒ ๋ฉ”๋‰ด์—์„œ cloudsql.iam_authentication ํ”Œ๋ž˜๊ทธ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ์ด ํ”Œ๋ž˜๊ทธ์˜ ๊ฐ’์œผ๋กœ ์‚ฌ์šฉ์ด ์„ ํƒ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•œ ํ›„ ์™„๋ฃŒ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
    7. ํ•„์š”์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ์ธ์Šคํ„ด์Šค ์„ค์ •์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์„ค์ •์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์„ค์ •์„ ์ฐธ์กฐํ•˜์„ธ์š”.
    8. ์ €์žฅ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    gcloud

    gcloud CLI ์„ค์น˜ ๋ฐ ์‹œ์ž‘์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ gcloud CLI ์„ค์น˜๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”. Cloud Shell ์‹œ์ž‘ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ Cloud Shell ์‚ฌ์šฉ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

    ์ด ์ ˆ์ฐจ์—์„œ๋Š” gcloud sql instances patch๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    ๋‹ค์Œ์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

    • INSTANCE_NAME: ์ƒˆ ์ธ์Šคํ„ด์Šค์˜ ์ด๋ฆ„
    gcloud sql instances patch INSTANCE_NAME \
    --database-flags=cloudsql.iam_authentication=on

    ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋‹ค๋ฅธ ๋ชจ๋“  ๊ธฐ์กด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ”Œ๋ž˜๊ทธ ์„ค์ •์ด ์žฌ์„ค์ •๋ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ”Œ๋ž˜๊ทธ ์„ค์ •์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์•ˆ๋‚ด๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ”Œ๋ž˜๊ทธ ์„ค์ •์„ ์ฐธ์กฐํ•˜์„ธ์š”.


    REST v1

    ์š”์ฒญ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ๋‹ค์Œ์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

    • PROJECT_ID: ํ”„๋กœ์ ํŠธ ID์ž…๋‹ˆ๋‹ค.
    • LOCATION_ID: ์œ„์น˜ ID์ž…๋‹ˆ๋‹ค.
    • INSTANCE_ID: ์›ํ•˜๋Š” ์ธ์Šคํ„ด์Šค ID์ž…๋‹ˆ๋‹ค.
    • REGION: ์›ํ•˜๋Š” ๋ฆฌ์ „์ž…๋‹ˆ๋‹ค.
    • DATABASE_VERSION: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฒ„์ „์˜ ์—ด๊ฑฐํ˜• ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด POSTGRES_12์ž…๋‹ˆ๋‹ค.
    • PASSWORD: ๋ฃจํŠธ ์‚ฌ์šฉ์ž์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ์ž…๋‹ˆ๋‹ค.
    • MACHINE_TYPE : db-custom-[CPUS]-[MEMORY_MBS]์™€ ๊ฐ™์€ ๋จธ์‹ (๋“ฑ๊ธ‰) ์œ ํ˜•์˜ ์—ด๊ฑฐํ˜• ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค.

    HTTP ๋ฉ”์„œ๋“œ ๋ฐ URL:

    POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/instances

    JSON ์š”์ฒญ ๋ณธ๋ฌธ:

    {
      "name": "INSTANCE_ID",
      "region": "REGION",
      "databaseVersion": "DATABASE_VERSION",
      "rootPassword": "PASSWORD",
      "settings": {
        "tier": "MACHINE_TYPE",
        "backupConfiguration": {
          "enabled": true
        }
        "databaseFlags":
        [
          {
            "name": "cloudsql.iam_authentication",
            "value": "on"
          }
        ]
      }
    }
    

    ์š”์ฒญ์„ ๋ณด๋‚ด๋ ค๋ฉด ๋‹ค์Œ ์˜ต์…˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ํŽผ์นฉ๋‹ˆ๋‹ค.

    ๋‹ค์Œ๊ณผ ๋น„์Šทํ•œ JSON ์‘๋‹ต์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

    {
      "kind": "sql#operation",
      "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
      "status": "PENDING",
      "user": "user@example.com",
      "insertTime": "2020-01-01T19:13:21.834Z",
      "operationType": "CREATE",
      "name": "OPERATION_ID",
      "targetId": "INSTANCE_ID",
      "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
      "targetProject": "PROJECT_ID"
    }
    

    REST v1beta4

    ์š”์ฒญ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ๋‹ค์Œ์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

    • PROJECT_ID: ํ”„๋กœ์ ํŠธ ID์ž…๋‹ˆ๋‹ค.
    • LOCATION_ID: ์œ„์น˜ ID์ž…๋‹ˆ๋‹ค.
    • INSTANCE_ID: ์›ํ•˜๋Š” ์ธ์Šคํ„ด์Šค ID์ž…๋‹ˆ๋‹ค.
    • REGION: ์›ํ•˜๋Š” ๋ฆฌ์ „์ž…๋‹ˆ๋‹ค.
    • DATABASE_VERSION: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฒ„์ „์˜ ์—ด๊ฑฐํ˜• ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด POSTGRES_12์ž…๋‹ˆ๋‹ค.
    • PASSWORD: ๋ฃจํŠธ ์‚ฌ์šฉ์ž์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ์ž…๋‹ˆ๋‹ค.
    • MACHINE_TYPE : db-custom-[CPUS]-[MEMORY_MBS]์™€ ๊ฐ™์€ ๋จธ์‹ (๋“ฑ๊ธ‰) ์œ ํ˜•์˜ ์—ด๊ฑฐํ˜• ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค.

    HTTP ๋ฉ”์„œ๋“œ ๋ฐ URL:

    POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/locations/LOCATION_ID/instances

    JSON ์š”์ฒญ ๋ณธ๋ฌธ:

    {
      "name": "INSTANCE_ID",
      "region": "REGION",
      "databaseVersion": "DATABASE_VERSION",
      "rootPassword": "PASSWORD",
      "settings": {
        "tier": "MACHINE_TYPE",
        "backupConfiguration": {
          "enabled": true
        }
        "databaseFlags":
        [
          {
            "name": "cloudsql.iam_authentication",
            "value": "on"
          }
        ]
      }
    }
    

    ์š”์ฒญ์„ ๋ณด๋‚ด๋ ค๋ฉด ๋‹ค์Œ ์˜ต์…˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ํŽผ์นฉ๋‹ˆ๋‹ค.

    ๋‹ค์Œ๊ณผ ๋น„์Šทํ•œ JSON ์‘๋‹ต์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

    {
      "kind": "sql#operation",
      "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID",
      "status": "PENDING",
      "user": "user@example.com",
      "insertTime": "2020-01-01T19:13:21.834Z",
      "operationType": "CREATE",
      "name": "OPERATION_ID",
      "targetId": "INSTANCE_ID",
      "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
      "targetProject": "PROJECT_ID"
    }
    

    ๋‹ค์Œ ๋‹จ๊ณ„