Содержимое схемы GraphQL большое, поэтому хотелось бы сохранить его в контейнере больших двоичных объектов и получить к нему доступ из шаблона управления API ARM, чтобы получить его содержимое. Я уже храню связанные шаблоны в той же области и у меня достаточно деталей, чтобы составить URI с токеном SAS. У меня проблема с получением содержимого из блоба и загрузкой его в строковую переменную. Что бы я ни пытался, я не могу получить доступ к содержимому.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"ApimServiceName": {
"type": "string"
},
"appInsightsName": {
"type": "string"
},
"_artifactsLocation" : {
"type": "string"
},
"_artifactsLocationSasToken" :{
"type": "string"
},
"_buildNumber" :{
"type": "string"
},
"KeyvaultName": {
"type": "string"
}
},
"variables": {
"linkedSchemas": {
"schemauri": "[concat(parameters('_artifactsLocation'), parameters('_buildNumber'), '/sample-graphql-schema.graphql',parameters('_artifactsLocationSasToken'))]"
}
},
"resources": [
{
"apiVersion": "2021-08-01",
"type": "Microsoft.ApiManagement/service/apis",
"name": "[concat(parameters('ApimServiceName'), '/graphql-sample')]",
"dependsOn": [],
"properties": {
"description": "",
"authenticationSettings": {
"subscriptionKeyRequired": false
},
"subscriptionKeyParameterNames": {
"header": "Ocp-Apim-Subscription-Key",
"query": "subscription-key"
},
"type": "graphql",
"apiRevision": "1",
"subscriptionRequired": true,
"displayName": "GraphQL API",
"serviceUrl": "https://emea.sample.com/api/graphql",
"path": "graphql-sample",
"protocols": [
"http",
"https"
]
}
},
{
"apiVersion": "2021-08-01",
"type": "Microsoft.ApiManagement/service/apis/schemas",
"name": "[concat(parameters('ApimServiceName'), '/graphql-sample/graphql')]",
"dependsOn": [
"[resourceId('Microsoft.ApiManagement/service/apis', parameters('ApimServiceName'), 'graphql-sample')]"
],
"properties": {
"contentType": "application/vnd.ms-azure-apim.graphql.schema",
"document": {
"value": "[concat('data:text/plain;charset=utf-8;base64,', base64(variables('linkedSchemas').schemauri))]"
}
}
}, etc...
Кто-нибудь может поделиться, как получить содержимое блоба? Возможно, мне нужно найти другой способ доступа к блобу. Весь код в его нынешнем виде превращает сам URI в base64.





Насколько я знаю, шаблоны ARM сами по себе не поддерживают извлечение значений из URL-адреса. Но шаблоны APIM поддерживают передачу значений, для которых служба может получить содержимое.
Для этого вам не нужен подресурс Microsoft.ApiManagement/service/apis/schemas, вместо этого у самого ресурса Microsoft.ApiManagement/service/apis есть свойства, которые вам нужно установить.
format должен быть установлен на graphql-linkvalue должен быть установлен URL-адрес вашего файла схемы GraphQL, включая токен SAS.Обратитесь к справочному документу для получения дополнительной информации.
Мне нужно продолжить расследование, сначала я получаю ошибку синтаксического анализа при получении объявления API. Я вернусь, когда у меня что-то получится. Похоже, это правильное средство.