使用 的簡單跨平台應用程式 AWS SDK for .NET - AWS SDK for .NET

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 的簡單跨平台應用程式 AWS SDK for .NET

本教學課程使用 AWS SDK for .NET 和 。NET 跨平台開發的核心。本教學課程說明如何使用 SDK列出您擁有的 Amazon S3 儲存貯體,並選擇性地建立儲存貯體。

您將使用跨平台工具執行本教學課程,例如 .NET 命令列介面 (CLI)。如需設定開發環境的其他方法,請參閱 安裝和設定您的工具鏈

Windows、Linux 或 macOS 上的跨平台 .NET 開發需要:

  • Microsoft 。NET 核心 SDK、2.1 版、3.1 版或更新版本,其中包含 .NET 命令列介面 (CLI) (dotnet) 和 。NET 核心執行期。

注意

使用這些教學課程之前,您必須先安裝工具鏈設定的SDK身分驗證

步驟

建立專案

  1. 開啟命令提示字元或終端機。尋找或建立作業系統資料夾,您可以在其中建立 .NET 專案。

  2. 在該資料夾中,執行下列命令來建立 .NET 專案。

    dotnet new console --name S3CreateAndList
  3. 前往新建立的S3CreateAndList資料夾並執行下列命令:

    dotnet add package AWSSDK.S3 dotnet add package AWSSDK.SecurityToken dotnet add package AWSSDK.SSO dotnet add package AWSSDK.SSOOIDC

    上述命令會從 NuGet 套件NuGet 管理員 安裝套件。由於我們確切知道本教學課程所需的 NuGet 套件,因此現在可以執行此步驟。開發期間,所需的套件也很常見。發生這種情況時,即可執行類似的命令。

建立程式碼

  1. S3CreateAndList 資料夾中,在程式碼編輯器中尋找並開啟 Program.cs

  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; } } }

執行應用程式

  1. 執行下列命令。

    dotnet run
  2. 檢查輸出以查看您擁有的 Amazon S3 儲存貯體數量,如果有的話,以及其名稱。

  3. 選擇新 Amazon S3 儲存貯體的名稱。使用 "dotnet-quicktour-s3-1-cross-" 作為基礎,並為其新增唯一項目,例如 GUID或您的名稱。請務必遵循儲存貯體名稱的規則,如 Amazon S3 使用者指南 中的儲存貯體命名規則所述。

  4. 執行下列命令,取代 amzn-s3-demo-bucket 搭配您選擇的儲存貯體名稱。

    dotnet run amzn-s3-demo-bucket
  5. 檢查輸出以查看建立的新儲存貯體。

清除

執行本教學課程時,您建立了一些資源,此時可以選擇清除。

  • 如果您不想保留應用程式在先前步驟中建立的儲存貯體,請使用位於 的 Amazon S3 主控台將其刪除https://console.aws.amazon.com/s3/

  • 如果您不想保留 .NET 專案,請從開發環境中移除 S3CreateAndList 資料夾。

後續作業

返回快速導覽選單或直接前往此快速導覽的結尾。