我想通过Azure CLI将我的IP添加到cosmosdb防火墙。使用Azure CLI的唯一方法是使用az cosmosdb update
,但它会覆盖防火墙中的当前IP。
我使用的是MacOS,所以我可以通过curl ifconfig.me
获取我的IP。
如何在不覆盖当前IP的情况下将我的IP添加到防火墙?
您可以简单地使用az cosmosdb list
获取列表,并将您的IP附加到列表中,cosmosdb update
使用该列表:
DESIRED_IP=$(curl ifconfig.me)
CURRENT_IPS=$(az cosmosdb list | jq -r '.[0].ipRules | .[] | .ipAddressOrRange' | paste -sd "," -)
DESIRED_IPS=$CURRENT_IPS,$DESIRED_IP
az cosmosdb update -n .. -g .. --ip-range-filter "$DESIRED_IPS"
你不能简单地添加一个新的IP(就像大多数azure服务一样😡),您需要获取当前的IP列表,将新的添加到末尾,然后更新整个列表。
az cosmosdb list
获取一个json对象,该对象包含有关所有cosmos数据库实例的所有信息。
诀窍是使用查询(--query
(从json中提取只用于要更新的db实例的IP列表。
下面是一个示例脚本:
# Your IP
$IP_ADDRESS="1.2.3.4"
# Get current cosmos IP rules
CURRENT_IPS=$(az cosmosdb list --query "[?instanceId=='my-istance-guid-here'].ipRules[].ipAddressOrRange | join(',',@)" | sed 's/"//g')
# Add new IP to the exisintg listb (stupid cosmos has different system to everything else - cant justy add a new IP)
DESIRED_IPS=$CURRENT_IPS,$IP_ADDRESS
# Add the IP address to the Cosmos DB firewall using the Azure CLI
az cosmosdb update --name "my-cosmos-db-name-here" --resource-group "my-resource-group" --ip-range-filter "$DESIRED_IPS"
有关az命令的更多信息,请点击此处-https://learn.microsoft.com/en-us/cli/azure/cosmosdb?view=azure-cli最新#az cosmosdb列表
关于-query/JMESPath的更多信息,请点击此处-https://jmespath.org