Uso de AWSSDK.Extensions.NETCore.Setup y la interfaz IConfiguration - AWS SDK for .NET

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Uso de AWSSDK.Extensions.NETCore.Setup y la interfaz IConfiguration

(Antes, este tema se titulaba “Configuración de AWS SDK for .NET con .NET Core”).

Uno de los mayores cambios en .NET Core es la eliminación de ConfigurationManager y de los archivos app.config y web.config estándar que se usaban con aplicaciones de .NET Framework y ASP.NET.

La configuración en .NET Core se basa en pares clave-valor establecidos por proveedores de configuración. Los proveedores de configuración leen los datos de configuración en pares clave-valor desde diversos orígenes de configuración, incluidos argumentos de línea de comandos, archivos de directorio, variables de entorno y archivos de configuración.

nota

Para obtener más información, consulte Configuración en ASP.NET Core.

Para usar AWS SDK for .NET con .NET Core más fácilmente, puede utilizar el paquete NuGet AWSSDK.Extensions.NETCore.Setup. Como muchas bibliotecas de .NET Core, agrega métodos de extensión a la interfaz IConfiguration para obtener la configuración de AWS de forma fluida.

Uso de AWSSDK.Extensions.NETCore.Setup

Imaginemos que creamos una aplicación Model-View-Controller (MVC) de ASP.NET Core, algo que podemos realizar con la plantilla Aplicación web de ASP.NET Core en Visual Studio o ejecutando dotnet new mvc ... en la CLI de .NET Core. Al crear una aplicación de este tipo, el constructor de Startup.cs administra la configuración leyendo varios orígenes de entrada de proveedores de configuración, como appsettings.json.

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

Para usar el objeto Configuration para obtener las opciones de AWS, agregue primero el paquete NuGet AWSSDK.Extensions.NETCore.Setup. Luego, agregue sus opciones al archivo de configuración como se describe a continuación.

Fíjese en que uno de los archivos agregados al proyecto es appsettings.Development.json. Corresponde a un EnvironmentName establecido en Development. Durante el desarrollo, pondremos la configuración en este archivo, que solo se lee durante las pruebas locales. Cuando se implementa una instancia de Amazon EC2 que tiene EnvironmentName establecido en Production, este archivo se omite y AWS SDK for .NET utiliza las credenciales y la región de IAM configuradas para la instancia de Amazon EC2.

Los siguientes ajustes de configuración muestran ejemplos de los valores que se pueden agregar en el archivo appsettings.Development.json del proyecto para proporcionar la configuración de AWS.

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

Para obtener acceso a un ajuste en un archivo CSHTML utilice la directiva 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 obtener acceso a las opciones de AWS establecidas en el archivo en el código, llame al método de extensión GetAWSOptions que se ha agregado a IConfiguration.

Para crear un cliente de servicio a partir de estas opciones, llame a CreateServiceClient. En el siguiente ejemplo se muestra cómo crear un cliente de servicio de Amazon S3 (asegúrese de agregar el paquete NuGet AWSSDK.S3 al proyecto).

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

También puede crear varios clientes de servicio con ajustes incompatibles utilizando varias entradas en el archivo appsettings.Development.json, tal y como se muestra en los siguientes ejemplos, donde la configuración de service1 incluye la región us-west-2 y la configuración de service2 incluye la URL del punto de conexión especial.

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

A continuación, puede obtener las opciones para un servicio específico mediante la entrada del archivo JSON. Por ejemplo, utilice lo siguiente para obtener la configuración de service1.

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

Valores permitidos en el archivo appsettings

Los siguientes valores de configuración de la aplicación se pueden establecer en el archivo appsettings.Development.json. Los nombres de los campos deben escribirse con las mayúsculas y minúsculas mostradas aquí. Para obtener más información sobre esta configuración, consulte la clase AWS.Runtime.ClientConfig.

  • Region

  • Profile

  • ProfilesLocation

  • SignatureVersion

  • RegionEndpoint

  • UseHttp

  • ServiceURL

  • AuthenticationRegion

  • AuthenticationServiceName

  • MaxErrorRetry

  • LogResponse

  • BufferSize

  • ProgressUpdateInterval

  • ResignRetries

  • AllowAutoRedirect

  • LogMetrics

  • DisableLogging

  • UseDualstackEndpoint

Inserción de dependencias de ASP.NET Core

El paquete NuGet AWSSDK.Extensions.NETCore.Setup también se integra con un nuevo sistema de inserción de dependencias en ASP.NET Core. El método ConfigureServices de la clase Startup de la aplicación es donde se agregan los servicios MVC. Si la aplicación usa Entity Framework, también es donde se inicializa.

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

Hay disponible información general sobre la inserción de dependencias en .NET Core en el sitio de documentación de .NET Core.

El paquete NuGet AWSSDK.Extensions.NETCore.Setup agrega nuevos métodos de extensión a IServiceCollection que se pueden usar para agregar servicios de AWS a la inserción de dependencias. En el siguiente código se muestra cómo agregar las opciones de AWS que se leen de IConfiguration para agregar Amazon S3 y DynamoDB a la lista de servicios (asegúrese de agregar los paquetes AWSSDK.S3 y AWSSDK.DynamoDBv2 al proyecto).

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

Ahora, si sus controladores MVC usan IAmazonS3 o IAmazonDynamoDB como parámetros en sus constructores, el sistema de inserción de dependencias pasa esos servicios.

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