我想通过 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 中提取您要更新的数据库实例的 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-latest#az-cosmosdb-list
有关 --query / JMESPath 的更多信息请参见此处 - https://jmespath.org
az cosmosdb update 命令需要很长时间才能返回。我后面有一个 echo 语句,但尚未打印在控制台上。这正常吗?