Выполните tnet пример кода ядра для использования DescribeInstancesAsyn c для получения AWS данных экземпляра EC2 - PullRequest
0 голосов
/ 20 января 2020

Я использовал пример проекта AWS с. NET Framework 4.6.1, и у него был метод DescribeInstances, который работал. При попытке переместить образец кода в ASP. NET Core я обнаружил, что должен использовать DescribeInstancesAsync. Я не могу понять, как получить DescribeInstancesResponse.

// Print the number of Amazon EC2 instances.
IAmazonEC2 ec2 = new AmazonEC2Client();
DescribeInstancesRequest ec2Request = new DescribeInstancesRequest();
DescribeInstancesResponse ec2Response;
IAsyncResult asyncResult;

asyncResult = ec2.DescribeInstancesAsync(ec2Request);

while(!asyncResult.IsCompleted) 
{
        // Do some work
}
try 
{
        // ec2Response = 
}
catch (Exception ex) 
{
        Console.WriteLine(ex.ToString());
}

Я использую AWSSDK.EC2 версии 3.3.152.1 и ASP. NET Core 3.1

1 Ответ

0 голосов
/ 07 февраля 2020

Do tnet пример кода ядра для подсчета AWS экземпляров в регионе

Первоначальная настройка здесь не рассматривается

  • Вы должны быть знакомы с Do tnet основные принципы и установлен требуемый Do tnet SDK.
  • Следуйте инструкциям здесь для начальной настройки AWS SDK для. NET, включая настройку AWS учетные данные.
  • Добавьте настройки конфигурации в appsettings.Development.json
"AWS" : {
  "ProfileName" : "<YourProfileName>",
  "Region" : "<your region>"
}
  • В регионе будет определяться, где приведенный ниже код будет искать экземпляры.
  • Ниже приведены шаги для Do tnet версии ядра 3.1

Создание MVC проекта и установка пакетов

  • dotnet new mvc –o WebProject Создание нового MVC проекта под названием WebProject
  • dotnet add package AWSSDK.EC2 Установите пакет AWSSDK.EC2
  • dotnet add package AWSSDK.Extensions.NETCore.Setup Установите пакет AWSSDK.Extensions.NETCore.Setup, чтобы использовать конфигурацию AWS в своем коде. Подробнее см. здесь .

Добавление класса конфигурации в HomeController

  • Измените метод ConfigureServices в файле Startup.cs, добавив эта строка services.AddSingleton(Configuration);
public void ConfigureServices(IServiceCollection services)
{
    services.AddControllersWithViews();
    services.AddSingleton(Configuration);
}
  • В ваш файл HomeController.cs добавьте следующую строку в раздел usings using Microsoft.Extensions.Configuration;

  • Изменить конструктор так, чтобы он выглядел так, как показано ниже. Также добавьте поле _config только для чтения.

private readonly IConfiguration _config;

public HomeController(ILogger<HomeController> logger, IConfiguration config)
{
    _logger = logger;
    _config = config;
}

Добавьте код для получения данных из AWS

  • В ваш файл HomeController.cs добавьте в секцию usings
using Amazon.EC2;
using Amazon.EC2.Model;
using System.Text;
  • К вашему HomeController.cs добавьте следующий метод для получения количества экземпляров из AWS.
private async Task<string> GetInstances()
{
    // Print the number of Amazon EC2 instances.
    var options = _config.GetAWSOptions();
    IAmazonEC2 ec2 = options.CreateServiceClient<IAmazonEC2>();
    DescribeInstancesRequest ec2Request = new DescribeInstancesRequest();
    DescribeInstancesResponse ec2Response;

    var sb = new StringBuilder();

    try
    {
        ec2Response = await ec2.DescribeInstancesAsync(ec2Request);
        if (ec2Response.Reservations.Any())
        {
            sb.AppendFormat("The number of instances are {0} in {1}",ec2Response.Reservations[0].Instances.Count(), _config["AWS:Region"]);
        }
        else
        {
            sb.AppendFormat("No instances found in {0}", _config["AWS:Region"]);
        }
    }
    catch (Exception ex)
    {
        sb.Append(ex.ToString());
    }

    return sb.ToString();
}

Измените ваш HomeController.cs метод индекса так, чтобы он выглядел следующим образом:

public async Task<IActionResult> Index()
{
    var numberOfInstances = await GetInstances();
    ViewData["numberOfInstances"] = numberOfInstances;
    return View();
}
  • Добавьте следующую строку в связанный Index.cshtml просмотр <p>@ViewData["numberOfInstances"]</p>

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...