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

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

使用适用于 .NET 的 AWS 开发工具包的简单跨平台应用程序

本教程使用 适用于 .NET 的 AWS 开发工具包 和.NETCore进行跨平台开发。本教程向您展示如何使用SDK列出 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 凭证.

您将使用跨平台工具(例如 .NET 命令行界面 (CLI))完成本教程。有关配置开发环境的其他方法,请参阅 安装和配置您的工具链.

对于 Windows、Linux 或 macOS 上的跨平台 .NET 开发,需要:

  • Microsoft .NET Core 开发工具包,版本 2.1、3.1 或更高版本,其中包括 .NET 命令行界面 (CLI) (dotnet) 和 .NET Core 运行时。

创建项目

  1. 打开命令提示符或终端。查找或创建可以在其中创建 .NET 项目的操作系统文件夹。

  2. 在该文件夹中,运行以下命令以创建 .NET 项目。

    dotnet new console --name S3CreateAndList
  3. 转到新创建的 S3CreateAndList 文件夹并运行以下命令。

    dotnet add package AWSSDK.S3

    前面的命令会安装 AWSSDK.S3 Nu从 NuGet包管理器. 由于我们确切知道本教程需要什么NuGet软件包,现在可以执行此步骤。在开发过程中,所需的软件包也经常被人所知。出现这种情况时,可以运行类似的命令。

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

    Linux 或 macOS:

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

    (Windows)

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

创建代码

  1. S3CreateAndList 文件夹中,查找并在代码编辑器中打开 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(); } } }

运行应用程序

  1. 运行以下命令:。

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

  3. 为新 Amazon S3 存储桶选择名称。使用“dotnet-quickstart-s3-1-cross-”作为基数,并添加一些独特的内容,例如GUID或您的姓名。请务必遵循桶名称的规则,如 bucket命名规则Amazon Simple Storage Service 开发人员指南.

  4. 运行以下命令,替换 BUCKET-NAME 以及您选择的存储桶名称。

    dotnet run BUCKET-NAME
  5. 检查输出以查看创建的新存储桶。

清除

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

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

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

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

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

后续工作

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