4

Secret Manager に保存されているシークレットにアクセスしようとして作成した Google Cloud Function をテストしているときに、次のエラーが発生します。Error: 7 PERMISSION_DENIED: Permission 'secretmanager.versions.access' denied for resource '<resource-name>' (or it may not exist).

私のコード:

const {SecretManagerServiceClient} = require('@google-cloud/secret-manager');
const secretClient = new SecretManagerServiceClient();

...

const [version] = await secretClient.accessSecretVersion({
  name: secretName
});
const secret = version.payload.data.toString();

ドキュメントの手順に従い、サービスへの呼び出しでシークレットの完全な名前を指定し (したがって、 GCP Secret Manager でシークレットにアクセスできないprojects/<project-id>/secrets/<secret-name>/versions/latestという問題はここでは適用されません)、そのサービス アカウントを指定します。クラウド機能を「シークレット マネージャー シークレット アクセサー」ロールで実行します (これにより、「Firebase アプリが Google シークレット マネージャーに接続していないのはなぜですか?」の根本的な問題を除外する必要があります)。

この問題は、curl を使用してローカルで関数をトリガーしようとするときと、UI でテストするとき (GCF > 関数の詳細 > テスト) の両方で発生しました。

ここに欠けているものはありますか?

4

1 に答える 1