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>
Запустите проект и, если все хорошо, он сообщит вам, сколько экземпляров было найдено в указанном вами регионе.