Как установить RegionEndPoint для AWS AmazonSQSClient в C # в файле конфигурации приложения - PullRequest
0 голосов
/ 14 ноября 2018

Я объявил RegionEndpoint в конфигурации моего приложения следующим образом

<add key="AWSRegion" value="EUWest1" xdt:Transform="Insert"/>

И в моей программе я пытаюсь назвать это AWSRegion

 private static string RegionEndPoint = ConfigurationManager.AppSettings["AWSRegion"];

Поэтому, когда я объявляю свой SQSClient, я получаю ошибку, которая не может преобразовать строку в RegionEndPoint

var SQSClient = new AmazonSQSClient(credentials, RegionEndPoint);

Я попытался разобраться в этом вопросе здесь Как установить EndPoint / Region для C # .NET SDK: EC2Client?

но это для EC2Client, так что, похоже, у меня не получается.

Я также пытался объявить регион-точку с помощью AWS SDK следующим образом

private static RegionEndpoint RegionEndPoint = ConfigurationManager.AppSettings["AWSRegion"];

Я также получаю сообщение об ошибке, в котором говорится, что невозможно неявно преобразовать строку типа в Amazon.RegionEndpoint

Так что, если есть способ добавить RegionEndPoint в файл конфигурации и использовать его в SQSClient, пожалуйста, помогите мне.

1 Ответ

0 голосов
/ 15 ноября 2018

ConfigurationManager.AppSettings["AWSRegion"] возвращает строковое значение EUWest1, но RegionEndpoint является классом.

AmazonSQSClient constructo ожидает экземпляр класса RegionEndpoint в качестве второго параметра, но, поскольку вы передаете строковое значение, вы получаете сообщение об ошибке.

Вы можете получить экземпляр класса RegionEndpoint из значения конфигурации, используя следующий подход.

RegionEndpoint класс имеет статический метод GetBySystemName. Вам нужно передать имя региона этому методу, и он вернет соответствующий экземпляр класса RegionEndpoint.

Но для этого вам нужно указать правильное название региона. Вам нужно указать это значение в конфигурации. В вашем случае значение конфигурации должно быть eu-west-1. Значение конфигурации EUWest1 здесь не будет работать.

Здесь вы можете найти все действительные названия регионов AWS здесь

<add key="AWSRegion" value="eu-west-1" xdt:Transform="Insert"/>

С указанным выше значением конфигурации вы можете использовать следующий код, чтобы получить регион на его основе.

private static RegionEndpoint RegionEndPoint = 
      RegionEndpoint.GetBySystemName(ConfigurationManager.AppSettings["AWSRegion"]);

Приведенный выше код даст вам экземпляр RegionEndPoint для EU (Ireland) Region региона, и теперь вы можете использовать его для AmazonSQSClient следующим образом.

var SQSClient = new AmazonSQSClient(credentials, RegionEndPoint);

Это поможет вам решить проблему, с которой вы столкнулись.

...