使用适用于 .NET 的 AWS 开发工具包的基于 Windows 的简单应用程序 - 适用于 .NET 的 AWS 开发工具包
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用适用于 .NET 的 AWS 开发工具包的基于 Windows 的简单应用程序

本教程在 Windows 适用于 .NET 的 AWS 开发工具包 上将 与 Visual Studio 和 .NET Core 结合使用。本教程介绍如何使用 开发工具包列出您拥有的Amazon S3存储桶并(可选)创建存储桶。

Steps

本教程的设置

本节介绍完成本教程所需的最低设置。您不应将此视为完整设置。为此,请参阅设置您的 适用于 .NET 的 AWS 开发工具包 环境

注意

如果已通过其他教程或现有配置完成以下任意步骤,请跳过这些步骤。

要创建 AWS 账户,请参阅如何创建并激活新的 Amazon Web Services 账户?

要执行这些教程,您需要创建一个 AWS Identity and Access Management (IAM)用户并获得该用户的凭证。当您拥有这些凭据后,您就可以在开发环境中将其用于SDK。方法如下:

创建和使用凭证

  1. 登录 AWS 管理控制台 并通过以下网址打开 IAM 控制台 https://console.amazonaws.cn/iam/

  2. 选择 Users (用户),然后选择 Add User (添加用户)

  3. 提供用户名称。在本教程中,我们将使用 Dotnet-Tutorial-User

  4. 低于 选择AWS访问类型,选择 程序化访问,然后选择 下一步: Permissions (权限)

  5. 选择直接附加现有策略

  6. 搜索,输入 s3,然后选择 AmazonS3完全访问.

  7. 选择 Next (下一步)。标签, 下一步: 审查、和 创建用户.

  8. 记录 Dotnet-Tutorial-User 的凭证。要完成此操作,您可以下载 .csv 文件,或者复制并粘贴 Access key ID (访问密钥 ID)Secret access key (秘密访问密钥)

    警告

    使用适当的安全措施来确保这些凭证的安全和轮换。

  9. 创建或打开共享 AWS 凭证文件。此文件在 Linux 和 macOS 系统上为 ~/.aws/credentials,在 Windows 上为 %USERPROFILE%\.aws\credentials

  10. 将以下文本添加到共享 AWS 凭证文件中,但将示例 ID 和示例密钥替换为之前获取的内容。请记住保存文件。

    [dotnet-tutorials] aws_access_key_id = AKIAIOSFODNN7EXAMPLE aws_secret_access_key = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

上述过程是用于身份验证和授权的几种可能方法中最简单的过程。有关完整信息,请参阅 配置 AWS 凭证.

您将在 Windows 上使用 Visual Studio 和 .NET Core 完成本教程。有关配置开发环境的其他方法,请参阅安装和配置您的工具链

对于在 Windows 使用 Visual Studio 和 .NET Core 进行开发,需要:

  • Microsoft .NET Core 2.1、3.1 或更高版本

    在安装VisualStudio的最新版本时,通常默认包括这一点。

创建项目

  1. 打开 Visual Studio 并创建一个使用控制台应用程序模板 C# 版本的新项目(“...用于创建可在 .NET Core... 上运行的命令行应用程序”)。将项目命名为 S3CreateAndList

  2. 在加载新创建的项目后,依次选择 Tools (工具NuGet Package Manager (NuGet 程序包管理器)、Manage NuGet Packages for Solution (管理解决方案的 NuGet 程序包)。

  3. 浏览到 AWSSDK.S3 NuGet 软件包并将其安装到项目中。

    此过程将从 NuGet 程序包管理器安装 S3 NuGet 程序包。由于我们确切地知道本教程需要哪些 NuGet 程序包,现在可以执行此步骤。在开发过程中,需要的软件包也很常见。出现这种情况时,请按照类似的过程安装它们。

  4. 如果您打算从命令提示符运行应用程序,请立即打开命令提示符并导航到将包含构建输出的文件夹。这通常是类似于 S3CreateAndList\S3CreateAndList\bin\Debug\netcoreapp3.1 的内容,但具体取决于我们的环境。

  5. 将以下临时环境变量添加到环境中。

    在命令提示符中,使用以下命令。

    set AWS_PROFILE=dotnet-tutorials set AWS_REGION=us-west-2

    或者,如果您打算在 IDE 中运行应用程序,请选择 Project (项目S3CreateAndList Properties (S3CreateAndList 属性)、Debug (调试),然后在此处设置它们。

创建代码

  1. S3CreateAndList 项目中,查找并在 IDE 中打开 Program.cs

  2. 用以下代码替换内容并保存文件。

    using System; using System.Threading.Tasks; // To interact with Amazon S3. using Amazon.S3; using Amazon.S3.Model; namespace S3CreateAndList { class Program { // Main method static async Task Main(string[] args) { // Before running this app: // - Credentials must be specified in an AWS profile. If you use a profile other than // the [default] profile, also set the AWS_PROFILE environment variable. // - An AWS Region must be specified either in the [default] profile // or by setting the AWS_REGION environment variable. // Create an S3 client object. var s3Client = new AmazonS3Client(); // 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); } } // List the buckets owned by the user. // Call a class method that calls the API method. Console.WriteLine("\nGetting a list of your buckets..."); var listResponse = await MyListBucketsAsync(s3Client); Console.WriteLine($"Number of buckets: {listResponse.Buckets.Count}"); foreach(S3Bucket b in listResponse.Buckets) { Console.WriteLine(b.BucketName); } } // // 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; } // // Async method to get a list of Amazon S3 buckets. private static async Task<ListBucketsResponse> MyListBucketsAsync(IAmazonS3 s3Client) { return await s3Client.ListBucketsAsync(); } } }
  3. 构建应用程序。

运行应用程序

  1. 不带命令行参数运行应用程序。在命令提示符 (如果您之前已打开) 中或从 IDE 执行此操作。

  2. 检查输出以查看您拥有的 Amazon S3 存储桶数(如果有)及其名称。

  3. 为新 Amazon S3 存储桶选择名称。使用dotnet-quickstart-s3-1作为基数,并为其添加一些唯一的内容,例如 GUID 或您的姓名。请务必遵循存储桶名称的规则,如 中的存储桶命名https://docs.amazonaws.cn/AmazonS3/latest/dev/BucketRestrictions.html#bucketnamingrules规则中所述Amazon Simple Storage Service 开发人员指南

  4. 再次运行应用程序,这次提供存储桶名称。

    在命令行中,替换 BUCKET-NAME 在以下命令中,使用您选择的 存储桶的名称。

    S3CreateAndList BUCKET-NAME

    或者,如果您在 IDE 中运行应用程序,请选择 Project (项目)、S3S3CreateAndList (S3CreateAndList 属性)、Debug (调试),然后在此处输入存储桶名称。

  5. 检查输出以查看创建的新存储桶。

清除

执行本教程时,您创建了一些可选择在此时清理的资源。

  • 如果您不想保留在之前步骤中创建的应用程序的存储桶,请使用 Amazon S3 控制台 https://console.amazonaws.cn/s3/.

  • 如果您不想保留您在本主题早期的教程设置中创建的用户,请使用 IAM 控制台 https://console.amazonaws.cn/iam/home#/用户.

    如果您选择删除用户,则还应删除 dotnet-tutorials 在共享的 AWS 凭证文件。您在本主题前面的教程设置过程中创建了此配置文件。

  • 如果您不想保留您的 .NET 项目,请从开发环境中删除 S3CreateAndList 文件夹。

后续工作

返回快速入门菜单或直接转到此快速入门的末尾