You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Azure JavaScript SDK创建容器注册表令牌时如何生成密码?

Azure容器注册表令牌:创建时生成密码及SDK实现方法

核心结论

  • 无法在创建令牌的同时生成密码:Azure容器注册表的设计逻辑中,令牌创建与凭据(密码)生成是两个独立操作,beginCreateAndWait仅负责初始化令牌的权限与基础信息,不包含密码生成能力,你遇到的报错正是该设计的直接体现。

使用JavaScript SDK生成令牌密码的步骤

需先通过beginCreateAndWait完成令牌创建,再调用generateCredentials方法单独生成密码,具体实现如下:

1. 依赖安装

确保已安装Azure容器注册表SDK包:

npm install @azure/container-registry @azure/identity

2. 代码实现

const { ContainerRegistryClient } = require("@azure/container-registry");
const { DefaultAzureCredential } = require("@azure/identity");

async function generateTokenPassword() {
  // 初始化注册表客户端
  const client = new ContainerRegistryClient(
    "https://<你的注册表名称>.azurecr.io",
    new DefaultAzureCredential()
  );

  // 1. 创建令牌(若已完成此步骤可跳过)
  const tokenName = "custom-auth-token";
  await client.beginCreateAndWait(tokenName, {
    scopeMapId: "/subscriptions/<订阅ID>/resourceGroups/<资源组>/providers/Microsoft.ContainerRegistry/registries/<注册表名称>/scopeMaps/<作用域映射名称>"
    // 可添加description等其他令牌配置项
  });

  // 2. 生成令牌密码
  const credResult = await client.generateCredentials(tokenName, {
    passwords: [
      { name: "password1" }, // 可选password1或password2,调用会重置对应密码
      // { name: "password2" } // 可同时生成两个独立密码
    ],
    expiry: new Date(Date.now() + 365 * 24 * 60 * 60 * 1000) // 设置密码有效期,示例为1年
  });

  // 输出生成的密码(仅本次调用可见,需立即保存)
  console.log("生成的令牌密码:", credResult.passwords);
}

generateTokenPassword().catch(console.error);

关键说明

  • generateCredentials会重置指定名称的密码,若令牌已有对应密码,调用后原密码立即失效。
  • 执行操作的Azure身份需拥有Microsoft.ContainerRegistry/registries/tokens/generateCredentials/action权限。
  • 生成的密码仅在调用返回时可见,后续无法通过SDK查询,需妥善存储。

内容的提问来源于stack exchange,提问作者Jimmy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 11:55:01