Azure ReservedIP-адрес и облачная служба без конечной точки
У меня есть облачный сервис, который открывает сокет извне и требует белый список IP-адресов. Ничто не будет инициировать внешнее соединение с моим сервисом.
Когда я пытаюсь опубликовать его с соответствующим адресом ReservedIP, я получаю следующую ошибку: Validation Errors: Error validating the .cscfg file against the .csdef file. Severity:Error, message:ReservedIP 'xxxx' was not mapped to an endpoint. The service definition must contain atleast one endpoint that maps to the ReservedIP..
.cscfg
<?xml version="1.0" encoding="utf-8"?>
<ServiceConfiguration serviceName="Gateway" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration" osFamily="5" osVersion="*" schemaVersion="2015-04.2.6">
<Role name="WorkerRole1">
<Instances count="1" />
<ConfigurationSettings>
<Setting name="Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString" value="yyyyy" />
<Setting name="APPINSIGHTS_INSTRUMENTATIONKEY" value="xxx" />
<Setting name="ASPNETCORE_ENVIRONMENT" value="dev" />
</ConfigurationSettings>
</Role>
<NetworkConfiguration>
<AddressAssignments>
<ReservedIPs>
<ReservedIP name="xxxxx"/>
</ReservedIPs>
</AddressAssignments>
</NetworkConfiguration>
</ServiceConfiguration>
- Есть ли способ развернуть это без указания конечной точки? (Я использую VS2017RC для развертывания)
- Если нет, то как будет выглядеть xml для фиктивной "конечной точки" и какие риски я получу при этом?
- Есть ли лучший способ, которым я должен подходить к этому?
2 ответа
Похоже, что ReservedIP поддерживается только со службами, содержащими внешнюю конечную точку. Что вы можете сделать, это добавить внешнюю конечную точку, но заблокировать ее с помощью NSG ( Network Security Group).
О помощи в определении конечной точки см.
Кроме того, если вы используете порт, который на самом деле не связан с машиной, это не должно быть уязвимостью; но добавление запрещающего правила в NSG будет охватывать любые изменения в будущем.
[В сторону] Если у вашей службы нет входящих соединений, вам следует рассмотреть возможность использования рабочей роли вместо веб-роли. Длительные потоки могут быть прерваны в экземплярах веб-ролей.
Я столкнулся с той же проблемой, и рабочим решением для меня было взять отсюда " Конечную точку ввода" и поместить ее в файл.csdef внутри тега WorkerRole.
<Endpoints>
<InputEndpoint name="StandardWeb" protocol="http" port="80" localPort="80" />
</Endpoints>