ํ• ๋‹น๋Ÿ‰ ์˜ค๋ฅ˜ ๋ฌธ์ œ ํ•ด๊ฒฐ

ํ• ๋‹น๋Ÿ‰ ๊ฐ’์„ ์ดˆ๊ณผํ•˜๊ฑฐ๋‚˜ ํ• ๋‹น๋Ÿ‰ ํ”„๋กœ์ ํŠธ๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์„ค์ •ํ•˜์ง€ ์•Š๋Š” ๋“ฑ์˜ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์ด์œ ๋กœ ํ• ๋‹น๋Ÿ‰ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ ์•Œ๋ฆผ์„ ๋ฐ›์œผ๋ ค๋ฉด ํ• ๋‹น๋Ÿ‰ ์•Œ๋ฆผ ์„ค์ •์— ์„ค๋ช…๋œ ๋Œ€๋กœ ํŠน์ • ํ• ๋‹น๋Ÿ‰ ์˜ค๋ฅ˜์— ๋Œ€ํ•œ ์ปค์Šคํ…€ ์•Œ๋ฆผ์„ ๋งŒ๋“ค๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๋น„์œจ ํ• ๋‹น๋Ÿ‰ ์ดˆ๊ณผ

๋น„์œจ ํ• ๋‹น๋Ÿ‰์€ ๊ฐ ์„œ๋น„์Šค์— ๋งž๋Š” ์‚ฌ์ „ ์ •์˜๋œ ์‹œ๊ฐ„ ๊ฐ„๊ฒฉ์ด ์ง€๋‚˜๋ฉด ์žฌ์„ค์ •๋ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ํŠน์ • ์„œ๋น„์Šค์˜ ํ• ๋‹น๋Ÿ‰ ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

ํ• ๋‹น๋Ÿ‰ ๊ฐ’ ์ดˆ๊ณผ

ํ”„๋กœ์ ํŠธ์—์„œ ์„œ๋น„์Šค ์‚ฌ์šฉ ์ค‘์— ์ตœ๋Œ€ ํ• ๋‹น๋Ÿ‰ ๊ฐ’์„ ์ดˆ๊ณผํ•˜๋ฉด Google Cloud์—์„œ ์„œ๋น„์Šค์— ์•ก์„ธ์Šคํ•œ ๋ฐฉ๋ฒ•์— ๋”ฐ๋ผ ์˜ค๋ฅ˜๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

  • API ์š”์ฒญ ์‹œ ํ• ๋‹น๋Ÿ‰ ๊ฐ’์„ ์ดˆ๊ณผํ•˜๋ฉด Google Cloud ์—์„œ HTTP 413 REQUEST ENTITY TOO LARGE ์ƒํƒœ ์ฝ”๋“œ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์—์„œ BigQuery ๊ธฐ์กด ์ŠคํŠธ๋ฆฌ๋ฐ API๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ HTTP ์š”์ฒญ์ด 10MB๋ณด๋‹ค ํฌ๋ฉด 413 REQUEST ENTITY TOO LARGE ์ƒํƒœ ์ฝ”๋“œ๊ฐ€ ์ˆ˜์‹ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ดˆ๋‹น 300MB๋ฅผ ์ดˆ๊ณผํ•˜๋Š” ๊ฒฝ์šฐ์—๋„ ์ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ŠคํŠธ๋ฆฌ๋ฐ ์‚ฝ์ž…์„ ์ฐธ์กฐํ•˜์„ธ์š”.
  • HTTP/REST ์š”์ฒญ ์‹œ ํ• ๋‹น๋Ÿ‰ ๊ฐ’์„ ์ดˆ๊ณผํ•˜๋ฉด Google Cloud ์—์„œ HTTP 429 TOO MANY REQUESTS ์ƒํƒœ ์ฝ”๋“œ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
  • Compute Engine ํ• ๋‹น๋Ÿ‰์„ ์ดˆ๊ณผํ•˜๋ฉด ์š”์ฒญ์ด API, HTTP/REST, gRPC์—์„œ ์‹œ์ž‘๋˜์—ˆ๋Š”์ง€ ์—ฌ๋ถ€์— ๊ด€๊ณ„์—†์ด ์ผ๋ฐ˜์ ์œผ๋กœ Google Cloud ์—์„œ HTTP 403 QUOTA_EXCEEDED ์ƒํƒœ ์ฝ”๋“œ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ํ• ๋‹น๋Ÿ‰์ด ๋น„์œจ ํ• ๋‹น๋Ÿ‰์ด๋ฉด 403 RATE_LIMIT_EXCEEDED๊ฐ€ ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค.
  • gRPC๋ฅผ ์‚ฌ์šฉ ์‹œ ํ• ๋‹น๋Ÿ‰ ๊ฐ’์„ ์ดˆ๊ณผํ•˜๋ฉด Google Cloud ์—์„œ ResourceExhausted ์˜ค๋ฅ˜๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ด ์˜ค๋ฅ˜๊ฐ€ ํ‘œ์‹œ๋˜๋Š” ๋ฐฉ์‹์€ ์„œ๋น„์Šค์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.
  • Google Cloud CLI ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ• ๋‹น๋Ÿ‰ ๊ฐ’์„ ์ดˆ๊ณผํ•˜๋ฉด gcloud CLI๊ฐ€ ํ• ๋‹น๋Ÿ‰ ์ดˆ๊ณผ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅํ•˜๊ณ  ์ข…๋ฃŒ ์ฝ”๋“œ 1์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
  • ์„œ๋น„์Šค ์ถœ์‹œ ์ค‘ QUOTA_EXCEEDED ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋˜๋ฉด ๋‹ค์Œ ์„น์…˜์„ ์ฐธ์กฐํ•˜์„ธ์š”.

์„œ๋น„์Šค ์ถœ์‹œ ์ค‘ ํ• ๋‹น๋Ÿ‰ ๊ฐ’ ์ดˆ๊ณผ

๊ฒฝ์šฐ์— ๋”ฐ๋ผGoogle Cloud ์—์„œ ๋ฆฌ์†Œ์Šค ๋ฐ API์˜ ๊ธฐ๋ณธ ํ• ๋‹น๋Ÿ‰ ๊ฐ’์„ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ณ€๊ฒฝ์‚ฌํ•ญ์€ ์ ์ง„์ ์œผ๋กœ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ƒˆ ๊ธฐ๋ณธ ํ• ๋‹น๋Ÿ‰์ด ์ถœ์‹œ๋˜์—ˆ์„ ๋•Œ Google Cloud ์ฝ˜์†”์— ํ‘œ์‹œ๋˜๋Š” ํ• ๋‹น๋Ÿ‰ ๊ฐ’์€ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ œ๊ณต๋˜๋Š” ์ƒˆ ํ• ๋‹น๋Ÿ‰ ๊ฐ’์„ ๋ฐ˜์˜ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ• ๋‹น๋Ÿ‰ ์ ์šฉ์ด ์ง„ํ–‰ ์ค‘์ธ ๊ฒฝ์šฐ The future limit is the new default quota that will be available after a service rollout completes.๋ผ๋Š” ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋˜๋ฉด ์ธ์šฉ๋œ ํ• ๋‹น๋Ÿ‰ ๊ฐ’๊ณผ ํ–ฅํ›„ ๊ฐ’์€, Google Cloud ์ฝ˜์†”์— ํ‘œ์‹œ๋˜๋Š” ๋‚ด์šฉ์ด ๋‹ค๋ฅด๋”๋ผ๋„ ์˜ฌ๋ฐ”๋ฅด๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค.

  • ์ž์„ธํ•œ ๋‚ด์šฉ์„ ๋ณด๋ ค๋ฉด ๊ฐ์‚ฌ ๋กœ๊ทธ๋ฅผ ํ™•์ธํ•˜๊ณ  QUOTA_EXCEEDED ๋ฉ”์‹œ์ง€๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

        "status": {
          ...
          "message": "QUOTA_EXCEEDED",
          "details": [
            {
              ...
              "value": {
                "quotaExceeded": {
                  ...
                  "futureLimit": FUTUREVALUE
                }
              }
            }
          ]
        },
    
  • ํ˜„์žฌ ๋ฐ ์ตœ๋Œ€ ์‚ฌ์šฉ๋Ÿ‰์„ ํ‘œ์‹œํ•˜๋Š” ์ฐจํŠธ๋ฅผ ๋ณด๋ ค๋ฉด ํ• ๋‹น๋Ÿ‰ ๋ฐ ์‹œ์Šคํ…œ ํ•œ๋„ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•œ ๋‹ค์Œ ๋ชจ๋‹ˆํ„ฐ๋ง์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค. ํ…Œ์ด๋ธ” ๋์œผ๋กœ ์ด๋™ํ•ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ํ• ๋‹น๋Ÿ‰์ด ๋” ํ•„์š”ํ•œ ๊ฒฝ์šฐ์—๋Š” ํ• ๋‹น๋Ÿ‰ ์กฐ์ •์„ ์š”์ฒญํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ”„๋กœ์ ํŠธ ํ• ๋‹น๋Ÿ‰ ์ดˆ๊ณผ

ํ”„๋กœ์ ํŠธ ํ• ๋‹น๋Ÿ‰ ์ถ”๊ฐ€ ์š”์ฒญ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ํ”„๋กœ์ ํŠธ ํ• ๋‹น๋Ÿ‰ ์š”์ฒญ ์ง€์› ๋„์›€๋ง์„ ์ฐธ์กฐํ•˜์„ธ์š”.

API ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€

ํ• ๋‹น๋Ÿ‰ ํ”„๋กœ์ ํŠธ(๊ฒฐ์ œ ํ”„๋กœ์ ํŠธ๋ผ๊ณ ๋„ ํ•จ)๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์„ค์ •๋˜์ง€ ์•Š์œผ๋ฉด API ์š”์ฒญ์—์„œ ๋‹ค์Œ๊ณผ ์œ ์‚ฌํ•œ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • User credentials not supported by this API
  • API not enabled in the project
  • No quota project set

์ด๋Ÿฌํ•œ ์˜ค๋ฅ˜์™€ ๊ธฐํƒ€ ์˜ค๋ฅ˜๋Š” ํ• ๋‹น๋Ÿ‰ ํ”„๋กœ์ ํŠธ๋ฅผ ์„ค์ •ํ•˜์—ฌ ํ•ด๊ฒฐ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ํ• ๋‹น๋Ÿ‰ ํ”„๋กœ์ ํŠธ ๊ฐœ์š”๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

Google Cloud CLI ์˜ค๋ฅ˜

์ด ์„น์…˜์—์„œ๋Š” Google Cloud CLI(gcloud CLI)๋ฅผ ์‹œ์ž‘ํ•  ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์ผ๋ฐ˜์ ์ธ ๋ฌธ์ œ๋ฅผ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

์„ค์น˜ ๋ฐ ์ดˆ๊ธฐํ™”

Cloud ํ• ๋‹น๋Ÿ‰์— gcloud CLI๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ์„ค์น˜ํ•˜๊ณ  ์ดˆ๊ธฐํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  1. gcloud CLI ์„ค์น˜

    Cloud Shell์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ gcloud CLI๊ฐ€ ์‚ฌ์ „ ์„ค์น˜๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ์ด ๋‹จ๊ณ„๋ฅผ ๊ฑด๋„ˆ๋›ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  2. gcloud CLI ์ดˆ๊ธฐํ™”

  3. ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ๋ฒ ํƒ€ ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

    gcloud components install beta
    

ํ• ๋‹น๋Ÿ‰ ํ”„๋กœ์ ํŠธ ์„ค์ •

ํ• ๋‹น๋Ÿ‰ ํ”„๋กœ์ ํŠธ๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์œผ๋ฉด gcloud CLI ๋ช…๋ น์–ด์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์˜ค๋ฅ˜๋ฅผ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

PERMISSION_DENIED: Your application is authenticating by using local Application Default Credentials.
The cloudquotas.googleapis.com API requires a quota project, which is not set by default.

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด gcloud CLI ๋ช…๋ น์–ด์— --billing-project ํ”Œ๋ž˜๊ทธ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ํ• ๋‹น๋Ÿ‰ ํ”„๋กœ์ ํŠธ๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์„ค์ •ํ•˜๊ฑฐ๋‚˜ gcloud config set billing/quota_project CURRENT_PROJECT๋ฅผ ๋‹ค์‹œ ์‹คํ–‰ํ•˜์—ฌ ํ• ๋‹น๋Ÿ‰ ํ”„๋กœ์ ํŠธ๋ฅผ ํ˜„์žฌ ํ”„๋กœ์ ํŠธ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋‹ค์Œ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

gcloud CLI ๊ตฌ์„ฑ์š”์†Œ ์—…๋ฐ์ดํŠธ

ํ• ๋‹น๋Ÿ‰ ๋ช…๋ น์–ด์— Invalid choice๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๋‹ค๋Š” ์˜ค๋ฅ˜๊ฐ€ ํ‘œ์‹œ๋˜๋ฉด ์ด์ „ ๋ฒ„์ „์˜ gcloud CLI๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ gcloud CLI ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

gcloud components update

gcloud beta quotas ๋ช…๋ น์–ด์™€ ํ”Œ๋ž˜๊ทธ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ Google Cloud CLI ์ฐธ์กฐ์˜ gcloud ๋ฒ ํƒ€ ํ• ๋‹น๋Ÿ‰ ์„น์…˜์„ ์ฐธ์กฐํ•˜์„ธ์š”.