>백엔드 개발 >Golang >gcloud 기본 로그인을 사용하여 GCS URL에 서명할 수 없습니다.

gcloud 기본 로그인을 사용하여 GCS URL에 서명할 수 없습니다.

WBOY
WBOY앞으로
2024-02-08 21:21:281269검색

无法使用 gcloud 默认登录名签署 GCS 网址

PHP 편집자 Zimo는 gcloud를 사용할 때 문제가 발생할 수 있습니다. 즉, 기본 로그인 이름을 사용하여 GCS URL에 서명할 수 없습니다. 이 문제는 약간의 혼란을 야기할 수 있지만 해결책을 찾을 수 있습니다. 이 글에서는 gcloud를 사용하여 GCS URL에 성공적으로 서명할 수 있도록 이 문제를 해결하는 방법을 소개합니다. 당신이 초보자이든 숙련된 개발자이든 이 글은 명확하고 간결한 솔루션을 제공할 것입니다. 한 번 보자!

질문내용

저는 golang 백엔드를 개발하고 있으며 cloud.google.com/go/storage 库与我们的 gcs 实例进行通信。目前,我正在使用这个库来签署 url 并将媒体上传到我们的实例。但是,我想避免下载服务帐户密钥文件并出于本地开发目的显式设置 google_application_credentials환경변수를 사용하고 있습니다. 이를 달성하기 위해 참조 문서에 따라 adc에 대한 사용자 자격 증명을 제공했습니다.

새로운 ADC 구성에서는 미디어 업로드가 제대로 작동합니다. 그러나 다음 코드 조각을 사용하여 URL에 서명하려고 하면:

으아악

오류 메시지를 받았습니다:

으아악

코드를 실행하기 전에 gcloud auth application-default login를 사용하여 인증했기 때문에 이 오류 메시지는 혼란스럽습니다. 여기에 어떤 문제가 있을 수 있으며 어떻게 해결할 수 있나요?

편집: 토큰 생성 권한이 있는 서비스 계정을 가리키도록 --impersonate-service-account 플래그를 추가하려고 시도했지만 이 역시 작동하지 않는 것 같습니다. --impersonate-service-account 标志,指向具有令牌创建权限的服务帐户,但这似乎也不起作用。

解决方法

显然,这个问题在最新版本的 cloud.google.com/go/storage 中得到了解决(我在 GitHub 讨论中读到了相关内容,但由于某种原因无法再找到链接)。您必须将服务帐户附加到签名 URL,并且该库现在能够获取与模拟关联的 GoogleAccessID。升级到 v1.29.0 并使用 gcloud auth application-default login --impersonate-service-account=<SERVICE_ACCOUNT>

해결 방법🎜🎜분명히 이 문제는 최신 버전의 cloud.google.com/go/storage에서 해결되었습니다(GitHub 토론에서 이에 대해 읽었지만 어떤 이유로든 더 이상 링크를 사용할 수 없습니다). 발견될 수 있습니다). 서명된 URL에 서비스 계정을 추가해야 하며, 이제 라이브러리는 가장과 연결된 GoogleAccessID를 얻을 수 있습니다. v1.29.0으로 업그레이드하고 gcloud auth application-default login --impersonate-service-account=<SERVICE_ACCOUNT>를 사용하여 인증한 후 모든 것이 제대로 작동하는 것 같습니다. 사용자 계정에 서비스 계정 아래에 할당된 "서비스 계정 토큰 생성자" 역할이 있는지 확인하세요. 🎜

위 내용은 gcloud 기본 로그인을 사용하여 GCS URL에 서명할 수 없습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 stackoverflow.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제