适用于 AWS Cloud9 的 .NET 教程 - AWS Cloud9

AWS Cloud9 现已不再向新客户提供。AWS Cloud9 的现有客户可以继续正常使用该服务。了解更多

适用于 AWS Cloud9 的 .NET 教程

在本教程中,您可以在 AWS Cloud9 开发环境中运行 .NET 代码。

按照本教程操作并创建此示例可能会对您的 AWS 账户收费。其中包括可能对 Amazon EC2 和 Amazon S3 等服务收取的费用。有关更多信息,请参阅 Amazon EC2 定价Amazon S3 定价

先决条件

在使用此示例之前,请确保您的设置满足以下要求:

  • 您必须有现成的 AWS Cloud9 EC2 开发环境。本示例假设您已经有连接到运行 Amazon Linux 或 Ubuntu Server 的 Amazon EC2 实例的 EC2 环境。如果您有不同类型的环境或操作系统,可能需要按照本示例的说明来设置相关的工具。有关更多信息,请参阅 在 AWS Cloud9 中创建环境

  • 您已将适用于现有环境的 AWS Cloud9 IDE 打开。当您打开环境时,AWS Cloud9 会在 Web 浏览器中为该环境打开 IDE。有关更多信息,请参阅 在 AWS Cloud9 中打开环境

步骤 1:安装所需工具

在此步骤中,将运行此示例需要的 .NET 开发工具包安装到环境中。

  1. 确认环境中是否已安装 .NET 开发工具包的最新版本。要执行此操作,请在 AWS Cloud9 IDE 的终端会话中,运行带 --version 选项的 .NET Core 命令行界面 (CLI)。

    dotnet --version

    如果显示 .NET 命令行工具版本并且版本为 2.0 或更高版本,请向前跳至 步骤 3:创建 .NET 控制台应用程序项目。如果版本低于 2.0 或显示 bash: dotnet: command not found 等错误,请继续安装 .NET 开发工具包。

  2. 对于 Amazon Linux,在 AWS Cloud9 IDE 的终端会话中,运行以下命令,确保已安装最新的安全更新和缺陷修复,并安装 .NET 开发工具包需要的 libunwind 程序包。(要开始新的终端会话,请在菜单栏上依次选择 Window (窗口)、New Terminal (新建终端)。)

    sudo yum -y update sudo yum -y install libunwind

    对于 Ubuntu Server,在 AWS Cloud9 IDE 的终端会话中,运行以下命令,确保已安装最新的安全更新和错误修复。(要开始新的终端会话,请在菜单栏上依次选择 Window (窗口)、New Terminal (新建终端)。)

    sudo apt -y update
  3. 通过运行以下命令,将 .NET 开发工具包安装程序脚本下载到环境中。

    wget https://dot.net/v1/dotnet-install.sh
  4. 通过运行以下命令,使安装程序脚本可由当前用户执行。

    sudo chmod u=rx dotnet-install.sh
  5. 通过运行以下命令,运行安装程序脚本,该脚本将下载并安装 .NET 开发工具包。

    ./dotnet-install.sh -c Current
  6. 将 .NET 开发工具包添加到 PATH。为此,在环境的 shell 配置文件(例如,.bashrc 文件)中,将 $HOME/.dotnet 子目录添加到环境的 PATH 变量,如下所示。

    1. 使用 .bashrcvi 命令打开 文件以供编辑。

      vi ~/.bashrc
    2. 对于 Amazon Linux,使用向下键或 j 键,移至以 export PATH 开头的行。

      对于 Ubuntu Server,通过键入 G 移动至文件最后一行。

    3. 使用向右键或 $ 键移至行尾。

    4. 通过按 i 键切换到插入模式。(-- INSERT --- 将出现在显示内容的末尾。)

    5. 对于 Amazon Linux,通过键入 :$HOME/.dotnet$HOME/.dotnet 子目录添加至 PATH 变量。请务必包含冒号字符 (:)。现在,行应类似于以下内容。

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

      对于 Ubuntu Server,请按向右箭头键,然后按 Enter 两次,然后在文件末尾单独输入以下代码行。

      export PATH=$HOME/.dotnet:$PATH
    6. 保存该文件。要执行此操作,请按 Esc 键(-- INSERT --- 将从显示内容的末尾消失),键入 :wq(以写入然后退出文件),然后按 Enter

  7. 通过提供 .bashrc 文件源来加载 .NET 开发工具包。

    . ~/.bashrc
  8. 通过运行带 --help 选项的 .NET CLI 确认已加载 .NET 开发工具包。

    dotnet --help

    如果成功,则显示 .NET 开发工具包版本号,以及附加的使用信息。

  9. 如果不想再在环境中保留 .NET 开发工具包安装程序脚本,则可按如下所述将其删除。

    rm dotnet-install.sh

步骤 2(可选):为 Lambda 函数安装 .NET CLI 扩展

虽然本教程不是必需的,但如果您还安装了 Amazon.Lambda.Tools 程序包,则可以使用 .NET CLI 部署 AWS Lambda 函数和 AWS Serverless Application Model 应用程序。

  1. 要安装此程序包,请运行以下命令:

    dotnet tool install -g Amazon.Lambda.Tools
  2. 现在设置 PATHDOTNET_ROOT 环境变量,以指向已安装的 Lambda 工具。在 .bashrc 文件,查找 export PATH 部分,然后对其进行编辑,使其类似于以下内容(有关编辑此文件的详细信息,请参阅步骤 1):

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

步骤 3:创建 .NET 控制台应用程序项目

在此步骤中,将使用 .NET 创建一个名为 hello 的项目。此项目包含 .NET 在 IDE 中从终端运行简单应用程序所需的全部文件。该应用程序的代码是用 C# 编写的。

创建 .NET 控制台应用程序项目。要执行此操作,请用 new 命令运行 .NET CLI,并指定要使用的控制台应用程序项目模板类型和编程语言(在本示例中为 C#)。

-n 选项表示将项目输出到新目录,hello。然后,导航到该目录。

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

前面的命令会将一个名为 obj 且包含几个文件的子目录以及一些附加的独立文件添加至 hello 目录。您应注意以下两个关键文件:

  • hello/hello.csproj 文件包含有关控制台应用程序项目的信息。

  • hello/Program.cs 文件包含要运行的应用程序代码。

步骤 4:添加代码

在此步骤中,您将向应用程序中添加一些代码。

从 AWS Cloud9 IDE 的 Environment(环境)窗口中打开 hello/Program.cs 文件。

在编辑器中,将该文件的当前内容替换为以下代码,然后保存 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); } } }

步骤 5:生成并运行代码

在此步骤中,您会将该项目及其依赖项生成为一组二进制文件,包括一个可运行的应用程序文件。然后运行该应用程序。

  1. 在 IDE 中,为 .NET 创建一个生成器,如下所示。

    1. 在菜单栏中,依次选择 Run (运行)、Build System (生成系统) 和 New Build System (新建生成系统)

    2. My Builder.build (我的 Builder.build) 选项卡上,将选项卡的内容替换为以下代码。

      { "cmd" : ["dotnet", "build"], "info" : "Building..." }
    3. 依次选择 File(文件)、Save As(另存为)

    4. 对于 Filename (文件名),键入 .NET.build

    5. 对于 Folder (文件夹),键入 /.c9/builders

    6. 选择保存

  2. 编辑器中显示 Program.cs 文件的内容后,依次选择 运行、生成系统和 .NET 。然后依次选择 Run (运行)、Build (生成)

    此生成器将向 hello/obj 子目录中添加一个名为 bin 的子目录和一个名为 Debug 的子目录。请注意以下三个关键文件。

    • hello/bin/Debug/netcoreapp3.1/hello.dll 文件是可运行的应用程序文件。

    • hello/bin/Debug/netcoreapp3.1/hello.deps.json 文件列出了应用程序的依赖项。

    • hello/bin/Debug/netcoreapp3.1/hello.runtimeconfig.json 文件为应用程序指定共享的运行时及其版本。

    注意

    文件夹名称 netcoreapp3.1,反映了本示例中使用的 .NET 开发工具包的版本。根据您安装的版本,您可能会在文件夹名称中看到不同的编号。

  3. 为 .NET 创建一个运行程序,如下所示。

    1. 在菜单栏上,依次选择 Run (运行)、Run With (运行方式) 和 New Runner (新建运行程序)

    2. My Runner.run (我的 Runner.run) 选项卡上,将该选项卡的内容替换为以下代码。

      { "cmd" : ["dotnet", "run", "$args"], "working_dir": "$file_path", "info" : "Running..." }
    3. 依次选择 File(文件)、Save As(另存为)

    4. 对于 Filename (文件名),键入 .NET.run

    5. 对于 Folder (文件夹),键入 /.c9/runners

    6. 选择保存

  4. 运行应用程序,将两个整数相加(例如,59),如下所示。

    1. 当编辑器中显示 Program.cs 文件的内容时,依次选择 Run (运行)、Run Configurations (运行配置) 和 New Run Configuration (新建运行配置)

    2. [新建] - 空闲 选项卡中,选择运行程序: 自动,然后选择 .NET

    3. Command (命令) 框中,键入 hello 5 9

    4. 选择运行

      默认情况下,此运行程序将指示 .NET 运行 hello.dll 目录中的 hello/bin/Debug/netcoreapp3.1 文件。

      将输出与以下内容进行比较。

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

步骤 6:创建并设置使用 AWS SDK for .NET 的 .NET 控制台应用程序项目

您可以改进此示例,以使用 AWS SDK for .NET 创建 Amazon S3 存储桶,列出您的可用存储桶,然后删除刚刚创建的存储桶。

在此新项目中,您将添加对AWS SDK for .NET的引用。AWS SDK for .NET 提供了从 .NET 代码与 AWS 服务(如 Amazon S3)交互的便捷方式。然后在环境中设置 AWS 凭证管理。AWS SDK for .NET需要使用这些凭证来与 AWS 服务进行交互。

创建 项目

  1. 创建 .NET 控制台应用程序项目。要执行此操作,请用 new 命令运行 .NET CLI,并指定要使用的控制台应用程序项目模板类型和编程语言。

    -n 选项表示将项目输出到新目录,s3。然后,导航到该目录。

    dotnet new console -lang C# -n s3 cd s3
  2. 在 AWS SDK for .NET 中添加对 Amazon S3 程序包的项目引用。要执行此操作,请用 add package 命令运行 .NET CLI,同时指定 NuGet 中的 Amazon S3 程序包名称。(NuGet 定义用于 .NET 的程序包的创建、托管和使用方式,并为每个角色提供工具。)

    dotnet add package AWSSDK.S3

    在添加对 Amazon S3 程序包的项目引用时,NuGet 也会向 AWS SDK for .NET 的其余部分添加项目引用。

    注意

    有关 NuGet 中其他 AWS 相关程序包的名称和版本,请参阅 NuGet 网站上的用 aws-sdk 贴标签的 NuGet 程序包

设置 AWS 凭证管理

每次您使用 AWS SDK for .NET 调用 AWS 服务时,都必须提供一组 AWS 凭证才能进行调用。这些凭证确定 AWS SDK for .NET 是否具有相应的权限以进行该调用。如果凭证没有包括合适的权限,调用将失败。

要在环境中存储凭证,请按照 从 AWS Cloud9 中的环境调用 AWS 服务 中的说明进行操作,然后返回到该主题。

有关其他信息,请参阅 AWS SDK for .NET 开发人员指南中的配置 AWS 凭证

步骤 7:添加 AWS 开发工具包代码

在此步骤中,您添加用于与 Amazon S3 交互的代码,以用于创建存储桶、删除刚刚创建的存储桶,然后列出可用的存储桶。

从 AWS Cloud9 IDE 的 Environment(环境)窗口中打开 s3/Program.cs 文件。在编辑器中,将该文件的当前内容替换为以下代码,然后保存 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); } } } } }

步骤 8:构建并运行 AWS 开发工具包代码

在此步骤中,您会将该项目及其依赖项生成为一组二进制文件,包括一个可运行的应用程序文件。然后运行该应用程序。

  1. 构建 项目。要执行此操作,在编辑器中显示 s3/Program.cs 文件的内容后,请在菜单栏上依次选择 Run (运行)、Build (生成)

  2. 用要创建的 Amazon S3 存储桶的名称和要在其中创建存储桶的 AWS 区域的 ID(例如,my-test-bucketus-east-2)运行应用程序,如下所示。

    1. 当编辑器中仍显示 s3/Program.cs 文件的内容时,依次选择 Run (运行)、Run Configurations (运行配置)、New Run Configuration (新建运行配置)

    2. [新建] - 空闲 选项卡中,选择运行程序: 自动,然后选择 .NET

    3. Command(命令)框中,键入应用程序的名称、要创建的 Amazon S3 存储桶的名称、要在其中创建存储桶的 AWS 区域的 ID(例如,s3 my-test-bucket us-east-2)。

    4. 选择运行

      默认情况下,此运行程序将指示 .NET 运行 s3.dll 目录中的 s3/bin/Debug/netcoreapp3.1 文件。

      将结果与以下输出进行比较。

      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:

步骤 9:清除

为防止在使用完该示例后一直对您的 AWS 账户收费,应删除环境。有关说明,请参阅 在 AWS Cloud9 中删除环境