Usando AWSSDK.Extensions.NETCore.Setup e a interface IConfiguration - AWS SDK for .NET

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Usando AWSSDK.Extensions.NETCore.Setup e a interface IConfiguration

(Este tópico era anteriormente intitulado “Configurando o AWS SDK for .NET com o.NET Core”)

Uma das principais alterações no .NET Core é a retirada do ConfigurationManager e dos arquivos padrão app.config e web.config usados nos aplicativos .NET Framework e ASP.NET.

A configuração no .NET Core é baseada em pares de chave/valor estabelecidos pelos provedores de configuração. Os provedores de configuração leem dados de configuração em pares de chave/valor de uma variedade de fontes de configuração, incluindo argumentos de linha de comando, arquivos de diretório, variáveis de ambiente e arquivos de configurações.

nota

Para obter mais informações, consulte Configuração no ASP.NET Core.

Para facilitar o uso do AWS SDK for .NET com o .NET Core, você pode usar o pacote NuGet AWSSDK.Extensions.NETCore.Setup. Como várias bibliotecas do .NET Core, ele adiciona métodos de extensão à interface IConfiguration para tornar direta a obtenção da configuração da AWS.

Usar o AWSSDK.Extensions.NETCore.Setup

Suponha que você crie um aplicativo ASP.NET Core Model-View-Controller (MVC), o que pode ser feito com o modelo de aplicativo web ASP.NET Core no Visual Studio ou executando dotnet new mvc ... na CLI do .NET Core. Quando você cria tal aplicativo, o construtor do Startup.cs lida com a configuração lendo várias fontes de entrada de provedores de configuração, como o appsettings.json.

public Startup(IConfiguration configuration) { Configuration = configuration; }

Para usar o objeto Configuration a fim de obter as opções da AWS, primeiro adicione o pacote NuGet AWSSDK.Extensions.NETCore.Setup. Em seguida, adicione as opções ao arquivo de configuração, conforme descrito a seguir.

Observe que um dos arquivos adicionados ao seu projeto é appsettings.Development.json. Isso corresponde a um EnvironmentName definido como Desenvolvimento. Durante o desenvolvimento, você coloca sua configuração nesse arquivo, que só é lido durante o teste local. Ao implantar uma instância do Amazon EC2 que tenha o EnvironmentName definido como Produção, esse arquivo será ignorado e o AWS SDK for .NET retorna às credenciais do IAM e à região que foram configuradas para a instância do Amazon EC2.

As definições de configuração a seguir mostram exemplos dos valores que você pode incluir no arquivo appsettings.Development.json em seu projeto para fornecer as configurações da AWS.

{ "AWS": { "Profile": "local-test-profile", "Region": "us-west-2" }, "SupportEmail": "TechSupport@example.com" }

Para acessar uma configuração em um arquivo CSHTML, use a diretiva Configuration.

@using Microsoft.Extensions.Configuration @inject IConfiguration Configuration <h1>Contact</h1> <p> <strong>Support:</strong> <a href='mailto:@Configuration["SupportEmail"]'>@Configuration["SupportEmail"]</a><br /> </p>

Para acessar as opções da AWS definidas no arquivo do código, chame o método de extensão GetAWSOptions adicionado em IConfiguration.

Para construir um cliente de serviço a partir dessas opções, chame CreateServiceClient. O código de exemplo a seguir mostra como criar um cliente de serviço do Amazon S3. (Certifique-se de adicionar o pacote NuGet AWSSDK.S3 ao seu projeto.)

var options = Configuration.GetAWSOptions(); IAmazonS3 client = options.CreateServiceClient<IAmazonS3>();

Também é possível criar vários clientes de serviço com configurações incompatíveis ao usar várias entradas no arquivo appsettings.Development.json, conforme mostrado nos exemplos a seguir, em que a configuração de service1 inclui a região us-west-2 e a configuração de service2 inclui o URL do endpoint especial.

{ "service1": { "Profile": "default", "Region": "us-west-2" }, "service2": { "Profile": "default", "ServiceURL": "URL" } }

Depois, você pode obter as opções para um serviço específico usando a entrada no arquivo JSON. Por exemplo, para obter as configurações para service1, use o seguinte.

var options = Configuration.GetAWSOptions("service1");

Valores permitidos no arquivo appsettings

Os valores de configuração do aplicativo a seguir podem ser definidos no arquivo appsettings.Development.json. Os nomes de campo devem usar a capitalização mostrada. Para obter mais detalhes sobre essas configurações, consulte a classe AWS.Runtime.ClientConfig.

  • Região

  • Perfil

  • ProfilesLocation

  • SignatureVersion

  • RegionEndpoint

  • UseHttp

  • ServiceURL

  • AuthenticationRegion

  • AuthenticationServiceName

  • MaxErrorRetry

  • LogResponse

  • BufferSize

  • ProgressUpdateInterval

  • ResignRetries

  • AllowAutoRedirect

  • LogMetrics

  • DisableLogging

  • UseDualstackEndpoint

Injeção de dependência no núcleo do ASP.NET

O pacote NuGet AWSSDK.Extensions.NETCore.Setup também se integra a um novo sistema de injeção de dependência no núcleo do ASP.NET. O método ConfigureServices na classe Startup do seu aplicativo é o local onde os serviços MVC são adicionados. Se o aplicativo usa a Estrutura de entidade, também é aqui que ela é inicializada.

public void ConfigureServices(IServiceCollection services) { // Add framework services. services.AddMvc(); }
nota

O histórico sobre a injeção de dependência no .NET Core está disponível no site de documentação do .NET Core.

O pacote NuGet AWSSDK.Extensions.NETCore.Setup adiciona novos métodos de extensão ao IServiceCollection que podem ser usados para adicionar serviços da AWS à injeção de dependência. O código a seguir mostra como adicionar as opções da AWS lidas a partir de IConfiguration para adicionar o Amazon S3 e o DynamoDB à lista de serviços. (Certifique-se de adicionar os pacotes NuGet AWSSDK.S3 e AWSSDK.DynamoDBv2 ao seu projeto.)

public void ConfigureServices(IServiceCollection services) { // Add framework services. services.AddMvc(); services.AddDefaultAWSOptions(Configuration.GetAWSOptions()); services.AddAWSService<IAmazonS3>(); services.AddAWSService<IAmazonDynamoDB>(); }

Agora, se os controladores MVC usam IAmazonS3 ou IAmazonDynamoDB como parâmetros em seus construtores, o sistema de injeção de dependência passa nesses serviços.

public class HomeController : Controller { IAmazonS3 S3Client { get; set; } public HomeController(IAmazonS3 s3Client) { this.S3Client = s3Client; } ... }