基于 Windows 的简单应用程序使用 Amazon SDK for .NET - Amazon SDK for .NET
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

基于 Windows 的简单应用程序使用 Amazon SDK for .NET

本教程使用了 Windows Amazon SDK for .NET 上的 Visual Studio 和。 NET核心。本教程向您展示如何使用列出您拥有的 Amazon S3 存储桶,以及如何选择创建存储桶。SDK

你将使用 Visual Studio 在 Windows 上执行本教程,然后。 NET核心。有关配置开发环境的其它方法,请参阅安装和配置工具链

在 Windows 上使用 Visual Studio 进行开发所必需的。 NET核心:

  • 微软。 NET酷睿 2.1、3.1 或更高版本

    默认情况下,安装最新版本的 Visual Studio 时通常会包含此功能。

注意

在使用这些教程之前,必须先安装工具链配置SDK身份验证

步骤

创建项目

  1. 打开 Visual Studio 并创建一个使用 C# 版本的控制台应用程序模板的新项目;也就是说,描述为:“... 用于创建可以运行的命令行应用程序。 NET...”。将项目命名为 S3CreateAndList

    注意

    不要选择. NET控制台应用程序模板的框架版本,或者,如果是,请务必使用。 NET框架 4.7.2 或更高版本。

  2. 加载新创建的项目后,选择 “工具”、“Pack NuGet age Manager”、“管理解决方案 NuGet 包”。

  3. 浏览以下 NuGet 软件包并将其安装到项目中:AWSSDK.S3AWSSDK.SecurityTokenAWSSDK.SSO、和 AWSSDK.SSOOIDC

    此过程通过 NuGet 软件包管理器安装NuGet 软件包。因为我们确切地知道本教程需要什么 NuGet 软件包,所以我们现在可以执行这个步骤了。在开发过程中,知道所需的程序包也很常见。出现这种情况时,请按照类似的过程安装它们。

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

创建代码

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

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

    using System; using System.Threading.Tasks; // NuGet packages: AWSSDK.S3, AWSSDK.SecurityToken, AWSSDK.SSO, AWSSDK.SSOOIDC using Amazon.Runtime; using Amazon.Runtime.CredentialManagement; using Amazon.S3; using Amazon.S3.Model; using Amazon.SecurityToken; using Amazon.SecurityToken.Model; namespace S3CreateAndList { class Program { // This code is part of the quick tour in the developer guide. // See https://docs.aws.amazon.com/sdk-for-net/v3/developer-guide/quick-start.html // for complete steps. // Requirements: // - An SSO profile in the SSO user's shared config file with sufficient privileges for // STS and S3 buckets. // - An active SSO Token. // If an active SSO token isn't available, the SSO user should do the following: // In a terminal, the SSO user must call "aws sso login". // Class members. static async Task Main(string[] args) { // Get SSO credentials from the information in the shared config file. // For this tutorial, the information is in the [default] profile. var ssoCreds = LoadSsoCredentials("default"); // Display the caller's identity. var ssoProfileClient = new AmazonSecurityTokenServiceClient(ssoCreds); Console.WriteLine($"\nSSO Profile:\n {await ssoProfileClient.GetCallerIdentityArn()}"); // Create the S3 client is by using the SSO credentials obtained earlier. var s3Client = new AmazonS3Client(ssoCreds); // 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); } } // Display a list of the account's S3 buckets. Console.WriteLine("\nGetting a list of your buckets..."); var listResponse = await s3Client.ListBucketsAsync(); Console.WriteLine($"Number of buckets: {listResponse.Buckets.Count}"); foreach (S3Bucket b in listResponse.Buckets) { Console.WriteLine(b.BucketName); } Console.WriteLine(); } // // 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; } // // Method to get SSO credentials from the information in the shared config file. static AWSCredentials LoadSsoCredentials(string profile) { var chain = new CredentialProfileStoreChain(); if (!chain.TryGetAWSCredentials(profile, out var credentials)) throw new Exception($"Failed to find the {profile} profile"); return credentials; } } // Class to read the caller's identity. public static class Extensions { public static async Task<string> GetCallerIdentityArn(this IAmazonSecurityTokenService stsClient) { var response = await stsClient.GetCallerIdentityAsync(new GetCallerIdentityRequest()); return response.Arn; } } }
  3. 构建应用程序。

    注意

    如果您使用的是旧版 Visual Studio,则可能会遇到类似以下内容的构建错误:

    “Feature 'async main' is not available in C# 7.0. Please use language version 7.1 or greater.”

    如果您遇到此错误,请将项目设置为使用该语言的更高版本。这通常在项目属性构建高级中完成。

运行应用程序

  1. 不带命令行参数运行应用程序。要么在命令提示符下执行此操作(如果您之前打开过),也可以从中执行此操作IDE。

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

  3. 为新 Amazon S3 桶选择名称。使用 “dotnet-quicktour-s3-1-winvs-” 作为基础,然后为其添加一些独特的东西,例如 a GUID 或你的名字。请务必遵守存储桶命名规则,如 Amazon S3 用户指南中的存储桶命名规则中所述。

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

    在命令行中,替换 amzn-s3-demo-bucket 在以下命令中,使用您选择的存储桶的名称。

    S3CreateAndList amzn-s3-demo-bucket

    或者,如果您在中运行应用程序IDE,请选择 “项目”、“S3 CreateAndList 属性”、“调试”,然后在此处输入存储桶名称。

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

清理

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

  • 如果您不想保留应用程序在之前步骤中创建的存储桶,请使用位于的 Amazon S3 控制台将其删除https://console.aws.amazon.com/s3/

  • 如果你不想保留你的. NETproject,从开发环境中移除该S3CreateAndList文件夹。

后续工作

返回快速指南菜单或直接转到此快速指南的末尾