Yod*_*oda 5 azure azure-cli azure-keyvault
我有一个名为 keyvault 的密钥库myKeyVault,里面可能有一个名为 的密钥myKey。我正在阅读 Azure CLI 的文档:https://learn.microsoft.com/en-us/cli/azure/keyvault/key ?view=azure-cli-latest#az_keyvault_key_list 但我不知道如何检查如果给定名称的键确实存在。
如果我同意的话:
az keyvault key show --vault-name myKeyVault --name keythatdoesntexist
我确实收到 ResourceNotFoundError: (KeyNotFound) 错误,但我需要的是如果密钥存在则获取 true 或 false。
小智 5
虽然上述方法可能有效,但它是通过检查null失败命令返回的值来完成的az keyvault show <none existent secret>,我相信以下是处理这种情况的更好方法,特别是在自动化基础设施发布管道中
# get Command Line Args
keyVaultName=$1
secretName=$2
# Check if secret exists
secret_exists=$(az keyvault secret list --vault-name $keyVaultName --query "contains([].id, 'https://$keyVaultName.vault.azure.net/secrets/$secretName')")
if [ $secret_exists == true ]; then
echo "Secret '$secretName' exists! fetching..."
secret_val=$(az keyvault secret show --name $secretName --vault-name $keyVaultName --query "value")
echo "##vso[task.setvariable variable=ssh_value]$secret_val"
else
echo "Secret '$secretName' do not exist! creating..."
ssh-keygen -f ~/.ssh/id_rsa_infra -q -P ""
ssh_value=$(<~/.ssh/id_rsa_infra.pub)
echo "##vso[task.setvariable variable=ssh_value]$ssh_value"
az keyvault secret set --vault-name $keyVaultName --name $secretName -f ~/.ssh/id_rsa_infra.pub >/dev/null
fi
Run Code Online (Sandbox Code Playgroud)
没有直接的“如果存在”API。但一种简单的方法是仅捕获az keyvault key show --vault-name myKeyVault --name keythatdoesntexist变量中的输出并检查null. 下面的例子是在 powershell 中。
$key = az keyvault key show --vault-name myKeyVault --name keythatdoesntexist
if ($key -ne $null) {
write-host 'Exists'
}
else {
write-host 'Does not exist'
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7306 次 |
| 最近记录: |