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>
  1. Есть ли способ развернуть это без указания конечной точки? (Я использую VS2017RC для развертывания)
  2. Если нет, то как будет выглядеть xml для фиктивной "конечной точки" и какие риски я получу при этом?
  3. Есть ли лучший способ, которым я должен подходить к этому?

2 ответа

Решение

Похоже, что ReservedIP поддерживается только со службами, содержащими внешнюю конечную точку. Что вы можете сделать, это добавить внешнюю конечную точку, но заблокировать ее с помощью NSG ( Network Security Group).

О помощи в определении конечной точки см.

https://docs.microsoft.com/en-us/azure/cloud-services/cloud-services-enable-communication-role-instances

Кроме того, если вы используете порт, который на самом деле не связан с машиной, это не должно быть уязвимостью; но добавление запрещающего правила в NSG будет охватывать любые изменения в будущем.

[В сторону] Если у вашей службы нет входящих соединений, вам следует рассмотреть возможность использования рабочей роли вместо веб-роли. Длительные потоки могут быть прерваны в экземплярах веб-ролей.

Я столкнулся с той же проблемой, и рабочим решением для меня было взять отсюда " Конечную точку ввода" и поместить ее в файл.csdef внутри тега WorkerRole.

<Endpoints>
  <InputEndpoint name="StandardWeb" protocol="http" port="80" localPort="80" />
</Endpoints> 
Другие вопросы по тегам