

 AWS Cloud9 ya no está disponible para nuevos clientes. Los clientes existentes de AWS Cloud9 pueden seguir utilizando el servicio con normalidad. [Más información](https://aws.amazon.com/blogs/devops/how-to-migrate-from-aws-cloud9-to-aws-ide-toolkits-or-aws-cloudshell/)

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.

# Tutorial de.NET para AWS Cloud9
<a name="sample-dotnetcore"></a>

Este tutorial le permite ejecutar código de.NET en un entorno de AWS Cloud9 desarrollo.

Si sigue este tutorial y crea este ejemplo, es posible que se le cobren cargos a su AWS cuenta. Entre estos se incluyen posibles cargos por servicios como Amazon EC2 y Amazon S3. Para obtener más información, consulte [Precios de Amazon EC2](https://aws.amazon.com/ec2/pricing/) y [Precios de Amazon S3](https://aws.amazon.com/s3/pricing/).

**Topics**
+ [Requisitos previos](#sample-dotnetcore-prereqs)
+ [Paso 1: Instalar las herramientas necesarias](#sample-dotnetcore-setup)
+ [Paso 2 (opcional): Instalar la extensión de la CLI de .NET para las funciones de Lambda](#sample-dotnetcore-lambda)
+ [Paso 3: Crear un proyecto de aplicación de consola de .NET](#sample-dotnetcore-app)
+ [Paso 4: Agregar el código](#sample-dotnetcore-code)
+ [Paso 5: Compilar y ejecutar el código](#sample-dotnetcore-run)
+ [Paso 6: Cree y configure un proyecto de aplicación de consola .NET que utilice AWS SDK para .NET](#sample-dotnetcore-sdk)
+ [Paso 7: Añadir el código AWS del SDK](#sample-dotnetcore-sdk-code)
+ [Paso 8: Compila y ejecuta el código del AWS SDK](#sample-dotnetcore-sdk-run)
+ [Paso 9: limpiar](#sample-dotnetcore-clean-up)

## Requisitos previos
<a name="sample-dotnetcore-prereqs"></a>

Antes de utilizar este ejemplo, asegúrese de que su configuración cumpla los siguientes requisitos:
+ **Debe tener un entorno de desarrollo AWS Cloud9 EC2 existente.** En este ejemplo, se da por hecho que ya tiene un entorno de EC2 que está conectado a una instancia de Amazon EC2 que ejecuta Amazon Linux o Ubuntu Server. Si tiene otro tipo de entorno o sistema operativo, es posible que tenga que adaptar las instrucciones de este ejemplo para configurar herramientas relacionadas. Para obtener más información, consulte [Crear un entorno en AWS Cloud9](create-environment.md).
+ **Ya tiene abierto el AWS Cloud9 IDE del entorno existente.** Al abrir un entorno, AWS Cloud9 abre el IDE de ese entorno en el navegador web. Para obtener más información, consulte [Abrir un entorno en AWS Cloud9](open-environment.md).

## Paso 1: Instalar las herramientas necesarias
<a name="sample-dotnetcore-setup"></a>

En este paso, debe instalar el SDK de .NET en su entorno, lo cual es necesario para ejecutar esta muestra.

1. Confirme si la versión más reciente del SDK de .NET ya está instalada en su entorno. Para ello, en una sesión de terminal en el AWS Cloud9 IDE, ejecute la interfaz de línea de comandos (CLI) .NET Core con la **`--version`**opción.

   ```
   dotnet --version
   ```

   Si se muestra la versión de las herramientas de la línea de comandos de .NET y es la versión 2.0 o posterior, vaya a [Paso 3: Crear un proyecto de aplicación de consola de .NET](#sample-dotnetcore-app). Si la versión es anterior a 2.0, o si se muestra un error como `bash: dotnet: command not found`, continúe con la instalación del SDK de .NET.

1. En el caso de Amazon Linux, en una sesión de terminal en el AWS Cloud9 IDE, ejecute los siguientes comandos para garantizar la instalación de las últimas actualizaciones de seguridad y correcciones de errores, y para instalar el `libunwind` paquete que necesite el SDK de.NET. [Para iniciar una nueva sesión del terminal, en la barra de menús, seleccione **Window, New Terminal (Ventana, Nuevo terminal)**].

   ```
   sudo yum -y update
   sudo yum -y install libunwind
   ```

   En el caso de Ubuntu Server, en una sesión de terminal en el AWS Cloud9 IDE, ejecute el siguiente comando para asegurarse de que estén instaladas las últimas actualizaciones de seguridad y correcciones de errores. [Para iniciar una nueva sesión del terminal, en la barra de menús, seleccione **Window, New Terminal (Ventana, Nuevo terminal)**].

   ```
   sudo apt -y update
   ```

1. Descargue el script de instalación del SDK de .NET en el entorno ejecutando el siguiente comando.

   ```
   wget https://dot.net/v1/dotnet-install.sh
   ```

1. Haga que el script de instalación sea ejecutable por el usuario actual mediante la ejecución del siguiente comando.

   ```
   sudo chmod u=rx dotnet-install.sh
   ```

1. Ejecute el script de instalación, que descarga e instala el SDK de .NET, mediante la ejecución del siguiente comando.

   ```
   ./dotnet-install.sh -c Current
   ```

1. Agregue el SDK de .NET a su `PATH`. Para ello, en el perfil de shell del entorno (por ejemplo, el archivo `.bashrc`), agregue el subdirectorio `$HOME/.dotnet` a la variable `PATH` del entorno, como se indica a continuación.

   1. Abra el archivo `.bashrc` para editarlo mediante el comando ** `vi` **.

      ```
      vi ~/.bashrc
      ```

   1. Para Amazon Linux, con la flecha hacia abajo o la tecla `j`, vaya a la línea que comienza por `export PATH`.

      Para Ubuntu Server, vaya a la última línea del archivo escribiendo `G`.

   1. Con la flecha derecha o la tecla `$`, vaya al final de esa línea.

   1. Cambie a modo de inserción pulsando la tecla `i`. (Aparecerá `-- INSERT ---` al final de la pantalla).

   1. Para Amazon Linux, agregue el subdirectorio `$HOME/.dotnet` a la variable ** `PATH` **, para lo cual debe escribir `:$HOME/.dotnet`. Asegúrese de incluir el carácter de dos puntos (`:`). La línea ahora debería tener un aspecto similar al siguiente.

      ```
      export PATH=$PATH:$HOME/.local/bin:$HOME/bin:$HOME/.dotnet
      ```

      Para Ubuntu Server, pulse la tecla de flecha derecha, pulse `Enter` dos veces y, a continuación, escriba la siguiente línea sola al final del archivo.

      ```
      export PATH=$HOME/.dotnet:$PATH
      ```

   1. Guarde el archivo. Para ello, pulse la tecla `Esc` (desaparecerá `-- INSERT ---` desde el final de la pantalla), escriba `:wq` (para escribir y, a continuación, salir del archivo) y, a continuación, pulse `Enter`.

1. Cargue el SDK de .NET mediante el aprovisionamiento del archivo `.bashrc`.

   ```
   . ~/.bashrc
   ```

1. Confirme que el SDK de .NET está cargado mediante la ejecución de la CLI de .NET con la opción ** `--help` **.

   ```
   dotnet --help
   ```

   Si se ejecuta correctamente, se muestra el número de versión del SDK de .NET, con información de uso adicional.

1. Si ya no desea mantener el script de instalación del SDK de .NET en su entorno, puede eliminarlo del siguiente modo.

   ```
   rm dotnet-install.sh
   ```

## Paso 2 (opcional): Instalar la extensión de la CLI de .NET para las funciones de Lambda
<a name="sample-dotnetcore-lambda"></a>

Aunque no es obligatorio para este tutorial, puede implementar AWS Lambda funciones y AWS Serverless Application Model aplicaciones mediante la CLI de.NET si también instala el `Amazon.Lambda.Tools` paquete. 

1. Para instalar este paquete, ejecute el comando siguiente:

   ```
   dotnet tool install -g Amazon.Lambda.Tools
   ```

1. Ahora configure la propiedad `PATH` y la variable de entorno `DOTNET_ROOT` para que apunten a la herramienta Lambda instalada. En el archivo `.bashrc`, busque la sección `export PATH` y edítela para que se parezca a la siguiente (consulte el Paso 1 para obtener más detalles sobre la edición de este archivo):

   ```
   export PATH=$PATH:$HOME/.local/bin:$HOME/bin:$HOME/.dotnet:$HOME/.dotnet/tools
   export DOTNET_ROOT=$HOME/.dotnet
   ```

## Paso 3: Crear un proyecto de aplicación de consola de .NET
<a name="sample-dotnetcore-app"></a>

En este paso, se utiliza .NET para crear un proyecto denominado `hello`. Este proyecto contiene todos los archivos que necesita .NET para ejecutar una aplicación simple desde el terminal en el IDE. El código de la aplicación está escrito en C\$1.

Cree un proyecto de aplicación de consola de .NET. Para ello, ejecute la CLI de .NET con el comando ** `new` **, especificando el tipo de plantilla de proyecto de aplicación de consola y el lenguaje de programación que se utilizará (en esta muestra, C\$1).

 La opción `-n` indica que el proyecto se emite en un nuevo directorio, `hello`. A continuación, vaya a ese directorio. 

```
dotnet new console -lang C# -n hello
cd hello
```

El comando anterior añade un subdirectorio llamado `obj` con varios archivos, y algunos archivos independientes adicionales, al directorio `hello`. Debe tener en cuenta los dos archivos clave siguientes:
+ El archivo `hello/hello.csproj` contiene información sobre el proyecto de aplicación de consola.
+ El archivo `hello/Program.cs` contiene el código de la aplicación que se ejecutará.

## Paso 4: Agregar el código
<a name="sample-dotnetcore-code"></a>

En este paso, añadirá código a la aplicación.

En la ventana **Entorno** del AWS Cloud9 IDE, abra el `hello/Program.cs` archivo.

En el editor, reemplace el contenido actual del archivo por el siguiente código y, a continuación, guarde el archivo `Program.cs`.

```
using System;

namespace hello
{
  class Program
  {
    static void Main(string[] args)
    {
     if (args.Length < 2) {
       Console.WriteLine("Please provide 2 numbers");
       return;
     }

     Console.WriteLine("Hello, World!");

     Console.WriteLine("The sum of 2 and 3 is 5.");

     int sum = Int32.Parse(args[0]) + Int32.Parse(args[1]);

     Console.WriteLine("The sum of {0} and {1} is {2}.",
     args[0], args[1], sum);

    }
  }
}
```

## Paso 5: Compilar y ejecutar el código
<a name="sample-dotnetcore-run"></a>

En este paso, compilará el proyecto y sus dependencias en un conjunto de archivos binarios, incluido un archivo de aplicación ejecutable. A continuación, ejecutará la aplicación.

1. En el IDE, cree un constructor para .NET de la siguiente manera.

   1. En la barra de menús, seleccione **Run, Build System, New Build System (Ejecutar, Sistema de compilación, Nuevo sistema de compilación)**.

   1. En la pestaña **My Builder.build (Mi Builder.build)**, reemplace el contenido de la pestaña por el código siguiente.

      ```
      {
        "cmd" : ["dotnet", "build"],
        "info" : "Building..."
      }
      ```

   1. Elija **File, Save As (Archivo, Guardar como)**.

   1. En **Filename (Nombre de archivo)**, escriba `.NET.build`.

   1. En **Folder (Carpeta)**, escriba `/.c9/builders`.

   1. Seleccione **Save**.

1. Con el contenido del archivo `Program.cs` mostrado en el editor, seleccione **Ejecutar, Sistema de compilación, .NET**. A continuación, elija **Run, Build (Ejecutar, Compilar)**.

   Este constructor añade los subdirectorios `bin` y `Debug` al subdirectorio `hello/obj`. Tenga en cuenta los siguientes tres archivos clave.
   + El archivo `hello/bin/Debug/netcoreapp3.1/hello.dll` es el archivo de aplicación ejecutable.
   + El archivo `hello/bin/Debug/netcoreapp3.1/hello.deps.json` enumera las dependencias de la aplicación.
   + El archivo `hello/bin/Debug/netcoreapp3.1/hello.runtimeconfig.json` especifica el tiempo de ejecución compartido y su versión para la aplicación.
**nota**  
El nombre de la carpeta, `netcoreapp3.1`, refleja la versión del SDK de .NET. Es posible que vea un número diferente en el nombre de la carpeta dependiendo de la versión que haya instalado.

1. Cree un ejecutor para .NET de la siguiente manera.

   1. En la barra de menús, seleccione **Run, Run With, New Runner (Ejecutar, Ejecutar con, Nuevo ejecutor)**.

   1. En la pestaña **My Runner.run (Mi Runner.run)**, reemplace el contenido de la pestaña por el código siguiente.

      ```
      {
        "cmd" : ["dotnet", "run", "$args"],
        "working_dir": "$file_path",
        "info" : "Running..."
      }
      ```

   1. Elija **File, Save As (Archivo, Guardar como)**.

   1. En **Filename (Nombre de archivo)**, escriba `.NET.run`.

   1. En **Folder (Carpeta)**, escriba `/.c9/runners`.

   1. Seleccione **Save**.

1. Ejecute la aplicación con dos números enteros que se añadirán (por ejemplo, `5` y `9`) de la siguiente manera.

   1. Con el contenido del archivo `Program.cs` mostrado en el editor, seleccione **Run, Run Configurations, New Run Configuration (Ejecutar, Configuraciones de ejecución, Nueva configuración de ejecución)**.

   1. En la pestaña **Nuevo - Inactivo**, elija **Ejecutor: automático** y, a continuación, elija **.NET**.

   1. En el cuadro **Command (Comando)**, escriba `hello 5 9`.

   1. Seleccione **Ejecutar**.

      De forma predeterminada, este ejecutor indica a .NET que ejecute el archivo `hello.dll` en el directorio `hello/bin/Debug/netcoreapp3.1`.

      Compare la salida con la siguiente.

      ```
      Hello, World!
      The sum of 2 and 3 is 5.
      The sum of 5 and 9 is 14.
      ```

## Paso 6: Cree y configure un proyecto de aplicación de consola .NET que utilice AWS SDK para .NET
<a name="sample-dotnetcore-sdk"></a>

Puede mejorar este ejemplo para usarlo AWS SDK para .NET para crear un bucket de Amazon S3, enumerar los buckets disponibles y, a continuación, eliminar el bucket que acaba de crear.

En este nuevo proyecto, añada una referencia al AWS SDK para .NET. AWS SDK para .NET Proporciona una forma cómoda de interactuar con AWS servicios como Amazon S3, desde su código.NET. A continuación, debe configurar la administración de AWS credenciales en su entorno. AWS SDK para .NET Necesita estas credenciales para interactuar con AWS los servicios.

### Para crear el proyecto
<a name="sample-dotnetcore-sdk-create"></a>

1. Cree un proyecto de aplicación de consola de .NET. Para ello, ejecute la CLI de .NET con el comando ** `new` **, especificando el tipo de plantilla de proyecto de aplicación de consola y el lenguaje de programación que se utilizará. 

   La opción `-n` indica que el proyecto se emite en un nuevo directorio, `s3`. A continuación, vaya a ese directorio.

   ```
   dotnet new console -lang C# -n s3
   cd s3
   ```

1. Agregue una referencia de proyecto al paquete de Amazon S3 en AWS SDK para .NET. Para ello, ejecute la CLI.NET con el **`add package`**comando, especificando el nombre del paquete Amazon S3 en NuGet. (NuGetdefine cómo se crean, alojan y consumen los paquetes para .NET, y proporciona las herramientas para cada una de esas funciones).

   ```
   dotnet add package AWSSDK.S3
   ```

   Al añadir una referencia de proyecto al paquete Amazon S3, NuGet también añade una referencia de proyecto al resto del AWS SDK para .NET.
**nota**  
Para ver los nombres y las versiones de otros paquetes AWS relacionados NuGet, consulte [NuGetlos paquetes etiquetados con aws-sdk](https://www.nuget.org/packages?q=Tags%3A%22aws-sdk%22) en el NuGet sitio web.

### Para configurar la administración de credenciales AWS
<a name="sample-dotnetcore-sdk-creds"></a>

Cada vez que utilice el AWS SDK para .NET para llamar a un AWS servicio, debe proporcionar un conjunto de AWS credenciales con la llamada. Estas credenciales determinan si AWS SDK para .NET tiene los permisos adecuados para realizar esa llamada. Si las credenciales no cubren los permisos adecuados, la llamada no se realizará correctamente.

Para almacenar sus credenciales en el entorno, siga las instrucciones de [Llamar Servicios de AWS desde un entorno de AWS Cloud9](credentials.md) y, a continuación, vuelva a este tema.

Para obtener información adicional, consulte [Configuración de AWS credenciales](https://docs.aws.amazon.com/sdk-for-net/v3/developer-guide/net-dg-config-creds.html) en la *Guía para AWS SDK para .NET desarrolladores*.

## Paso 7: Añadir el código AWS del SDK
<a name="sample-dotnetcore-sdk-code"></a>

En este paso, agregará código para interactuar con Amazon S3 y crear un bucket, eliminará el bucket que acaba de crear y, a continuación, enumerará los buckets disponibles.

Desde la ventana de **entorno** del AWS Cloud9 IDE, abra el `s3/Program.cs` archivo. En el editor, reemplace el contenido actual del archivo por el siguiente código y, a continuación, guarde el archivo `Program.cs`.

```
using Amazon;
using Amazon.S3;
using Amazon.S3.Model;
using Amazon.S3.Util;
using System;
using System.Threading.Tasks;
     
namespace s3
{
  class Program
  {
   async static Task Main(string[] args)
   {
    if (args.Length < 2) {
      Console.WriteLine("Usage: <the bucket name> <the AWS Region to use>");
      Console.WriteLine("Example: my-test-bucket us-east-2");
      return;
    }
     
    if (args[1] != "us-east-2") {
      Console.WriteLine("Cannot continue. The only supported AWS Region ID is " +
      "'us-east-2'.");
       return;
     }
         
      var bucketRegion = RegionEndpoint.USEast2;
      // Note: You could add more valid AWS Regions above as needed.
     
      using (var s3Client = new AmazonS3Client(bucketRegion)) {
      var bucketName = args[0];
        
      // Create the bucket.
      try
      {
       if (await AmazonS3Util.DoesS3BucketExistV2Async(s3Client, bucketName))
       {
         Console.WriteLine("Cannot continue. Cannot create bucket. \n" +
         "A bucket named '{0}' already exists.", bucketName);
         return;
       } else {
         Console.WriteLine("\nCreating the bucket named '{0}'...", bucketName);
         await s3Client.PutBucketAsync(bucketName);
         }
       }
       catch (AmazonS3Exception e)
       {
        Console.WriteLine("Cannot continue. {0}", e.Message);
       }
       catch (Exception e)
       {
        Console.WriteLine("Cannot continue. {0}", e.Message);
       }
        
       // Confirm that the bucket was created.
       if (await AmazonS3Util.DoesS3BucketExistV2Async(s3Client, bucketName))
       {
          Console.WriteLine("Created the bucket named '{0}'.", bucketName);
       } else {
         Console.WriteLine("Did not create the bucket named '{0}'.", bucketName);
       }
        
       // Delete the bucket.
       Console.WriteLine("\nDeleting the bucket named '{0}'...", bucketName);
       await s3Client.DeleteBucketAsync(bucketName);
        
       // Confirm that the bucket was deleted.
       if (await AmazonS3Util.DoesS3BucketExistV2Async(s3Client, bucketName))
       {
          Console.WriteLine("Did not delete the bucket named '{0}'.", bucketName);
       } else {
         Console.WriteLine("Deleted the bucket named '{0}'.", bucketName);
       };
        
        // List current buckets.
       Console.WriteLine("\nMy buckets now are:");
       var response = await s3Client.ListBucketsAsync();
        
       foreach (var bucket in response.Buckets)
       {
       Console.WriteLine(bucket.BucketName);
       }
      }
    }
  }
}
```

## Paso 8: Compila y ejecuta el código del AWS SDK
<a name="sample-dotnetcore-sdk-run"></a>

En este paso, compilará el proyecto y sus dependencias en un conjunto de archivos binarios, incluido un archivo de aplicación ejecutable. A continuación, ejecutará la aplicación.

1. Compilar el proyecto. Para ello, con el contenido del archivo `s3/Program.cs` mostrado en el editor, en la barra de menú, elija **Run, Build (Ejecutar, Compilar)**.

1. Ejecute la aplicación con el nombre del bucket de Amazon S3 que desea crear y el ID de la región de `my-test-bucket` en la que desea crearlo (por ejemplo, AWS y `us-east-2`) de la siguiente manera.

   1. Con el contenido del archivo `s3/Program.cs` aún mostrado en el editor, seleccione **Run, Run Configurations, New Run Configuration (Ejecutar, Configuraciones de ejecución, Nueva configuración de ejecución)**.

   1. En la pestaña **Nuevo - Inactivo**, elija **Ejecutor: automático** y, a continuación, elija **.NET**.

   1. En el cuadro de **comandos**, escriba el nombre de la aplicación, el nombre del bucket de Amazon S3 que se va a crear y el ID de la AWS región en la que se va a crear el bucket (por ejemplo,`s3 my-test-bucket us-east-2`).

   1. Seleccione **Ejecutar**.

      De forma predeterminada, este ejecutor indica a .NET que ejecute el archivo `s3.dll` en el directorio `s3/bin/Debug/netcoreapp3.1`.

      Compare sus resultados con la siguiente salida.

      ```
      Creating a new bucket named 'my-test-bucket'...
      Created the bucket named 'my-test-bucket'.
      
      Deleting the bucket named 'my-test-bucket'...
      Deleted the bucket named 'my-test-bucket'.
      
      My buckets now are:
      ```

## Paso 9: limpiar
<a name="sample-dotnetcore-clean-up"></a>

Para evitar que se hagan cargos continuos a su AWS cuenta una vez que haya terminado de usar este ejemplo, debe eliminar el entorno. Para obtener instrucciones, consulte [Eliminar un entorno en AWS Cloud9](delete-environment.md).