์—์ด์ „ํŠธ ๊ธฐ๋ฐ˜ ์ „์†ก ๊ถŒํ•œ

์—์ด์ „ํŠธ ๊ธฐ๋ฐ˜ ์ „์†ก์„ ๋งŒ๋“ค๊ธฐ ์ „์— ๋‹ค์Œ ํ•ญ๋ชฉ์— ๋Œ€ํ•œ ๊ถŒํ•œ์„ ๊ตฌ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ์ „์†ก์„ ๋งŒ๋“œ๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ์‚ฌ์šฉ์ž ๋˜๋Š” ์‚ฌ์šฉ์ž ๊ด€๋ฆฌํ˜• ์„œ๋น„์Šค ๊ณ„์ •. ์ด ๊ณ„์ •์€ Google Cloud ์ฝ˜์†”์— ๋กœ๊ทธ์ธ๋œ ๊ณ„์ •์ด๊ฑฐ๋‚˜ gcloud CLI์— ์ธ์ฆํ•  ๋•Œ ์ง€์ •๋œ ๊ณ„์ •์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ๊ณ„์ •์€ ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž ๊ณ„์ • ๋˜๋Š” ์‚ฌ์šฉ์ž ๊ด€๋ฆฌํ˜• ์„œ๋น„์Šค ๊ณ„์ •์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • Google ๊ด€๋ฆฌ ์„œ๋น„์Šค ๊ณ„์ •์€ ์„œ๋น„์Šค ์—์ด์ „ํŠธ๋ผ๊ณ ๋„ ํ•˜๋ฉฐ Storage Transfer Service์—์„œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด ๊ณ„์ •์€ ์ผ๋ฐ˜์ ์œผ๋กœ project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com ํ˜•์‹์„ ์‚ฌ์šฉํ•˜๋Š” ์ด๋ฉ”์ผ ์ฃผ์†Œ๋กœ ์‹๋ณ„๋ฉ๋‹ˆ๋‹ค.

  • ์ „์†ก ์—์ด์ „ํŠธ์— Google Cloud ๊ถŒํ•œ์„ ์ œ๊ณตํ•˜๋Š” ์ „์†ก ์—์ด์ „ํŠธ ๊ณ„์ •. ์ „์†ก ์—์ด์ „ํŠธ ๊ณ„์ •์€ ์„ค์น˜ํ•˜๋Š” ์‚ฌ์šฉ์ž์˜ ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด ๋˜๋Š” ์‚ฌ์šฉ์ž ๊ด€๋ฆฌํ˜• ์„œ๋น„์Šค ๊ณ„์ •์˜ ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ธ์ฆํ•ฉ๋‹ˆ๋‹ค.

IAM ์—ญํ•  ๋ถ€์—ฌ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ ๋ถ€์—ฌ, ๋ณ€๊ฒฝ, ์ทจ์†Œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๊ถŒํ•œ ๋ถ€์—ฌ ๋ฐฉ๋ฒ•

gcloud CLI๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž/์‚ฌ์šฉ์ž ๊ด€๋ฆฌ ์„œ๋น„์Šค ๊ณ„์ • ๋ฐ Google ๊ด€๋ฆฌ ์„œ๋น„์Šค ๊ณ„์ •์— ํ•„์š”ํ•œ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ถŒํ•œ์ด ์žˆ๋Š” ์‚ฌ์šฉ์ž๋Š” ์ „์†ก ์ž‘์—…์„ ์ƒ์„ฑ, ํŽธ์ง‘, ์‚ญ์ œํ•˜๊ณ  ๋Œ€์—ญํญ ํ•œ๋„๋ฅผ ์„ค์ •ํ•˜๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๊ถŒํ•œ์ด ์กฐ์ง ์ •์ฑ…์— ๋น„ํ•ด ๋„ˆ๋ฌด ๊ด‘๋ฒ”์œ„ํ•˜๋ฉด Storage Transfer Service์— ํ•„์š”ํ•œ ์ตœ์†Œ ๊ถŒํ•œ์€ ์ด ๋ฌธ์„œ์˜ ์ดํ›„ ์„น์…˜์„ ์ฐธ์กฐํ•˜์„ธ์š”.

๊ธฐ์กด ๊ถŒํ•œ์„ ๊ฒ€์‚ฌํ•˜๊ณ  ๋ˆ„๋ฝ๋œ ์—ญํ• ์„ ์ถœ๋ ฅํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

gcloud transfer authorize

์ด๋Ÿฌํ•œ ์—ญํ• ์„ ์ž๋™์œผ๋กœ ์ ์šฉํ•˜๋ ค๋ฉด --add-missing ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

gcloud transfer authorize --add-missing

์‚ฌ์šฉ์ž ๊ด€๋ฆฌ ์„œ๋น„์Šค ๊ณ„์ •์— ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋ ค๋ฉด ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค ํŒŒ์ผ์„ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.

gcloud transfer authorize --add-missing --creds-file=path/to/key.json

์„œ๋น„์Šค ๊ณ„์ •์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์€ ์„œ๋น„์Šค ๊ณ„์ • ๋งŒ๋“ค๊ธฐ ๋ฐ ๊ด€๋ฆฌ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์ด ๋ช…๋ น์–ด๋Š” ๋‹ค์Œ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.

  • ์‚ฌ์šฉ์ž/์‚ฌ์šฉ์ž ๊ด€๋ฆฌ ์„œ๋น„์Šค ๊ณ„์ •์— ๋‹ค์Œ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.

    • roles/owner
    • roles/storagetransfer.admin
    • roles/storagetransfer.transferAgent
    • roles/storage.objectAdmin
    • roles/pubsub.editor
  • Google ๊ด€๋ฆฌ ์„œ๋น„์Šค ๊ณ„์ •์— ๋‹ค์Œ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.

    • roles/storage.admin
    • roles/storagetransfer.serviceAgent

gcloud CLI ์„ค์น˜ ๋ฐฉ๋ฒ•์€ gcloud ๋น ๋ฅธ ์‹œ์ž‘์„ ์ฐธ์กฐํ•˜์„ธ์š”.

์‚ฌ์šฉ์ž ๋˜๋Š” ์‚ฌ์šฉ์ž ๊ด€๋ฆฌ ์„œ๋น„์Šค ๊ณ„์ • ๊ถŒํ•œ

์ด ์„น์…˜์—์„œ๋Š” ์ „์†ก ๊ด€๋ฆฌ์™€ ์ „์†ก ์‹คํ–‰์— ํ•„์š”ํ•œ ์—ญํ• ์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์กฐ์ง์˜ ์š”๊ตฌ์‚ฌํ•ญ์— ๋”ฐ๋ผ ๊ฐ ์บ๋ฆญํ„ฐ์— ๋Œ€ํ•œ ์ •ํ™•ํ•œ ์—ญํ• ์ด ๊ฒฐ์ •๋ฉ๋‹ˆ๋‹ค. ์ด ์„น์…˜์—์„œ๋Š” ๊ด€๋ฆฌ์ž์™€ ์‚ฌ์šฉ์ž๋ฅผ ๋งŒ๋“ ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.

๊ด€๋ฆฌ์ž ๊ณ„์ •

Storage Transfer Service ๊ด€๋ฆฌ์ž ๊ณ„์ •์€ ์ „์†ก ์—์ด์ „ํŠธ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ๋Œ€์—ญํญ ์‚ฌ์šฉ๋Ÿ‰ ํ•œ๋„๋ฅผ ์„ค์ •ํ•˜๋ฉฐ ์ „์†ก ์ž‘์—…์„ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

๊ด€๋ฆฌ์ž ๊ณ„์ •์„ ์„ค์ •ํ•˜๋ ค๋ฉด ๋‹ค์Œ IAM ๊ถŒํ•œ ๋ฐ ์—ญํ• ์„ ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค.

์—ญํ• /๊ถŒํ•œ ๊ธฐ๋Šฅ ์ฐธ๊ณ 
resourcemanager.projects.getIamPolicy ์ด ๊ถŒํ•œ์€ Google ๊ด€๋ฆฌํ˜• ์„œ๋น„์Šค ๊ณ„์ •์— ์ „์†ก์— ํ•„์š”ํ•œ ๊ถŒํ•œ์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋ ค๋ฉด ์‚ฌ์ „ ์ •์˜๋œ ์—ญํ•  ์—ญํ•  ๋ทฐ์–ด(roles/iam.roleViewer)๋ฅผ ๋ถ€์—ฌํ•˜๊ฑฐ๋‚˜ ์ด ๋‹จ์ผ ๊ถŒํ•œ์œผ๋กœ ์ปค์Šคํ…€ ์—ญํ• ์„ ์ƒ์„ฑํ•˜๊ณ  ์ปค์Šคํ…€ ์—ญํ• ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.
์Šคํ† ๋ฆฌ์ง€ ์ „์†ก ๊ด€๋ฆฌ์ž (roles/storagetransfer.admin) ํ”„๋กœ์ ํŠธ ์„ค์ • ๋ฐ ์—์ด์ „ํŠธ ๋ชจ๋‹ˆํ„ฐ๋ง๊ณผ ๊ฐ™์€ ์ „์†ก ํ”„๋กœ์ ํŠธ์˜ ๊ด€๋ฆฌ ์ž‘์—…์„ ์‚ฌ์šฉ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๋ถ€์—ฌ๋˜๋Š” ๊ถŒํ•œ์˜ ์ž์„ธํ•œ ๋ชฉ๋ก์€ ์‚ฌ์ „ ์ •์˜๋œ Storage Transfer Service ์—ญํ• ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

์‚ฌ์šฉ์ž ๊ณ„์ •

Storage Transfer Service ์‚ฌ์šฉ์ž ๊ณ„์ •์€ ์ „์†ก์„ ๋งŒ๋“ค๊ณ  ์‹คํ–‰ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ณ„์ •์—๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์ „์†ก ์ž‘์—…์„ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์ด ์—†์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž ๊ณ„์ •์€ Google Cloud ์ฝ˜์†” ์‚ฌ์šฉ์ž์ด๊ฑฐ๋‚˜ ์„œ๋น„์Šค ๊ณ„์ •์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„œ๋น„์Šค ๊ณ„์ •์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ Storage Transfer Service์— ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์‚ฌ์šฉํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž ๊ณ„์ •์„ ์„ค์ •ํ•˜๋ ค๋ฉด ๊ณ„์ •์— ๋‹ค์Œ ๊ถŒํ•œ๊ณผ ์—ญํ• ์„ ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค.

์—ญํ• /๊ถŒํ•œ ๊ธฐ๋Šฅ ์ฐธ๊ณ 
resourcemanager.projects.getIamPolicy Google ๊ด€๋ฆฌํ˜• ์„œ๋น„์Šค ๊ณ„์ •์— ์ „์†ก์— ํ•„์š”ํ•œ Pub/Sub ๊ถŒํ•œ์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋ ค๋ฉด ์‚ฌ์ „ ์ •์˜๋œ ์—ญํ•  ์—ญํ•  ๋ทฐ์–ด(roles/iam.roleViewer)๋ฅผ ๋ถ€์—ฌํ•˜๊ฑฐ๋‚˜ ์ด ๋‹จ์ผ ๊ถŒํ•œ์œผ๋กœ ์ปค์Šคํ…€ ์—ญํ• ์„ ์ƒ์„ฑํ•˜๊ณ  ์ปค์Šคํ…€ ์—ญํ• ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.
์Šคํ† ๋ฆฌ์ง€ ์ „์†ก ์‚ฌ์šฉ์ž (roles/storagetransfer.user) ์‚ฌ์šฉ์ž๊ฐ€ ์ „์†ก์„ ์ƒ์„ฑ, ๊ฐ€์ ธ์˜ค๊ธฐ, ์—…๋ฐ์ดํŠธ, ๋‚˜์—ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ถ€์—ฌ๋˜๋Š” ๊ถŒํ•œ์˜ ์ž์„ธํ•œ ๋ชฉ๋ก์€ ์‚ฌ์ „ ์ •์˜๋œ Storage Transfer Service ์—ญํ• ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

Google ๊ด€๋ฆฌ ์„œ๋น„์Šค ๊ณ„์ • ๊ถŒํ•œ

Storage Transfer Service๋Š” Google ๊ด€๋ฆฌํ˜• ์„œ๋น„์Šค ๊ณ„์ •์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. ์ด ์„œ๋น„์Šค ๊ณ„์ •์€ ์ฒ˜์Œ์œผ๋กœ ์ „์†ก ์ž‘์—…์„ ๋งŒ๋“ค๊ฑฐ๋‚˜, googleServiceAccounts.get์„ ํ˜ธ์ถœํ•˜๊ฑฐ๋‚˜, Google Cloud ์ฝ˜์†”์˜ ์ž‘์—… ์ƒ์„ฑ ํŽ˜์ด์ง€๋ฅผ ๋ฐฉ๋ฌธํ•˜๋ฉด ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

์„œ๋น„์Šค ๊ณ„์ •์˜ ํ˜•์‹์€ ์ผ๋ฐ˜์ ์œผ๋กœ project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com์ž…๋‹ˆ๋‹ค. ์„œ๋น„์Šค ๊ณ„์ • ์‹๋ณ„์ž๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋ ค๋ฉด googleServiceAccounts.get API ํ˜ธ์ถœ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์—ญํ•  ์ž๋™ ํ• ๋‹น

์˜ฌ๋ฐ”๋ฅธ ์—ญํ• ์„ Google ๊ด€๋ฆฌ ์„œ๋น„์Šค ๊ณ„์ •์— ์ž๋™์œผ๋กœ ํ• ๋‹นํ•˜๋Š” ๋ฐฉ๋ฒ•์—๋Š” ๋‘ ๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  • Google Cloud ์ฝ˜์†”์„ ์‚ฌ์šฉํ•˜์—ฌ ์ „์†ก์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์ฝ˜์†”์— ํ•„์š”ํ•œ ๊ถŒํ•œ์ด ์ž๋™์œผ๋กœ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

  • gcloud transfer authorize --add-missing์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๊ถŒํ•œ ๋ถ€์—ฌ ๋ฐฉ๋ฒ•์„ ์ฐธ์กฐํ•˜์„ธ์š”.

์ˆ˜๋™ ์—ญํ•  ํ• ๋‹น

Google ๊ด€๋ฆฌ ์„œ๋น„์Šค ๊ณ„์ •์ด ์ „์†ก์„ ์™„๋ฃŒํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋ฆฌ์†Œ์Šค์— ์•ก์„ธ์Šคํ•˜๋„๋ก ํ—ˆ์šฉํ•˜๋ ค๋ฉด ์„œ๋น„์Šค ๊ณ„์ •์— ๋‹ค์Œ ์—ญํ• ์ด๋‚˜ ์ด์— ์ƒ์‘ํ•˜๋Š” ๊ถŒํ•œ์„ ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค.

์—ญํ• /๊ถŒํ•œ ๊ธฐ๋Šฅ ์ฐธ๊ณ 
์Šคํ† ๋ฆฌ์ง€ ๊ฐ์ฒด ์ƒ์„ฑ์ž (roles/storage.objectCreator) Storage Transfer Service๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•˜์—ฌ ์ด ์ „์†ก์— ์—ฐ๊ฒฐ๋œ Cloud Storage ๋ฒ„ํ‚ท์— ์ „์†ก ๋กœ๊ทธ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ „์†ก์— ์‚ฌ์šฉ๋˜๋Š” ๋ชจ๋“  Cloud Storage ๋ฒ„ํ‚ท์— ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค. ์ƒํ™ฉ์— ๋”ฐ๋ผ Storage Transfer Service๋ฅผ ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ์ ํŠธ์— ํ”„๋กœ์ ํŠธ ์ˆ˜์ค€์˜ ์—ญํ• ์„ ๋ถ€์—ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ์—ญํ• ์ด ๋ถ€์—ฌํ•˜๋Š” ๊ถŒํ•œ์˜ ์ž์„ธํ•œ ๋ชฉ๋ก์€ ์‚ฌ์ „ ์ •์˜๋œ Cloud Storage ์—ญํ• ์„ ์ฐธ์กฐํ•˜์„ธ์š”.
์Šคํ† ๋ฆฌ์ง€ ๊ฐ์ฒด ๋ทฐ์–ด (roles/storage.objectViewer) Storage Transfer Service๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•˜์—ฌ ํŒŒ์ผ์ด ์ด๋ฏธ Cloud Storage์— ์ „์†ก๋˜๊ฑฐ๋‚˜ Cloud Storage์—์„œ ์ˆ˜์‹ ๋˜์—ˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
Storage Transfer Service ์—์ด์ „ํŠธ (roles/storagetransfer.serviceAgent) Storage Transfer Service๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•˜์—ฌ Google Cloud์—์„œ ์ „์†ก ์—์ด์ „ํŠธ์™€ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ๋„๋ก Pub/Sub ์ฃผ์ œ๋ฅผ ์ž๋™์œผ๋กœ ๋งŒ๋“ค๊ณ  ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค. Storage Transfer Service๊ฐ€ ์‹คํ–‰๋˜๋Š” ํ”„๋กœ์ ํŠธ์— ํ”„๋กœ์ ํŠธ ์ˆ˜์ค€์˜ ์—ญํ• ์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ด ์—ญํ• ์ด ๋ถ€์—ฌํ•˜๋Š” ๊ถŒํ•œ์˜ ์ž์„ธํ•œ ๋ชฉ๋ก์€ ๊ถŒํ•œ ๋ฐ ์—ญํ• ์„ ์ฐธ์กฐํ•˜์„ธ์š”.
์Šคํ† ๋ฆฌ์ง€ ๊ธฐ์กด ๋ฒ„ํ‚ท ๋ฆฌ๋” (roles/storage.legacyBucketReader) Storage Transfer Service๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•˜์—ฌ Cloud Storage ๋ฒ„ํ‚ท ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์Šต๋‹ˆ๋‹ค.

์ „์†ก์— ์‚ฌ์šฉ๋˜๋Š” ๊ฐ Cloud Storage ๋ฒ„ํ‚ท์— ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.

Cloud Storage legacy ์—ญํ• ์€ ๋ฒ„ํ‚ท ์ˆ˜์ค€์—์„œ๋งŒ ๋ถ€์—ฌ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ž์„ธํ•œ ๋‚ด์šฉ์€ ํ•„์š”ํ•œ ๊ถŒํ•œ ๋ถ€์—ฌ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์ „์†ก ์—์ด์ „ํŠธ ๊ณ„์ • ๊ถŒํ•œ

์‚ฌ์šฉ์ž ๊ณ„์ • ๋˜๋Š” ์„œ๋น„์Šค ๊ณ„์ •์œผ๋กœ Storage Transfer Service ์ „์†ก ์—์ด์ „ํŠธ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ „์†ก ์—์ด์ „ํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์ „์†ก ์—์ด์ „ํŠธ ์„œ๋น„์Šค ๊ณ„์ • ๋˜๋Š” ์‚ฌ์šฉ์ž ๊ณ„์ •์„ ์„ค์ •ํ•˜๋ ค๋ฉด ๋‹ค์Œ ์—ญํ• ์„ ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค.

์—ญํ• /๊ถŒํ•œ ๊ธฐ๋Šฅ ์ฐธ๊ณ 
์Šคํ† ๋ฆฌ์ง€ ์ „์†ก ์—์ด์ „ํŠธ (roles/storagetransfer.transferAgent) ์ „์†ก ์—์ด์ „ํŠธ์— ์ „์†ก์„ ์™„๋ฃŒํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ Storage Transfer Service ๋ฐ Pub/Sub ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ๋˜๋Š” ์—์ด์ „ํŠธ์—์„œ ์‚ฌ์šฉ ์ค‘์ธ ์„œ๋น„์Šค ๊ณ„์ •์— ์ด ์—ญํ• ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.

์ด ์—ญํ• ์ด ๋ถ€์—ฌํ•˜๋Š” ๊ถŒํ•œ์˜ ์ž์„ธํ•œ ๋ชฉ๋ก์€ IAM์œผ๋กœ ์•ก์„ธ์Šค ์ œ์–ด๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์†Œ์Šค ๋ฐ ๋Œ€์ƒ ๊ถŒํ•œ

๋˜ํ•œ ์—์ด์ „ํŠธ ๊ณ„์ •์— ์†Œ์Šค ๋ฐ์ดํ„ฐ์— ์•ก์„ธ์Šคํ•˜๊ณ  ๋Œ€์ƒ์— ์“ธ ์ˆ˜ ์žˆ๋Š” ์˜ฌ๋ฐ”๋ฅธ ๊ถŒํ•œ์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํŒŒ์ผ ์‹œ์Šคํ…œ, S3 ํ˜ธํ™˜ ์Šคํ† ๋ฆฌ์ง€ ๋˜๋Š” HDFS์—์„œ Cloud Storage๋กœ

์ „์†ก ๋Œ€์ƒ์ด Cloud Storage ๋ฒ„ํ‚ท์ธ ๊ฒฝ์šฐ ์ „์†ก ์—์ด์ „ํŠธ๋Š” ๋Œ€์ƒ ๋ฒ„ํ‚ท์— ๋Œ€ํ•œ ๋‹ค์Œ ๊ถŒํ•œ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋ฒ„ํ‚ท ์ˆ˜์ค€ ์ •์ฑ…์— ์ฃผ ๊ตฌ์„ฑ์› ์ถ”๊ฐ€๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๊ถŒํ•œ ์„ค๋ช…
storage.objects.create ์—์ด์ „ํŠธ ๊ณ„์ •์ด ์ „์†ก ์ค‘์— Cloud Storage ๊ฐ์ฒด๋ฅผ ์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
storage.objects.get ์—์ด์ „ํŠธ ๊ณ„์ •์—์„œ ๊ฐ์ฒด ๋ฐ์ดํ„ฐ ๋ฐ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๋„๋ก ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.
storage.objects.list ์—์ด์ „ํŠธ ๊ณ„์ •์—์„œ Cloud Storage ๋ฒ„ํ‚ท์˜ ๊ฐ์ฒด๋ฅผ ๋‚˜์—ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
storage.objects.delete ์‹ฑํฌ์—์„œ ๊ฐ์ฒด๋ฅผ ๋ฎ์–ด์“ฐ๊ฑฐ๋‚˜ ์‚ญ์ œํ•˜๋„๋ก ์ „์†ก์ด ๊ตฌ์„ฑ๋œ ๊ฒฝ์šฐ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด overwriteObjectsAlreadyExistingInSink ๋˜๋Š” deleteObjectsUniqueInSink๊ฐ€ ์ „์†ก์˜ transferOptions ๊ตฌ์„ฑ์— ์„ค์ •๋œ ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋ ค๋ฉด ๋‹ค์Œ ์—ญํ• ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.

๋˜๋Š” ํŠน์ • ๊ถŒํ•œ์ด ์žˆ๋Š” ์ปค์Šคํ…€ ์—ญํ• ์„ ๋งŒ๋“ค๊ณ  ์ปค์Šคํ…€ ์—ญํ• ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.

๋ฉ€ํ‹ฐํŒŒํŠธ ์—…๋กœ๋“œ ์‚ฌ์šฉ ์„ค์ •์—๋Š” ์ถ”๊ฐ€ ๊ถŒํ•œ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

Cloud Storage - ํŒŒ์ผ ์‹œ์Šคํ…œ

์ „์†ก ์†Œ์Šค๊ฐ€ Cloud Storage ๋ฒ„ํ‚ท์ธ ๊ฒฝ์šฐ ์ „์†ก ์—์ด์ „ํŠธ๋Š” ์†Œ์Šค ๋ฒ„ํ‚ท์— ๋Œ€ํ•œ ๋‹ค์Œ ๊ถŒํ•œ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๊ถŒํ•œ ์„ค๋ช…
storage.objects.create ์—์ด์ „ํŠธ ๊ณ„์ •์ด ์ „์†ก ๋กœ๊ทธ ๋ฐ ์ „์†ก ๊ด€๋ จ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ Cloud Storage ์†Œ์Šค ๋ฒ„ํ‚ท์— ์“ธ ์ˆ˜ ์žˆ๋„๋ก ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.
storage.objects.get ์—์ด์ „ํŠธ ๊ณ„์ •์—์„œ ๊ฐ์ฒด ๋ฐ์ดํ„ฐ ๋ฐ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๋„๋ก ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.
storage.objects.list ์—์ด์ „ํŠธ ๊ณ„์ •์—์„œ Cloud Storage ๋ฒ„ํ‚ท์˜ ๊ฐ์ฒด๋ฅผ ๋‚˜์—ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
storage.objects.delete ์†Œ์Šค์—์„œ ๊ฐ์ฒด๋ฅผ ์‚ญ์ œํ•˜๋„๋ก ์ „์†ก์ด ๊ตฌ์„ฑ๋œ ๊ฒฝ์šฐ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค. deleteObjectsFromSourceAfterTransfer๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์ด ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋ ค๋ฉด ๋‹ค์Œ ์—ญํ• ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.

๋˜๋Š” ๋‹จ์ผ ๊ถŒํ•œ์ด ์žˆ๋Š” ์ปค์Šคํ…€ ์—ญํ• ์„ ๋งŒ๋“ค๊ณ  ์ปค์Šคํ…€ ์—ญํ• ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.

ํŒŒ์ผ ์‹œ์Šคํ…œ - ํŒŒ์ผ ์‹œ์Šคํ…œ

๋‘ ํŒŒ์ผ ์‹œ์Šคํ…œ ๊ฐ„ ์ „์†ก์ธ ๊ฒฝ์šฐ ์ „์†ก ์—์ด์ „ํŠธ์—๋Š” ์ค‘๊ฐ„ ๋ฒ„ํ‚ท์— ๋Œ€ํ•œ ๋‹ค์Œ ๊ถŒํ•œ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๊ถŒํ•œ ์„ค๋ช…
storage.objects.create ์—์ด์ „ํŠธ ๊ณ„์ •์ด ์ „์†ก ์ค‘์— Cloud Storage ๊ฐ์ฒด๋ฅผ ์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
storage.objects.get ์—์ด์ „ํŠธ ๊ณ„์ •์—์„œ ๊ฐ์ฒด ๋ฐ์ดํ„ฐ ๋ฐ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๋„๋ก ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.
storage.objects.list ์—์ด์ „ํŠธ ๊ณ„์ •์—์„œ Cloud Storage ๋ฒ„ํ‚ท์˜ ๊ฐ์ฒด๋ฅผ ๋‚˜์—ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
storage.objects.delete ์ „์†ก์ด ์™„๋ฃŒ๋œ ํ›„ ์ค‘๊ฐ„ ๋ฒ„ํ‚ท์˜ ๊ฐ์ฒด๋ฅผ ์‚ญ์ œํ•˜๋„๋ก ๊ตฌ์„ฑ๋œ ๊ฒฝ์šฐ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋ ค๋ฉด ๋‹ค์Œ ์—ญํ• ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.

๋˜๋Š” ํŠน์ • ๊ถŒํ•œ์ด ์žˆ๋Š” ์ปค์Šคํ…€ ์—ญํ• ์„ ๋งŒ๋“ค๊ณ  ์ปค์Šคํ…€ ์—ญํ• ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.

๋ฉ€ํ‹ฐํŒŒํŠธ ์—…๋กœ๋“œ ์‚ฌ์šฉ ์„ค์ •์—๋Š” ์ถ”๊ฐ€ ๊ถŒํ•œ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๋ฉ€ํ‹ฐํŒŒํŠธ ์—…๋กœ๋“œ

ํŒŒ์ผ ์‹œ์Šคํ…œ์—์„œ Cloud Storage๋กœ ์ „์†กํ•˜๊ฑฐ๋‚˜ ํŒŒ์ผ ์‹œ์Šคํ…œ ๊ฐ„์— ์ „์†กํ•˜๊ธฐ ์œ„ํ•ด ๋ฉ€ํ‹ฐํŒŒํŠธ ์—…๋กœ๋“œ๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•˜๋ ค๋ฉด ๋‹ค์Œ ๊ถŒํ•œ์„ ์—์ด์ „ํŠธ์— ์ถ”๊ฐ€๋กœ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.

  • Cloud Storage๋กœ ์ „์†กํ•˜๋ ค๋ฉด ๋Œ€์ƒ ๋ฒ„ํ‚ท์— ๊ถŒํ•œ์„ ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค.
  • ํŒŒ์ผ ์‹œ์Šคํ…œ ๊ฐ„ ์ „์†ก์˜ ๊ฒฝ์šฐ ์ค‘๊ฐ„ ๋ฒ„ํ‚ท์— ๊ถŒํ•œ์„ ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค.
๋ฉ€ํ‹ฐํŒŒํŠธ ์—…๋กœ๋“œ ๊ถŒํ•œ ์ด๋ฆ„ ์„ค๋ช…
storage.multipartUploads.create ์—ฌ๋Ÿฌ ๋ถ€๋ถ„์œผ๋กœ ๊ฐ์ฒด๋ฅผ ์—…๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.
storage.multipartUploads.abort ๋ฉ€ํ‹ฐํŒŒํŠธ ์—…๋กœ๋“œ ์„ธ์…˜์„ ์ทจ์†Œํ•ฉ๋‹ˆ๋‹ค.
storage.multipartUploads.listParts ๋ฉ€ํ‹ฐํŒŒํŠธ ์—…๋กœ๋“œ ์„ธ์…˜์—์„œ ์—…๋กœ๋“œ๋œ ๊ฐ์ฒด ๋ถ€๋ถ„์„ ๋‚˜์—ดํ•ฉ๋‹ˆ๋‹ค.
storage.multipartUploads.list ๋ฒ„ํ‚ท์˜ ๋ฉ€ํ‹ฐํŒŒํŠธ ์—…๋กœ๋“œ ์„ธ์…˜์„ ๋‚˜์—ดํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋ ค๋ฉด ๋‹ค์Œ ์—ญํ• ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.

๋˜๋Š” ํŠน์ • ๊ถŒํ•œ์ด ์žˆ๋Š” ์ปค์Šคํ…€ ์—ญํ• ์„ ๋งŒ๋“ค๊ณ  ์ปค์Šคํ…€ ์—ญํ• ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.