gcloud 스토리지 실행용 Shim

개요

Cloud SDK에는 더 적은 매개변수 조정으로 업로드 및 다운로드 수행 시 gsutil보다 훨씬 빠를 수 있는 새 CLI, gcloud 저장소가 포함되어 있습니다. 이 새 CLI에는 gsutil 사용자에게 익숙한 구문과 명령어 구조가 있지만 근본적으로 여러 중요한 차이점이 있습니다. 이 새로운 CLI로 쉽게 전환할 수 있도록 gsutil은 gsutil 명령어를 동등한 명령어가 있는 경우 gcloud 스토리지 명령어로 변환하는 shim을 제공하고 이에 상응하는 명령어가 없는 경우 gsutil의 일반적인 동작으로 되돌아갑니다.

사용 설정

[GSUtil] 섹션 아래의 .boto 구성 파일에서 use_gcloud_storage=True를 설정합니다.

[GSUtil]
use_gcloud_storage=True

최상위 -o 플래그를 사용하여 개별 명령어에 대해 플래그를 설정할 수도 있습니다.

gsutil -o "GSUtil:use_gcloud_storage=True" -m cp -p file gs://bucket/obj

사용할 수 있는 명령

gcloud storage CLI는 gsutil 명령어의 일부만 지원합니다. 다음은 shim에서 지원하는 명령어 목록이며 명시된 동작에 차이가 있습니다.

acl

  • ch 하위 명령어는 지원되지 않습니다.

autoclass

  • 예상대로 작동합니다.

bucketpolicyonly

  • 예상대로 작동합니다.

고양이

  • 첫 번째 객체가 잘못된 경우에도 두 번째 객체에 대한 객체 데이터를 출력합니다.

compose

  • 예상대로 작동합니다.

cors

  • get 하위 명령어는 'gs://[bucket name] has no CORS configuration' 대신 '[]'를 출력합니다.

cp

  • 첫 번째 객체가 잘못된 경우에도 두 번째 객체를 복사합니다.

  • 파일 간 복사를 지원하지 않습니다.

  • 이름에 후행 슬래시가 있는 클라우드 간 객체 복사를 지원합니다.

  • all-version 플래그(-A)는 오류를 발생시키지 않고 자동으로 순차적 실행을 사용 설정합니다.

defacl

  • ch 하위 명령어는 지원되지 않습니다.

defstorageclass

  • 예상대로 작동합니다.

hash

  • gsutil에서 표시되는 해시에 영향을 미치는 -m-c 플래그는 클라우드 객체에 대해 무시됩니다. 이 동작은 shim 및 gcloud 스토리지에 대해 수정되었습니다.

iam

  • ch 하위 명령어는 지원되지 않습니다.

  • -f 플래그는 API 오류뿐만 아니라 모든 오류에서 계속됩니다.

kms

  • authorize 하위 명령어는 다른 형식의 정보 메시지를 반환합니다.

  • encryption 하위 명령어는 다른 형식의 정보 메시지를 반환합니다.

라벨

  • get 하위 명령어는 'gs://[bucket name] has no labels configuration' 대신 '[]'를 출력합니다.

lifecycle

  • 예상대로 작동합니다.

logging

  • get 하위 명령어는 JSON 간격이 다르며 구성이 발견되지 않으면 정보 메시지를 인쇄하지 않습니다.

ls

  • 예상대로 작동합니다.

mb

  • 예상대로 작동합니다.

mv

  • cp에 관한 참고를 확인하세요.

알림

  • list 하위 명령어는 구성 정보를 YAML로 출력합니다.

  • delete 하위 명령어는 진행 상태 추적 및 동시 처리를 제공합니다.

pap

  • 예상대로 작동합니다.

rb

  • 예상대로 작동합니다.

requesterpays

  • 예상대로 작동합니다.

rewrite

  • -k 플래그는 새 키 없이 호출해도 오류가 발생하지 않습니다. shim 및 shim되지 않은 경우 모두 이전 키는 유지됩니다.

rm

  • $folder$ 삭제 마커는 지원되지 않습니다.

rpo

  • 예상대로 작동합니다.

setmeta

  • 헤더가 변경되지 않으면 오류가 발생하지 않습니다.

stat

  • 탭 이동이 발생할 수 있는 '스토리지 클래스 업데이트 시간' 필드가 포함됩니다.

ubla

  • 예상대로 작동합니다.

versioning

  • 예상대로 작동합니다.

  • get 하위 명령어는 JSON 간격이 다르며 구성이 발견되지 않으면 정보 메시지를 인쇄하지 않습니다.

Boto 구성

boto 파일에서 발견된 구성은 적절한 경우 gcloud 환경 변수에 1:1로 매핑됩니다.

[사용자 인증 정보]

  • aws_access_key_id: AWS_ACCESS_KEY_ID

  • aws_secret_access_key: AWS_SECRET_ACCESS_KEY

  • use_client_certificate: CLOUDSDK_CONTEXT_AWARE_USE_CLIENT_CERTIFICATE

[Boto]

  • proxy: CLOUDSDK_PROXY_ADDRESS

  • proxy_type: CLOUDSDK_PROXY_TYPE

  • proxy_port: CLOUDSDK_PROXY_PORT

  • proxy_user: CLOUDSDK_PROXY_USERNAME

  • proxy_pass: CLOUDSDK_PROXY_PASSWORD

  • proxy_rdns: CLOUDSDK_PROXY_RDNS

  • http_socket_timeout: CLOUDSDK_CORE_HTTP_TIMEOUT

  • ca_certificates_file: CLOUDSDK_CORE_CUSTOM_CA_CERTS_FILE

  • max_retry_delay: CLOUDSDK_STORAGE_BASE_RETRY_DELAY

  • num_retries: CLOUDSDK_STORAGE_MAX_RETRIES

[GSUtil]

  • check_hashes: CLOUDSDK_STORAGE_CHECK_HASHES

  • default_project_id: CLOUDSDK_CORE_PROJECT

  • disable_analytics_prompt: CLOUDSDK_CORE_DISABLE_USAGE_REPORTING

  • use_magicfile: CLOUDSDK_STORAGE_USE_MAGICFILE

  • parallel_composite_upload_threshold: CLOUDSDK_STORAGE_PARALLEL_COMPOSITE_UPLOAD_THRESHOLD

  • resumable_threshold: CLOUDSDK_STORAGE_RESUMABLE_THRESHOLD

[OAuth2]

  • client_id: CLOUDSDK_AUTH_CLIENT_ID

  • client_secret: CLOUDSDK_AUTH_CLIENT_SECRET

  • provider_authorization_uri: CLOUDSDK_AUTH_AUTH_HOST

  • provider_token_uri: CLOUDSDK_AUTH_TOKEN_HOST

일반 호환성 참고사항

  • 모든 주요 플랫폼 간의 호환성으로 인해 기본적으로 모든 명령어에 멀티 처리가 사용 설정됩니다(-m 옵션이 항상 gsutil에 포함되는 것과 동일).

  • 3개 이상의 별표(예: ***)는 항상 하나의 별표로 처리됩니다.

  • gsutil과 달리 gcloud는 동시 호출에서 사용하도록 설계되지 않았으며, 따라서 동시 호출(예: 2개 터미널에서 shim을 동시에 실행)하면 예기치 않은 동작이 발생할 수 있습니다.

  • 버킷에 gs://bucket/nested/foo.txt 객체가 포함되어 있다고 가정하면 gsutil의 와일드 카드 반복자는 gs://bucket/*/nested/*와 같은 URL이 지정된 foo.txt와 일치합니다. shim은 동일한 URL이 지정되면 foo.txt와 일치하지 않습니다.

  • 새 명령어가 gcloud 스토리지 및 shim에서 모두 지원되므로 업데이트됩니다.

  • 유니코드에 문제가 있는 경우 환경 변수 PYTHONUTF81로 설정해 보세요. 특히 Windows 명령줄(CMD)에 도움이 될 수 있습니다.