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.SetupIConfiguration
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
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
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; } ... }