

¡Se AWS SDK para .NET ha publicado la versión 4 (V4) del\$1

Para obtener información sobre los cambios más importantes y la migración de sus aplicaciones, consulte el [tema sobre migración](https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/net-dg-v4.html).

 [https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/net-dg-v4.html](https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/net-dg-v4.html)

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.

# Cómo empezar con el AWS SDK para .NET
<a name="net-dg-config"></a>

Aprenda a instalar, configurar y usar el AWS SDK para .NET. Debe instalar su cadena de herramientas y configurar una serie de elementos esenciales que su aplicación necesita para acceder a AWS los servicios. Entre ellos se incluyen:
+ Una cuenta de usuario o un rol adecuados
+ Información de autenticación de esa cuenta de usuario o para asumir ese rol

Para obtener información sobre cómo configurar los proyectos y otras partes críticas, consulte[Configuración del AWS SDK para .NET](configuring-the-sdk.md).

**Topics**
+ [Instalación y configuración de su cadena de herramientas](net-dg-dev-env.md)
+ [Autenticarse con AWS](creds-idc.md)
+ [Crear una aplicación sencilla](quick-start.md)

# Instalación y configuración de la cadena de herramientas para AWS SDK para .NET
<a name="net-dg-dev-env"></a>

Para utilizarla AWS SDK para .NET, debe tener determinadas herramientas de desarrollo instaladas.

## Desarrollo multiplataforma
<a name="net-dg-dev-env-cross"></a>

Lo siguiente es necesario para el desarrollo multiplataforma de .NET en Windows, Linux o macOS:
+ Microsoft [.NET Core SDK](https://learn.microsoft.com/en-us/dotnet/fundamentals/), versión 2.1, 3.1 o posterior, que incluye la interfaz de línea de comandos (CLI) de .NET (**`dotnet`**) y el tiempo de ejecución de .NET Core.
+ Un editor de código o entorno de desarrollo integrado (IDE) adecuado para el sistema operativo y los requisitos. Normalmente, es uno que proporciona cierto soporte para .NET Core.

  Algunos ejemplos son [Microsoft Visual Studio Code (VS Code)](https://code.visualstudio.com/), [JetBrains Rider](https://www.jetbrains.com/rider/) y [Microsoft Visual Studio](https://visualstudio.microsoft.com/vs/).
+ (Opcional) Un AWS kit de herramientas, si está disponible, para el editor que elija y su sistema operativo.

  Entre los ejemplos se incluyen [AWS Toolkit for Visual Studio Code](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/welcome.html), [AWS Toolkit for JetBrains](https://docs.aws.amazon.com/toolkit-for-jetbrains/latest/userguide/welcome.html) y [AWS Toolkit for Visual Studio](https://docs.aws.amazon.com/toolkit-for-visual-studio/latest/user-guide/welcome.html).

## Windows con Visual Studio y .NET Core
<a name="net-dg-dev-env-winvs"></a>

Lo siguiente es necesario para el desarrollo en Windows con Visual Studio y .NET Core:
+ [Microsoft Visual Studio](https://visualstudio.microsoft.com/vs/)
+ Microsoft .NET Core 2.1, 3.1 o posterior

  Esto normalmente se incluye de forma predeterminada al instalar una versión reciente de Visual Studio.
+ (Opcional) The AWS Toolkit for Visual Studio, que es un complemento que proporciona una interfaz de usuario para administrar AWS los recursos y los perfiles locales desde Visual Studio. Para instalar el kit de herramientas, consulte [Configuración del AWS Toolkit for Visual Studio](https://docs.aws.amazon.com/toolkit-for-visual-studio/latest/user-guide/getting-set-up.html).

  Para obtener más información, consulte la [Guía del usuario de AWS Toolkit for Visual Studio](https://docs.aws.amazon.com/toolkit-for-visual-studio/latest/user-guide/).

## Siguiente paso
<a name="net-dg-dev-env-next"></a>

[Autenticar el con AWS SDK para .NET AWS](creds-idc.md)

# Autenticar el con AWS SDK para .NET AWS
<a name="creds-idc"></a>

Debes establecer cómo se autentica tu código AWS al desarrollar con. Servicios de AWS Existen diferentes formas de configurar el acceso programático a AWS los recursos, según el entorno y el AWS acceso del que dispongas. 

Para ver los distintos métodos de autenticación del SDK, consulte [Autenticación y acceso](https://docs.aws.amazon.com/sdkref/latest/guide/access.html) en la *Guía de referencia sobre herramientas AWS SDKs y herramientas*.

En este tema se presupone que un nuevo usuario se está desarrollando a nivel local, que su empresa no le ha proporcionado un método de autenticación y que lo utilizará AWS IAM Identity Center para obtener credenciales temporales. Si el entorno no se basa en estos supuestos, es posible que parte de la información de este tema no se aplique a su caso o que ya se le haya proporcionado parte de la información.

 La configuración de este entorno requiere varios pasos, que se resumen de la siguiente manera:

1. [Inicie sesión con las credenciales de la consola](#login-con-creds)

1. [Habilitar y configurar el Centro de identidades de IAM](#idc-config-sso)

1. [Configuración de SDK para usar IAM Identity Center](#idc-config-sdk)

1. [Inicie una sesión en el portal de AWS acceso](#idc-start-portal)

## Inicie sesión con las credenciales de la consola
<a name="login-con-creds"></a>

Puede usar sus credenciales de inicio de sesión AWS de Management Console actuales para acceder a AWS los servicios mediante programación. Tras un flujo de autenticación basado en un navegador, AWS genera credenciales temporales que funcionan en todas las herramientas de desarrollo locales, como la AWS CLI Herramientas de AWS para PowerShell y el AWS SDK para .NET v4.

Con este proceso, puede autenticarse mediante las credenciales raíz creadas durante la configuración inicial de la cuenta, un usuario de IAM o una identidad federada de su proveedor de identidad y la AWS CLI, o bien gestionar Herramientas de AWS para PowerShell automáticamente las credenciales temporales por usted. Este enfoque mejora la seguridad al eliminar la necesidad de almacenar localmente las credenciales a largo plazo. Al ejecutar el `Invoke-AWSLogin ` cmdlet Herramientas de AWS para PowerShell o el `aws login` comando desde la AWS CLI, puede seleccionar una de las sesiones de consola activas o iniciar sesión mediante el flujo de autenticación basado en el navegador, lo que generará credenciales temporales automáticamente. El token de credencial temporal caducará en 15 minutos, pero el AWS SDK para .NET v4 actualizará automáticamente el token cuando sea necesario durante tus solicitudes. 

**importante**  
Si utilizas las credenciales de la consola para la autenticación, tu aplicación debe hacer referencia a los siguientes NuGet paquetes para que la resolución de AWS inicio de sesión funcione:  
**AWSSDK4. Iniciar sesión**
Si no se hace referencia a estos paquetes, se producirá una excepción de tiempo de ejecución.
+ [Herramientas de AWS para PowerShell Guía del desarrollador de credenciales de inicio de sesión.](https://docs.aws.amazon.com/powershell/v5/userguide/creds-idc.html#login-con-creds)
+ [Inicie sesión para el desarrollo AWS local con las credenciales de la consola mediante AWS CLI.](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sign-in.html)

El `config` archivo tendrá este aspecto una vez que haya iniciado sesión siguiendo los pasos indicados anteriormente para nuestra Herramientas de AWS para PowerShell AWS CLI. 

```
[default]
login_session = arn:aws:iam::0123456789012:user/username
region = us-east-1

[my-dev-profile]
login_session = arn:aws:iam::0123456789012:user/username
region = us-east-1
```

## Habilitar y configurar el Centro de identidades de IAM
<a name="idc-config-sso"></a>

Para usar IAM Identity Center, primero debe estar habilitado y configurado. Para obtener más información sobre cómo hacerlo con el SDK, consulte el **paso 1** del tema sobre la [autenticación del Centro de Identidad de IAM](https://docs.aws.amazon.com/sdkref/latest/guide/access-sso.html) en la *AWS SDKs Guía de referencia sobre herramientas*. En concreto, siga las instrucciones necesarias en **No he establecido el acceso a través del Centro de identidades de IAM**.

## Configuración de SDK para usar IAM Identity Center
<a name="idc-config-sdk"></a>

La información sobre cómo configurar el SDK para usar el Centro de Identidad de IAM se encuentra en el **paso 2** del tema sobre la [autenticación del Centro de Identidad de IAM](https://docs.aws.amazon.com/sdkref/latest/guide/access-sso.html) en la Guía de referencia sobre *herramientas AWS SDKs y herramientas*. Tras completar esta configuración, el sistema debe contener los siguientes elementos:
+ El AWS CLI, que se utiliza para iniciar una sesión en el portal de AWS acceso antes de ejecutar la aplicación.
+ El AWS `config` archivo compartido que contiene un [`[default]`perfil](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html#file-format-profile) con un conjunto de valores de configuración a los que se puede hacer referencia desde el SDK. Para encontrar la ubicación de este archivo, consulte [Ubicación de los archivos compartidos](https://docs.aws.amazon.com/sdkref/latest/guide/file-location.html) en la *Guía de referencia de AWS SDKs and Tools*. AWS SDK para .NET Utiliza el proveedor del token de inicio de sesión único del perfil para adquirir las credenciales antes de enviar las solicitudes a AWSél. El valor `sso_role_name`, que es un rol de IAM conectado a un conjunto de permisos del Centro de identidades de IAM, debería permitir el acceso a los Servicios de AWS utilizados en la aplicación.

  El siguiente archivo `config` de ejemplo muestra la configuración de un perfil predeterminado con el proveedor de token de SSO. La configuración `sso_session` del perfil hace referencia a la sección `sso-session` nombrada. La `sso-session` sección contiene la configuración para iniciar una sesión en el portal de AWS acceso.

  ```
  [default]
  sso_session = my-sso
  sso_account_id = 111122223333
  sso_role_name = SampleRole
  region = us-east-1
  output = json
  
  [sso-session my-sso]
  sso_region = us-east-1
  sso_start_url = https://provided-domain.awsapps.com/start
  sso_registration_scopes = sso:account:access
  ```

**importante**  
Si lo utilizas AWS IAM Identity Center para la autenticación, tu aplicación debe hacer referencia a los siguientes NuGet paquetes para que la resolución del SSO funcione:  
`AWSSDK.SSO`
`AWSSDK.SSOOIDC`
Si no se hace referencia a estos paquetes, se producirá una excepción de *tiempo de ejecución*.

## Inicie una sesión en el portal de AWS acceso
<a name="idc-start-portal"></a>

Antes de ejecutar una aplicación para acceder Servicios de AWS, necesita una sesión activa en el portal de AWS acceso para que el SDK utilice la autenticación del IAM Identity Center a fin de resolver las credenciales. En función de la duración de las sesiones configuradas, el acceso terminará por caducar y SDK detectará un error de autenticación. Para iniciar sesión en el portal de AWS acceso, ejecute el siguiente comando en. AWS CLI

```
aws sso login
```

Como tiene una configuración de perfil predeterminada, no necesita llamar al comando con una opción `--profile`. Si la configuración del proveedor de token de SSO utiliza un perfil con nombre, el comando es `aws sso login --profile named-profile`.

Para comprobar si ya tiene una sesión activa, ejecute el siguiente AWS CLI comando.

```
aws sts get-caller-identity
```

La respuesta a este comando debe indicar la cuenta y el conjunto de permisos del Centro de identidades de IAM configurados en el archivo compartido `config`.

**nota**  
Si ya tiene una sesión activa en el portal de AWS acceso y la ejecuta`aws sso login`, no tendrá que proporcionar credenciales.  
Es posible que el proceso de inicio de sesión le pida que permita el AWS CLI acceso a sus datos. Como AWS CLI se basa en el SDK para Python, los mensajes de permiso pueden contener variaciones del `botocore` nombre.

## Información adicional
<a name="idc-additional-info"></a>
+ Para obtener más información sobre cómo usar IAM Identity Center y el SSO en un entorno de desarrollo, consulte [Inicio de sesión único](sso.md) en la sección [Autenticación avanzada](advanced-auth.md). Esta información incluye métodos alternativos y más avanzados, así como tutoriales que muestran cómo utilizar estos métodos.
+ Para obtener más opciones de autenticación para el SDK, como el uso de perfiles y variables de entorno, consulta el capítulo de [configuración](https://docs.aws.amazon.com/sdkref/latest/guide/creds-config-files.html) de la *AWS SDKs Guía de referencia de herramientas*.
+ Para obtener más información sobre las prácticas recomendadas, consulte [Prácticas recomendadas de seguridad en IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) en la *Guía del usuario de IAM*.
+ Para crear AWS credenciales de corta duración, consulte [Credenciales de seguridad temporales](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html) en la *Guía del usuario de IAM*.
+ Para obtener más información sobre otros proveedores de credenciales, consulte los proveedores de [credenciales estandarizados en la Guía](https://docs.aws.amazon.com/sdkref/latest/guide/standardized-credentials.html) de referencia de *herramientas AWS SDKs y herramientas*.

# Creación de una aplicación sencilla mediante el AWS SDK para .NET
<a name="quick-start"></a>

Esta sección proporciona tutoriales básicos para los desarrolladores que no están familiarizados con AWS SDK para .NET.

**nota**  
Antes de usar estos tutoriales, primero debe haber [instalado su cadena de herramientas](net-dg-dev-env.md) y haber [configurado la autenticación de SDK](creds-idc.md).

Para obtener información sobre el desarrollo de software para AWS servicios específicos junto con ejemplos de código, consulte[ AWS Servicios de llamadas](working-with-aws-services.md). Para ver otros ejemplos de código, consulte [SDK para .NET ejemplos de código (v4)](csharp_code_examples.md).

**Topics**
+ [Aplicación multiplataforma sencilla](quick-start-s3-1-cross.md)
+ [Aplicación sencilla basada en Windows](quick-start-s3-1-winvs.md)
+ [Pasos a seguir a continuación](quick-start-next-steps.md)

# Aplicación multiplataforma sencilla que utiliza el AWS SDK para .NET
<a name="quick-start-s3-1-cross"></a>

En este tutorial se utilizan .NET Core AWS SDK para .NET y .NET Core para el desarrollo multiplataforma. En el tutorial se muestra cómo utilizar SDK para enumerar los [buckets de Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/) que posee y, opcionalmente, crear un bucket.

Llevará a cabo este tutorial utilizando herramientas multiplataforma como la interfaz de la línea de comandos (CLI) .NET. Para ver otras formas de configurar el entorno de desarrollo, consulte [Instalación y configuración de la cadena de herramientas para AWS SDK para .NET](net-dg-dev-env.md).

**Necesario para el desarrollo multiplataforma de .NET en Windows, Linux o macOS:**
+ Microsoft [.NET Core SDK](https://learn.microsoft.com/en-us/dotnet/fundamentals/), versión 2.1, 3.1 o posterior, que incluye la interfaz de línea de comandos (CLI) de .NET (**`dotnet`**) y el tiempo de ejecución de .NET Core.
+ Un editor de código o entorno de desarrollo integrado (IDE) adecuado para el sistema operativo y los requisitos. Normalmente, es uno que proporciona cierto soporte para .NET Core.

  Algunos ejemplos son [Microsoft Visual Studio Code (VS Code)](https://code.visualstudio.com/), [JetBrains Rider](https://www.jetbrains.com/rider/) y [Microsoft Visual Studio](https://visualstudio.microsoft.com/vs/).

**nota**  
Antes de usar estos tutoriales, primero debe haber [instalado su cadena de herramientas](net-dg-dev-env.md) y haber [configurado la autenticación de SDK](creds-idc.md).

## Pasos
<a name="s3-1-cross-steps"></a>
+ [Creación del proyecto](#s3-1-cross-create-project)
+ [Crear el código](#s3-1-cross-code)
+ [Ejecución de la aplicación](#s3-1-cross-run)
+ [Limpieza](#s3-1-cross-clean-up)

## Creación del proyecto
<a name="s3-1-cross-create-project"></a>

1. Abra un símbolo del sistema o un terminal. Busque o cree una carpeta del sistema operativo en la que pueda crear un proyecto .NET.

1. En esa carpeta, ejecute el siguiente comando para crear el proyecto .NET.

   ```
   dotnet new console --name S3CreateAndList
   ```

1. Vaya a la carpeta `S3CreateAndList` recién creada y ejecute los siguientes comandos:

   ```
   dotnet add package AWSSDK.S3
   dotnet add package AWSSDK.SecurityToken
   dotnet add package AWSSDK.SSO
   dotnet add package AWSSDK.SSOOIDC
   ```

   Los comandos anteriores instalan los NuGet paquetes desde el [administrador de NuGet paquetes](https://www.nuget.org/profiles/awsdotnet). Como sabemos exactamente qué NuGet paquetes necesitamos para este tutorial, podemos realizar este paso ahora. También es común que los paquetes requeridos se conozcan durante el desarrollo. Cuando esto sucede, se puede ejecutar un comando similar en ese momento.

## Crear el código
<a name="s3-1-cross-code"></a>

1. En la carpeta `S3CreateAndList`, busque y abra `Program.cs` en su editor de código.

1. Reemplace el contenido con el siguiente código y guarde el archivo.

   ```
   using System;
   using System.Threading.Tasks;
   
   // NuGet packages: AWSSDK.S3, AWSSDK.SecurityToken, AWSSDK.SSO, AWSSDK.SSOOIDC
   using Amazon.Runtime;
   using Amazon.Runtime.CredentialManagement;
   using Amazon.S3;
   using Amazon.S3.Model;
   using Amazon.SecurityToken;
   using Amazon.SecurityToken.Model;
   
   namespace S3CreateAndList
   {
       class Program
       {
           // This code is part of the quick tour in the developer guide.
           // See https://docs.aws.amazon.com/sdk-for-net/v3/developer-guide/quick-start.html
           // for complete steps.
           // Requirements:
           // - An SSO profile in the SSO user's shared config file with sufficient privileges for
   		//   STS and S3 buckets.
           // - An active SSO Token.
           //    If an active SSO token isn't available, the SSO user should do the following:
           //    In a terminal, the SSO user must call "aws sso login".
   
           // Class members.
           static async Task Main(string[] args)
           {
               // Get SSO credentials from the information in the shared config file.
               // For this tutorial, the information is in the [default] profile.
               var ssoCreds = LoadSsoCredentials("default");
   
               // Display the caller's identity.
               var ssoProfileClient = new AmazonSecurityTokenServiceClient(ssoCreds);
               Console.WriteLine($"\nSSO Profile:\n {await ssoProfileClient.GetCallerIdentityArn()}");
   
               // Create the S3 client is by using the SSO credentials obtained earlier.
               var s3Client = new AmazonS3Client(ssoCreds);
   
               // Parse the command line arguments for the bucket name.
               if (GetBucketName(args, out String bucketName))
               {
                   // If a bucket name was supplied, create the bucket.
                   // Call the API method directly
                   try
                   {
                       Console.WriteLine($"\nCreating bucket {bucketName}...");
                       var createResponse = await s3Client.PutBucketAsync(bucketName);
                       Console.WriteLine($"Result: {createResponse.HttpStatusCode.ToString()}");
                   }
                   catch (Exception e)
                   {
                       Console.WriteLine("Caught exception when creating a bucket:");
                       Console.WriteLine(e.Message);
                   }
               }
   
               // Display a list of the account's S3 buckets.
               Console.WriteLine("\nGetting a list of your buckets...");
               var listResponse = await s3Client.ListBucketsAsync();
               Console.WriteLine($"Number of buckets: {listResponse.Buckets.Count}");
               foreach (S3Bucket b in listResponse.Buckets)
               {
                   Console.WriteLine(b.BucketName);
               }
               Console.WriteLine();
           }
   
           // 
           // Method to parse the command line.
           private static Boolean GetBucketName(string[] args, out String bucketName)
           {
               Boolean retval = false;
               bucketName = String.Empty;
               if (args.Length == 0)
               {
                   Console.WriteLine("\nNo arguments specified. Will simply list your Amazon S3 buckets." +
                     "\nIf you wish to create a bucket, supply a valid, globally unique bucket name.");
                   bucketName = String.Empty;
                   retval = false;
               }
               else if (args.Length == 1)
               {
                   bucketName = args[0];
                   retval = true;
               }
               else
               {
                   Console.WriteLine("\nToo many arguments specified." +
                     "\n\ndotnet_tutorials - A utility to list your Amazon S3 buckets and optionally create a new one." +
                     "\n\nUsage: S3CreateAndList [bucket_name]" +
                     "\n - bucket_name: A valid, globally unique bucket name." +
                     "\n - If bucket_name isn't supplied, this utility simply lists your buckets.");
                   Environment.Exit(1);
               }
               return retval;
           }
   
           //
           // Method to get SSO credentials from the information in the shared config file.
           static AWSCredentials LoadSsoCredentials(string profile)
           {
               var chain = new CredentialProfileStoreChain();
               if (!chain.TryGetAWSCredentials(profile, out var credentials))
                   throw new Exception($"Failed to find the {profile} profile");
               return credentials;
           }
       }
   
       // Class to read the caller's identity.
       public static class Extensions
       {
           public static async Task<string> GetCallerIdentityArn(this IAmazonSecurityTokenService stsClient)
           {
               var response = await stsClient.GetCallerIdentityAsync(new GetCallerIdentityRequest());
               return response.Arn;
           }
       }
   }
   ```

## Ejecución de la aplicación
<a name="s3-1-cross-run"></a>

1. Ejecute el siguiente comando.

   ```
   dotnet run
   ```

1. Examine la salida para ver el número de buckets de Amazon S3 que posee, si los hay, y sus nombres.

1. Elija un nombre para un nuevo bucket de Amazon S3. Usa «dotnet-quicktour-s3-1-cross-» como base y añádele algo único, como un GUID o tu nombre. Asegúrese de seguir las reglas de nomenclatura de bucket, como se describe en [Reglas de nomenclatura de buckets](https://docs.aws.amazon.com/AmazonS3/latest/userguide/BucketRestrictions.html#bucketnamingrules) en la [Guía del usuario de Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/).

1. Ejecute el siguiente comando y *amzn-s3-demo-bucket* sustitúyalo por el nombre del depósito que haya elegido.

   ```
   dotnet run amzn-s3-demo-bucket
   ```

1. Examine la salida para ver el nuevo bucket que se creó.

## Limpieza
<a name="s3-1-cross-clean-up"></a>

Mientras realizaba este tutorial, ha creado algunos recursos que puede decidir limpiar en este momento.
+ Si no quiere conservar el bucket que la aplicación creó en un paso anterior, elimínelo mediante la consola de Amazon S3 en [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).
+ Si no quiere conservar el proyecto de .NET, elimine la carpeta `S3CreateAndList` del entorno de desarrollo.

## Pasos siguientes
<a name="s3-1-cross-next"></a>

Vuelva al [menú de recorrido rápido](quick-start.md) o vaya directamente al [final de este recorrido rápido](quick-start-next-steps.md).

# Aplicación sencilla basada en Windows que utiliza AWS SDK para .NET
<a name="quick-start-s3-1-winvs"></a>

En este tutorial se utiliza AWS SDK para .NET en Windows con Visual Studio y.NET Core. En el tutorial se muestra cómo utilizar SDK para enumerar los [buckets de Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/) que posee y, opcionalmente, crear un bucket.

Llevará a cabo este tutorial en Windows mediante Visual Studio y .NET Core. Para ver otras formas de configurar el entorno de desarrollo, consulte [Instalación y configuración de la cadena de herramientas para AWS SDK para .NET](net-dg-dev-env.md).

**Necesario para el desarrollo en Windows con Visual Studio y .NET Core:**
+ [Microsoft Visual Studio](https://visualstudio.microsoft.com/vs/)
+ Microsoft .NET Core 2.1, 3.1 o posterior

  Esto normalmente se incluye de forma predeterminada al instalar una versión reciente de Visual Studio.

**nota**  
Antes de usar estos tutoriales, primero debe haber [instalado su cadena de herramientas](net-dg-dev-env.md) y haber [configurado la autenticación de SDK](creds-idc.md).

## Pasos
<a name="s3-1-winvs-steps"></a>
+ [Creación del proyecto](#s3-1-winvs-create-project)
+ [Crear el código](#s3-1-winvs-code)
+ [Ejecución de la aplicación](#s3-1-winvs-run)
+ [Limpieza](#s3-1-winvs-clean-up)

## Creación del proyecto
<a name="s3-1-winvs-create-project"></a>

1. Abra Visual Studio y cree un nuevo proyecto que utilice la versión C\$1 de la plantilla de la **aplicación de consola**; es decir, con la descripción: «... para crear una aplicación de línea de comandos que pueda ejecutarse en .NET...». Asigne un nombre al proyecto `S3CreateAndList`.
**nota**  
No elija la versión .NET Framework de la plantilla de la aplicación de consola o, si la elige, asegúrese de utilizar .NET Framework 4.7.2 o una versión posterior.

1. Con el proyecto recién creado cargado, elija **Tools**, **NuGetPackage Manager** y **Manage NuGet Packages for Solution**.

1. Busque los siguientes NuGet paquetes e instálelos en el proyecto: `AWSSDK.S3``AWSSDK.SecurityToken`,`AWSSDK.SSO`, y `AWSSDK.SSOOIDC`

   Este proceso instala los NuGet paquetes desde el [administrador de NuGet paquetes](https://www.nuget.org/profiles/awsdotnet). Como sabemos exactamente qué NuGet paquetes necesitamos para este tutorial, podemos realizar este paso ahora. También es común que los paquetes requeridos se conozcan durante el desarrollo. Cuando esto suceda, siga un proceso similar para instalarlos en ese momento.

1. Si tiene la intención de ejecutar la aplicación desde el símbolo del sistema, abra un símbolo del sistema ahora y vaya a la carpeta que contendrá la salida de compilación. Suele ser algo así como `S3CreateAndList\S3CreateAndList\bin\Debug\net6.0`, pero dependerá del entorno.

## Crear el código
<a name="s3-1-winvs-code"></a>

1. En el proyecto `S3CreateAndList`, busque y abra `Program.cs` en el IDE.

1. Reemplace el contenido con el siguiente código y guarde el archivo.

   ```
   using System;
   using System.Threading.Tasks;
   
   // NuGet packages: AWSSDK.S3, AWSSDK.SecurityToken, AWSSDK.SSO, AWSSDK.SSOOIDC
   using Amazon.Runtime;
   using Amazon.Runtime.CredentialManagement;
   using Amazon.S3;
   using Amazon.S3.Model;
   using Amazon.SecurityToken;
   using Amazon.SecurityToken.Model;
   
   namespace S3CreateAndList
   {
       class Program
       {
           // This code is part of the quick tour in the developer guide.
           // See https://docs.aws.amazon.com/sdk-for-net/v3/developer-guide/quick-start.html
           // for complete steps.
           // Requirements:
           // - An SSO profile in the SSO user's shared config file with sufficient privileges for
   		//   STS and S3 buckets.
           // - An active SSO Token.
           //    If an active SSO token isn't available, the SSO user should do the following:
           //    In a terminal, the SSO user must call "aws sso login".
   
           // Class members.
           static async Task Main(string[] args)
           {
               // Get SSO credentials from the information in the shared config file.
               // For this tutorial, the information is in the [default] profile.
               var ssoCreds = LoadSsoCredentials("default");
   
               // Display the caller's identity.
               var ssoProfileClient = new AmazonSecurityTokenServiceClient(ssoCreds);
               Console.WriteLine($"\nSSO Profile:\n {await ssoProfileClient.GetCallerIdentityArn()}");
   
               // Create the S3 client is by using the SSO credentials obtained earlier.
               var s3Client = new AmazonS3Client(ssoCreds);
   
               // Parse the command line arguments for the bucket name.
               if (GetBucketName(args, out String bucketName))
               {
                   // If a bucket name was supplied, create the bucket.
                   // Call the API method directly
                   try
                   {
                       Console.WriteLine($"\nCreating bucket {bucketName}...");
                       var createResponse = await s3Client.PutBucketAsync(bucketName);
                       Console.WriteLine($"Result: {createResponse.HttpStatusCode.ToString()}");
                   }
                   catch (Exception e)
                   {
                       Console.WriteLine("Caught exception when creating a bucket:");
                       Console.WriteLine(e.Message);
                   }
               }
   
               // Display a list of the account's S3 buckets.
               Console.WriteLine("\nGetting a list of your buckets...");
               var listResponse = await s3Client.ListBucketsAsync();
               Console.WriteLine($"Number of buckets: {listResponse.Buckets.Count}");
               foreach (S3Bucket b in listResponse.Buckets)
               {
                   Console.WriteLine(b.BucketName);
               }
               Console.WriteLine();
           }
   
           // 
           // Method to parse the command line.
           private static Boolean GetBucketName(string[] args, out String bucketName)
           {
               Boolean retval = false;
               bucketName = String.Empty;
               if (args.Length == 0)
               {
                   Console.WriteLine("\nNo arguments specified. Will simply list your Amazon S3 buckets." +
                     "\nIf you wish to create a bucket, supply a valid, globally unique bucket name.");
                   bucketName = String.Empty;
                   retval = false;
               }
               else if (args.Length == 1)
               {
                   bucketName = args[0];
                   retval = true;
               }
               else
               {
                   Console.WriteLine("\nToo many arguments specified." +
                     "\n\ndotnet_tutorials - A utility to list your Amazon S3 buckets and optionally create a new one." +
                     "\n\nUsage: S3CreateAndList [bucket_name]" +
                     "\n - bucket_name: A valid, globally unique bucket name." +
                     "\n - If bucket_name isn't supplied, this utility simply lists your buckets.");
                   Environment.Exit(1);
               }
               return retval;
           }
   
           //
           // Method to get SSO credentials from the information in the shared config file.
           static AWSCredentials LoadSsoCredentials(string profile)
           {
               var chain = new CredentialProfileStoreChain();
               if (!chain.TryGetAWSCredentials(profile, out var credentials))
                   throw new Exception($"Failed to find the {profile} profile");
               return credentials;
           }
       }
   
       // Class to read the caller's identity.
       public static class Extensions
       {
           public static async Task<string> GetCallerIdentityArn(this IAmazonSecurityTokenService stsClient)
           {
               var response = await stsClient.GetCallerIdentityAsync(new GetCallerIdentityRequest());
               return response.Arn;
           }
       }
   }
   ```

1. Compilación de la aplicación.
**nota**  
Si usa una versión antigua de Visual Studio, es posible que se produzca un error de compilación similar al siguiente:  
“La función ‘async main’ no está disponible en C\$1 7.0. Utilice la versión 7.1 o superior del lenguaje”.  
Si aparece este error, configure el proyecto para que utilice una versión posterior del lenguaje. Por lo general, esto se lleva a cabo en las propiedades del proyecto, en **Compilación** > **Avanzado**.

## Ejecución de la aplicación
<a name="s3-1-winvs-run"></a>

1. Ejecute la aplicación sin argumentos de línea de comandos. Haga esto en el símbolo del sistema (si ya tiene abierto uno) o desde el IDE.

1. Examine la salida para ver el número de buckets de Amazon S3 que posee, si los hay, y sus nombres.

1. Elija un nombre para un nuevo bucket de Amazon S3. Usa "dotnet-quicktour-s3-1-winvs-» como base y añádele algo único, como un GUID o tu nombre. Asegúrese de seguir las reglas de nomenclatura de bucket, como se describe en [Reglas de nomenclatura de buckets](https://docs.aws.amazon.com/AmazonS3/latest/userguide/BucketRestrictions.html#bucketnamingrules) en la [Guía del usuario de Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/).

1. Vuelva a ejecutar la aplicación, esta vez proporcionando el nombre del bucket.

   En la línea de comandos, sustituya *amzn-s3-demo-bucket* el siguiente comando por el nombre del bucket que haya elegido.

   ```
   S3CreateAndList amzn-s3-demo-bucket
   ```

   O bien, si está ejecutando la aplicación en el IDE, elija **Project**, **S3 CreateAndList Properties**, **Debug** e introduzca allí el nombre del bucket.

1. Examine la salida para ver el nuevo bucket que se creó.

## Limpieza
<a name="s3-1-winvs-clean-up"></a>

Mientras realizaba este tutorial, ha creado algunos recursos que puede decidir limpiar en este momento.
+ Si no quiere conservar el bucket que la aplicación creó en un paso anterior, elimínelo mediante la consola de Amazon S3 en [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).
+ Si no quiere conservar el proyecto de .NET, elimine la carpeta `S3CreateAndList` del entorno de desarrollo.

## Pasos siguientes
<a name="s3-1-winvs-next"></a>

Vuelva al [menú de recorrido rápido](quick-start.md) o vaya directamente al [final de este recorrido rápido](quick-start-next-steps.md).

# Pasos a seguir a continuación
<a name="quick-start-next-steps"></a>

Asegúrese de limpiar los recursos sobrantes que haya creado mientras realiza estos tutoriales. Pueden ser AWS recursos o recursos de su entorno de desarrollo, como archivos y carpetas.

Ahora que lo has visitado AWS SDK para .NET, quizá te interese [empezar tu proyecto](net-dg-start-new-project.md).