有没有办法使用'listkeys'访问私有blob存储上的链接模板。这样我每次部署时都不需要生成SAS令牌。有点像:
try {
JSONObject oResponse = new JSONObject(response)
JSONArray userArray = oResponse.getJSONArray("data");
for (int i=0;userArray.length()<i;i++){
final JSONObject o = userArray.getJSONObject(i);
User user=new User();
// You must know what type you expect from your response
// eg. String, int, ...
String name= o.optString("name", "");
String empcode= o.optString("empcode", "");
String location= o.optString("location", "");
String department= o.optString("department", "");
String username= o.optString("username", "");
// You need to add the setter to your model class
user.setName(name);
user.setEmpcode(empcode);
// ... and so on ...
userlist.add(user);
}
进入:
"Concat('DefaultEndpointsProtocol=https;AccountName=',variables('StorageAccountName'),';AccountKey=',listKeys(resourceId('otherResourceGroup', 'Microsoft.Storage/storageAccounts', variables('StorageAccountName')), providers('Microsoft.Storage', 'storageAccounts').apiVersions[0]).keys[0].value)]"
MS文档没有提及它,但它很容易部署而无需生成令牌。
回应汤姆为什么我不能使用keyVault,因为它仍然需要输入。以下是需要在内部参数中的令牌代码:
"parameters": {
"sasToken": { "type": "securestring" }
},
"resources": [
{
"apiVersion": "2017-05-10",
"name": "linkedTemplate",
"type": "Microsoft.Resources/deployments",
"properties": {
"mode": "incremental",
"templateLink": {
"uri": "[concat('https://storagecontosotemplates.blob.core.windows.net/templates/helloworld.json', parameters('sasToken'))]",
"contentVersion": "1.0.0.0"
}
}
}
],
...在Azure模板中看起来像这样。如您所见,您仍需要输入一些凭据:(
答案 0 :(得分:0)
无需生成令牌即可轻松部署
"Concat('DefaultEndpointsProtocol=https;AccountName=',variables('StorageAccountName'),';AccountKey=',listKeys(resourceId('otherResourceGroup', 'Microsoft.Storage/storageAccounts', variables('StorageAccountName')), providers('Microsoft.Storage', 'storageAccounts').apiVersions[0]).keys[0].value)]"
您提到的代码是从存储帐户获取连接字符串。 Azure存储提供主键和辅助键,因此我们可以使用列表键API来获取帐户密钥。 但是对于SAS token我们需要生成它,我们需要提供开始时间,到期时间,访问权限等。根据我的经验,没有与listkey生成sas令牌相同的方式。
这样,每次我去除
时,我都不需要生成SAS令牌
但是我们可以将SAS令牌存储在Key Vault中,然后我们可以在ARM模板中动态获取值。我们可以参考此blog的详细信息。
{
"$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"sasToken": {
"reference": {
"keyVault": {
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resource group name}/providers/Microsoft.KeyVault/vaults/MyUniqueKeyVaultName"
},
"secretName": "secretName"
}
}
}
}