使用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
相关产品推荐
相关产品推荐

