通过 CLI 获取 Function App 的默认主机密钥
Get the default Host Key for a Function App via the CLI
我正在使用 az cli,我需要检索给定函数应用程序的 默认主机密钥。
我在 az functionapp
下尝试了各种选项,但输出的 none 似乎包含密钥。
例如,下面输出了很多关于 Function App 的信息,但没有任何 Host 或 Function Keys 的信息。
az functionapp show --resource-group my-resource-group --name my-function-app
我需要一个 Linux 兼容的解决方案,所以 PowerShell 是不可能的。但是,我能够翻译 .
中提供的解决方案
TENANT="XXX"
CLIENT_ID="XXX"
CLIENT_SECRET="XXX"
SUBSCRIPTION_ID="XXX"
RESOURCE_GROUP="my-resource-group"
FUNCTION_APP_NAME="my-function-app"
API_URL="https://$FUNCTION_APP_NAME.scm.azurewebsites.net/api/functions/admin/token"
SITE_URL="https://$FUNCTION_APP_NAME.azurewebsites.net/admin/host/systemkeys/_master"
### Grab a fresh bearer access token.
ACCESS_TOKEN=$(curl -s -X POST -F grant_type=client_credentials -F resource=https://management.azure.com/ -F client_id=$CLIENT_ID -F client_secret=$CLIENT_SECRET https://login.microsoftonline.com/$TENANT/oauth2/token | jq '.access_token' -r)
### Grab the publish data for the Funciton App and output it to an XML file.
PUBLISH_DATA=$(curl -s -X POST -H "Content-Length: 0" -H "Authorization: Bearer $ACCESS_TOKEN" https://management.azure.com/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.Web/sites/$FUNCTION_APP_NAME/publishxml?api-version=2016-08-01)
echo $PUBLISH_DATA > publish_data.xml
### Grab the Kudu username and password from the publish data XML file.
USER_NAME=$(xmlstarlet sel -t -v "//publishProfile[@profileName='$FUNCTION_APP_NAME - Web Deploy']/@userName" publish_data.xml)
USER_PASSWORD=$(xmlstarlet sel -t -v "//publishProfile[@profileName='$FUNCTION_APP_NAME - Web Deploy']/@userPWD" publish_data.xml)
### Generate a JWT that can be used with the Functions Key API.
JWT=$(curl -s -X GET -u $USER_NAME:$USER_PASSWORD $API_URL | tr -d '"')
### Grab the '_master' key from the Functions Key API.
KEY=$(curl -s -X GET -H "Authorization: Bearer $JWT" $SITE_URL | jq -r '.value')
FOR /F "tokens=* USEBACKQ" %%F IN (`CALL az rest --method post --uri "/subscriptions/{your
subscriptionId}/resourceGroups/{yourresourcegroup}/providers/Microsoft.Web/sites/{yourfunctionname}/host/default/listKeys?api-version=2018-11-01" --query functionKeys.default --output tsv`) DO (
SET apikey=%%F
)
echo ##vso[task.setvariable variable=functionhostKey;]%apikey%
apikey
获取值并放入变量 functionhostKey
我正在使用 az cli,我需要检索给定函数应用程序的 默认主机密钥。
我在 az functionapp
下尝试了各种选项,但输出的 none 似乎包含密钥。
例如,下面输出了很多关于 Function App 的信息,但没有任何 Host 或 Function Keys 的信息。
az functionapp show --resource-group my-resource-group --name my-function-app
我需要一个 Linux 兼容的解决方案,所以 PowerShell 是不可能的。但是,我能够翻译
TENANT="XXX"
CLIENT_ID="XXX"
CLIENT_SECRET="XXX"
SUBSCRIPTION_ID="XXX"
RESOURCE_GROUP="my-resource-group"
FUNCTION_APP_NAME="my-function-app"
API_URL="https://$FUNCTION_APP_NAME.scm.azurewebsites.net/api/functions/admin/token"
SITE_URL="https://$FUNCTION_APP_NAME.azurewebsites.net/admin/host/systemkeys/_master"
### Grab a fresh bearer access token.
ACCESS_TOKEN=$(curl -s -X POST -F grant_type=client_credentials -F resource=https://management.azure.com/ -F client_id=$CLIENT_ID -F client_secret=$CLIENT_SECRET https://login.microsoftonline.com/$TENANT/oauth2/token | jq '.access_token' -r)
### Grab the publish data for the Funciton App and output it to an XML file.
PUBLISH_DATA=$(curl -s -X POST -H "Content-Length: 0" -H "Authorization: Bearer $ACCESS_TOKEN" https://management.azure.com/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.Web/sites/$FUNCTION_APP_NAME/publishxml?api-version=2016-08-01)
echo $PUBLISH_DATA > publish_data.xml
### Grab the Kudu username and password from the publish data XML file.
USER_NAME=$(xmlstarlet sel -t -v "//publishProfile[@profileName='$FUNCTION_APP_NAME - Web Deploy']/@userName" publish_data.xml)
USER_PASSWORD=$(xmlstarlet sel -t -v "//publishProfile[@profileName='$FUNCTION_APP_NAME - Web Deploy']/@userPWD" publish_data.xml)
### Generate a JWT that can be used with the Functions Key API.
JWT=$(curl -s -X GET -u $USER_NAME:$USER_PASSWORD $API_URL | tr -d '"')
### Grab the '_master' key from the Functions Key API.
KEY=$(curl -s -X GET -H "Authorization: Bearer $JWT" $SITE_URL | jq -r '.value')
FOR /F "tokens=* USEBACKQ" %%F IN (`CALL az rest --method post --uri "/subscriptions/{your
subscriptionId}/resourceGroups/{yourresourcegroup}/providers/Microsoft.Web/sites/{yourfunctionname}/host/default/listKeys?api-version=2018-11-01" --query functionKeys.default --output tsv`) DO (
SET apikey=%%F
)
echo ##vso[task.setvariable variable=functionhostKey;]%apikey%
apikey
获取值并放入变量 functionhostKey