Tutorial de.NET para AWS Cloud9 - AWS Cloud9

AWS Cloud9 ya no está disponible para los nuevos clientes. Los clientes existentes de AWS Cloud9 pueden seguir utilizando el servicio con normalidad. Más información

Tutorial de.NET para AWS Cloud9

Esta muestra le permite ejecutar código de .NET en un entorno de desarrollo de AWS Cloud9.

El uso de este tutorial y la creación de esta muestra pueden generar cargos en su cuenta de AWS. 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 y Precios de Amazon S3.

Requisitos previos

Antes de utilizar este ejemplo, asegúrese de que su configuración cumpla los siguientes requisitos:

  • Debe tener un entorno de desarrollo de AWS Cloud9 EC2. 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 Creación de un entorno en AWS Cloud9.

  • Ya tiene abierto el IDE de AWS Cloud9 para el 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 Apertura de un entorno en AWS Cloud9.

Paso 1: Instalar las herramientas necesarias

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 del terminal en el IDE de AWS Cloud9, ejecute la interfaz de la línea de comandos (CLI) de .NET Core con la opción --version .

    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. 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.

  2. Para Amazon Linux, en una sesión del terminal en el IDE de AWS Cloud9, ejecute los siguientes comandos para garantizar que se instalen las últimas actualizaciones de seguridad y correcciones de errores, así como para instalar un paquete libunwind necesario para 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

    Para Ubuntu Server, en una sesión del terminal en el IDE de AWS Cloud9, ejecute el siguiente comando para garantizar que las últimas actualizaciones de seguridad y correcciones de errores estén instaladas. [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
  3. 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
  4. 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
  5. 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
  6. 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
    2. 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.

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

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

    5. 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
    6. 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.

  7. Cargue el SDK de .NET mediante el aprovisionamiento del archivo .bashrc.

    . ~/.bashrc
  8. 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.

  9. 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

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

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

    dotnet tool install -g Amazon.Lambda.Tools
  2. 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

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#.

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#).

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

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

En la ventana Environment (Entorno) en el IDE de AWS Cloud9, abra el archivo hello/Program.cs.

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

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).

    2. 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..." }
    3. Elija File, Save As (Archivo, Guardar como).

    4. En Filename (Nombre de archivo), escriba .NET.build.

    5. En Folder (Carpeta), escriba /.c9/builders.

    6. Seleccione Guardar.

  2. 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.

  3. 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).

    2. 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..." }
    3. Elija File, Save As (Archivo, Guardar como).

    4. En Filename (Nombre de archivo), escriba .NET.run.

    5. En Folder (Carpeta), escriba /.c9/runners.

    6. Seleccione Guardar.

  4. 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).

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

    3. En el cuadro Command (Comando), escriba hello 5 9.

    4. Elija 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: Crear y configurar un proyecto de aplicación de consola de .NET que use AWS SDK for .NET

Puede mejorar esta muestra para utilizar el AWS SDK for .NET y crear un bucket de Amazon S3, mostrar una lista de 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 for .NET. AWS SDK for .NET proporciona un método práctico para interactuar con servicios de AWS, como Amazon S3, desde su código de .NET. A continuación, configure la administración de credenciales de AWS en su entorno. El AWS SDK for .NET necesita estas credenciales para interactuar con los servicios de AWS.

Para crear el proyecto

  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
  2. Agregue una referencia de proyecto al paquete de Amazon S3 en AWS SDK for .NET. Para ello, ejecute la CLI de .NET con el comando add package y especifique el nombre del paquete de Amazon S3 en NuGet. (NuGet define cómo se crean, alojan y consumen los paquetes para .NET, y proporciona las herramientas para cada uno de esos roles).

    dotnet add package AWSSDK.S3

    Al agregar una referencia de proyecto al paquete de Amazon S3, NuGet también agrega una referencia de proyecto al resto del AWS SDK for .NET.

    nota

    En el caso de nombres y versiones de otros paquetes relacionados con AWS en NuGet, consulte Paquetes de NuGet etiquetados con aws-sdk en el sitio web NuGet.

Para configurar la administración de credenciales de AWS

Cada vez que utilice el AWS SDK for .NET para llamar a un servicio de AWS, debe proporcionar un conjunto de credenciales de AWS con la llamada. Estas credenciales determinan si el AWS SDK for .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 a los Servicios de AWS desde un entorno en AWS Cloud9 y, a continuación, vuelva a este tema.

Para obtener información adicional, consulte Configuración de credenciales de AWS en la Guía para desarrolladores de AWS SDK for .NET.

Paso 7: Agregar el código de AWS SDK

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.

En la ventana Environment (Entorno) en el IDE de AWS Cloud9, abra el archivo s3/Program.cs. 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: Compilar y ejecutar el código de AWS SDK

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).

  2. 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).

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

    3. En el cuadro Command (Comando), escriba el nombre de la aplicación, el nombre del bucket de Amazon S3 que desea crear y el ID de la región de AWS donde desea crearlo (por ejemplo, s3 my-test-bucket us-east-2).

    4. Elija 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

Para evitar que se apliquen cargos continuos en su cuenta de AWS después de terminar de usar esta muestra, debe eliminar el entorno. Para obtener instrucciones, consulte Eliminación de un entorno en AWS Cloud9.