Gsutil: μ„œλΉ„μŠ€ 계정 json ν‚€ 인증 지원 μΆ”κ°€

에 λ§Œλ“  2018λ…„ 03μ›” 16일  Β·  11μ½”λ©˜νŠΈ  Β·  좜처: GoogleCloudPlatform/gsutil

gcloud μœ ν‹Έλ¦¬ν‹°μ™€ μœ μΆ”ν•˜λ©΄ 맀우 λΆ€μ‘±ν•©λ‹ˆλ‹€.

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

이것은 ν›Œλ₯­ν•œ κΈ°λŠ₯μž…λ‹ˆλ‹€. 저도 μ•Œκ³  μžˆμŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ 이것은 λΆˆνŽΈν•©λ‹ˆλ‹€. gcloud μœ ν‹Έλ¦¬ν‹°μ™€ ν†΅ν•©ν•˜λ €λŠ” 경우 λ‹€λ₯Έ 파일이 ν•„μš”ν•œ μ΄μœ λŠ” λ¬΄μ—‡μΈκ°€μš”?

μΆ”κ°€ 파일 없이 key.json νŒŒμΌμ„ λ§€κ°œλ³€μˆ˜λ‘œ μ§€μ •ν•˜λŠ” κΈ°λŠ₯을 μΆ”κ°€ν•˜κΈ°λ§Œ ν•˜λ©΄ λ©λ‹ˆλ‹€. 이것은 λ§Žμ€ μ‚¬λžŒλ“€μ˜ 삢을 더 μ‰½κ²Œ λ§Œλ“€μ–΄ 쀄 κ²ƒμž…λ‹ˆλ‹€.

λͺ¨λ“  11 λŒ“κΈ€

Gsutil은 μ„œλΉ„μŠ€ 계정 μŠΉμΈμ„ μ œκ³΅ν•©λ‹ˆλ‹€. gsutil config -e λŠ” μ„œλΉ„μŠ€ 계정 자격 증λͺ…이 ν¬ν•¨λœ 개인 ν‚€ νŒŒμΌμ„ λ¬»λŠ” λ©”μ‹œμ§€λ₯Ό ν‘œμ‹œν•©λ‹ˆλ‹€. λ‹€λ₯Έ ν˜•νƒœμ˜ μ„œλΉ„μŠ€ 계정 인증에 λŒ€ν•΄ λ¬Έμ˜ν•˜μ…¨μŠ΅λ‹ˆκΉŒ?

이것은 μŠ€ν¬λ¦½νŠΈμ—μ„œ μ‚¬μš©ν•˜κΈ°μ— μ ν•©ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. ν‚€κ°€ μžˆλŠ” 파일이 μžˆμ„ λ•Œ. 그리고 promtλ₯Ό μ‚¬μš©ν•  수 μ—†μŠ΅λ‹ˆλ‹€. gcloud μœ ν‹Έλ¦¬ν‹°λ₯Ό μ‚¬μš©ν•˜λ©΄ ν‚€ νŒŒμΌμ„ 톡해 λΉ„λŒ€ν™”ν˜• μŠΉμΈμ„ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

λͺ‡ 가지 잠재적인 ν•΄κ²° 방법:

  • gsutil의 gcloud μ„€μΉ˜λ₯Ό μ‚¬μš©ν•  수 μžˆλŠ” 경우 μ„œλΉ„μŠ€ 계정 인증을 λŒ€μ‹  μ²˜λ¦¬ν•΄μ•Ό ν•©λ‹ˆλ‹€(λ’€μ—μ„œ 이 ν‚€ νŒŒμΌμ„ κ°€λ¦¬ν‚€λŠ” boto 파일 생성).
  • gsutil의 독립 μ‹€ν–‰ν˜• μ„€μΉ˜λ₯Ό μ‚¬μš©ν•˜λŠ” 경우 미리 boto νŒŒμΌμ„ λ§Œλ“€ 수 μžˆμŠ΅λ‹ˆλ‹€. 원격 VMμ—μ„œ 슀크립트λ₯Ό μ‹€ν–‰ν•˜λŠ” 경우 boto 파일과 ν‚€ νŒŒμΌμ„ λͺ¨λ‘ VM에 볡사할 수 μžˆμŠ΅λ‹ˆλ‹€. (μ œκ°€ 일반적으둜 μ‚¬μš©ν•˜λŠ” λ°©λ²•μž…λ‹ˆλ‹€.)

ν•΄κ²° 방법이 ν•„μš”ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. gsutil이 μ„œλΉ„μŠ€ 계정 승인으둜 gcloud와 ν•¨κ»˜ μž‘λ™ν•˜λ„λ‘ ν•˜κ³  μ‹ΆμŠ΅λ‹ˆλ‹€. 이것은 μžλ™ν™” μž‘μ—…μ„ 크게 촉진할 κ²ƒμž…λ‹ˆλ‹€.

λͺ¨λ“  극단적인 경우 λ•Œλ¬Έμ— μ˜λ„μ μœΌλ‘œ gsutil config ν”„λ‘œμ„ΈμŠ€λ₯Ό λŒ€ν™”μ‹μœΌλ‘œ λ§Œλ“­λ‹ˆλ‹€. κ°€μž₯ μ€‘μš”ν•œ 것은 JSON λ˜λŠ” P12 ν‚€ νŒŒμΌμ„ μ§€μ •ν•˜λŠ”μ§€ 여뢀에 따라 ꡬ성 νŒŒμΌμ„ μƒμ„±ν•˜λŠ” 데 λ‹€λ₯Έ 정보가 ν•„μš”ν•˜λ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€. μœ νš¨ν•œ ꡬ성 파일이 있으면 μžλ™ μŠ€ν¬λ¦½νŠΈμ™€ ν•¨κ»˜ μ‚¬μš©ν•  수 μžˆλ„λ‘ λ³€κ²½ν•˜κ³  νŒ¨ν‚€μ§•ν•  수 μžˆμŠ΅λ‹ˆλ‹€(이미 νŒ¨ν‚€μ§•ν•˜κ³  μžˆλŠ” ν‚€ 파일과 ν•¨κ»˜). 그리고 gcloud의 자격 증λͺ… 관리 μ‹œμŠ€ν…œμ„ gsutilκ³Ό ν•¨κ»˜ μ‚¬μš©ν•˜λ €λŠ” 경우 gcloudλ₯Ό μ„€μΉ˜ 및 κ΅¬μ„±ν•˜λ©΄ μ‰½κ²Œ 달성할 수 μžˆμŠ΅λ‹ˆλ‹€.

gsutil config λͺ…령을 μ‹€ν–‰ν•˜λŠ” 것은 λ‹€μŒκ³Ό 같은 짧은 boto νŒŒμΌμ„ κ΅¬μ„±ν•˜λŠ” κ²ƒλ§ŒνΌμ΄λ‚˜ μ‰½μŠ΅λ‹ˆλ‹€.

[Credentials]
gs_service_key_file = /path/to/keyfile.json

[GSUtil]
default_project_id = id-for-my-project

λ˜λŠ” λŒ€λΆ€λΆ„μ˜ ꡬ성 μ˜΅μ…˜μ— λŒ€ν•΄ gcloudκ°€ λ‚΄λΆ€μ μœΌλ‘œ μˆ˜ν–‰ν•˜λŠ” μž‘μ—…μ„ μˆ˜ν–‰ν•˜λ €λ©΄ λͺ…λ Ήμ€„μ—μ„œ gsutil에 인수둜 μ „λ‹¬ν•©λ‹ˆλ‹€. 이것은 파일 생성을 λ§Œμ§€μž‘κ±°λ¦¬μ§€ μ•ŠλŠ”λ‹€λŠ” 이점이 μžˆμŠ΅λ‹ˆλ‹€.

gsutil -o "Credentials:gs_service_key_file=/path/to/keyfile.json" \
    -o "default_project_id=id-for-my-project" \
    <rest of command>

이것은 ν›Œλ₯­ν•œ κΈ°λŠ₯μž…λ‹ˆλ‹€. 저도 μ•Œκ³  μžˆμŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ 이것은 λΆˆνŽΈν•©λ‹ˆλ‹€. gcloud μœ ν‹Έλ¦¬ν‹°μ™€ ν†΅ν•©ν•˜λ €λŠ” 경우 λ‹€λ₯Έ 파일이 ν•„μš”ν•œ μ΄μœ λŠ” λ¬΄μ—‡μΈκ°€μš”?

μΆ”κ°€ 파일 없이 key.json νŒŒμΌμ„ λ§€κ°œλ³€μˆ˜λ‘œ μ§€μ •ν•˜λŠ” κΈ°λŠ₯을 μΆ”κ°€ν•˜κΈ°λ§Œ ν•˜λ©΄ λ©λ‹ˆλ‹€. 이것은 λ§Žμ€ μ‚¬λžŒλ“€μ˜ 삢을 더 μ‰½κ²Œ λ§Œλ“€μ–΄ 쀄 κ²ƒμž…λ‹ˆλ‹€.

그리고 이 사둀λ₯Ό ꡬ체적인 μ˜ˆκ°€ μžˆλŠ” λ¬Έμ„œλ‘œ μ§€μ ν•˜λŠ” 것이 쒋을 κ²ƒμž…λ‹ˆλ‹€. κ°μ‚¬ν•©λ‹ˆλ‹€!

이것이 문제λ₯Ό μΌμœΌν‚€λŠ” ꡬ체적인 예: μœ„μ—μ„œ μ–ΈκΈ‰ν•œ 일뢀 래퍼 슀크립트 λ‚΄μ—μ„œ μ‚¬μš©λ˜λŠ” gs_service_key_file ν•΄κ²° 방법을 μ‚¬μš©ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ μ‚¬μš©μžκ°€ gcloud auth application-default login λ₯Ό 톡해 κΈ°λ³Έ μ‚¬μš©μž 계정도 κ΅¬μ„±ν•œ 경우 이 λͺ…령은 λ‹€μ†Œ 도움이 λ˜μ§€ μ•ŠλŠ” 였λ₯˜μ™€ ν•¨κ»˜ μ‹€νŒ¨ν•©λ‹ˆλ‹€.

$ gsutil -o "Credentials:gs_service_key_file=/path/to/keyfile.json" rsync ...
Caught non-retryable exception while listing gs://<snip>/: CommandException: \
You have multiple types of configured credentials ([u'Oauth 2.0 User Account', u'OAuth 2.0 \
Service Account']), which is not supported. One common way this happens is if you run gsutil \
config to create credentials and later run gcloud auth, and create a second set of credentials. Your \
boto config path is: ['<snip>']. For more help, see "gsutil help creds".
CommandException: Caught non-retryable exception - aborting rsync

λ‚˜λŠ” λ˜ν•œ --auth λͺ…령쀄 ν”Œλž˜κ·Έκ°€ 훨씬 더 간단할 것이라고 μ£Όμž₯ν•©λ‹ˆλ‹€. 감사 ν•΄μš”.

μ–ΈκΈ‰λœ ν•΄κ²° 방법이 더 이상 μž‘λ™ν•˜μ§€ μ•ŠλŠ” 것 κ°™μŠ΅λ‹ˆλ‹€.
였λ₯˜ λ©”μ‹œμ§€λ‚˜ 디버그 둜그 없이 도움말 λ©”μ‹œμ§€λ₯Ό μΈμ‡„ν•˜κ³  μ€‘μ§€ν•©λ‹ˆλ‹€.

또 λ‹€λ₯Έ 이유λ₯Ό μ„€λͺ…ν•˜μžλ©΄ μŠ€ν¬λ¦½νŠΈμ—μ„œ 잘 μ§€μ›λ˜λŠ” 방법을 μ‚¬μš©ν•˜λŠ” 것이 νŽΈλ¦¬ν•  κ²ƒμž…λ‹ˆλ‹€.
λ§Žμ€ κ°œλ³„ gsutil λͺ…λ Ή 싀행을 μ‹œμž‘ν•˜λŠ” μŠ€ν¬λ¦½νŠΈκ°€ 있으며 맀번 μ—¬λŸ¬ μ„œλΉ„μŠ€ 계정 쀑 ν•˜λ‚˜λ₯Ό μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ‹¨μˆœνžˆ gsutil λͺ…령에 λ‹€λ₯Έ μ„œλΉ„μŠ€ 계정 json을 지정할 수 μžˆλŠ” 것이 이 문제λ₯Ό μ²˜λ¦¬ν•˜λŠ” κ°€μž₯ μ‰¬μš΄ λ°©λ²•μž…λ‹ˆλ‹€. μ–ΈκΈ‰ν•œ κ²ƒμ²˜λŸΌ μ΄λŸ¬ν•œ μ„œλ‘œ λ‹€λ₯Έ gsutil μ‹€ν–‰μ—μ„œ λ§Žμ€ μ„œλΉ„μŠ€ 계정 간에 자주 κ΅ν™˜μ΄ 있기 λ•Œλ¬Έμ— boto 파일둜 이 μž‘μ—…μ„ μˆ˜ν–‰ν•˜λŠ” 방법쑰차 잘 λͺ¨λ₯΄κ² μŠ΅λ‹ˆλ‹€.

ν˜„μž¬ Credentials:gs_service_key_file ν•΄κ²° 방법이 μž‘λ™ μ€‘μ΄μ§€λ§Œ 이전 λ²„μ „μ˜ gsutil을 μ‚¬μš© μ€‘μž…λ‹ˆλ‹€. μœ„μ—μ„œ μ–ΈκΈ‰ν•œ @NikkyAI κ°€ 더 이상 μž‘λ™ν•˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ— μ—…κ·Έλ ˆμ΄λ“œν•  λ•Œ μž‘λ™μ΄ 쀑지될 수 μžˆλ‹€λŠ” 점이 μš°λ €λ©λ‹ˆλ‹€.

@NikkyAI @AndrewJDR λ™μΌν•œ 였λ₯˜κ°€ λ°œμƒν–ˆμ§€λ§Œ GSUtil을 default_project_id에 μΆ”κ°€ν•œ ν›„ νš¨κ³Όκ°€ μžˆμ—ˆμŠ΅λ‹ˆλ‹€.
λ‹€μŒμ€ λͺ…λ Ήμž…λ‹ˆλ‹€.

gsutil -o " 자격 증λͺ…:gs_service_key_file=/경둜/to/keyfile.json " \
-o " GSUtil:default_project_id=id-for-my-project " \

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰