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 フラグを追加しようとしましたが、これも機能しないようです。
cloud.google.com/go/storage の最新バージョンで解決されているようです (GitHub のディスカッション コンテンツでこの問題について読みましたが、何らかの理由でリンクが見つかりません)。サービス アカウントを署名付き URL に追加する必要があります。これで、ライブラリは偽装に関連付けられた
GoogleAccessID を取得できるようになります。
v1.29.0 にアップグレードし、
gcloud auth application-default login --impersonate-service-account= を使用して認証した後、すべてが正常に動作しているようです。ユーザー アカウントに、サービス アカウントの下で「サービス アカウント トークン作成者」ロールが割り当てられていることを確認してください。
以上がgcloud のデフォルト ログインを使用して GCS URL に署名できませんの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。