Application multiplateforme simple à l'aide du kit AWS SDK for .NET - AWS SDK for .NET

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Application multiplateforme simple à l'aide du kit AWS SDK for .NET

Ce didacticiel utilise .NET Core AWS SDK for .NET et .NET pour le développement multiplateforme. Le didacticiel explique comment utiliser le SDK pour répertorier les compartiments Amazon S3 que vous possédez et, éventuellement, créer un compartiment.

Vous allez réaliser ce didacticiel à l'aide d'outils multiplateformes comme l'interface de ligne de commande (CLI) .NET. Pour d'autres méthodes de configuration de votre environnement de développement, consultezInstallez et configurez votre chaîne d'outils.

Nécessaire pour le développement .NET multiplateforme sous Windows, Linux ou macOS :

  • Microsoft .NET Core SDK, version 2.1, 3.1 ou ultérieure, qui inclut l'interface de ligne de commande (CLI) NET (dotnet) et le moteur d'exécution .NET core.

Note

Avant d'utiliser ces didacticiels, vous devez d'abord avoir installé votre chaîne d'outils et configuré l'authentification du SDK.

Étapes

Création du projet

  1. Ouvrez l'invite de commande ou le terminal. Recherchez ou créez un dossier de système d'exploitation sous lequel vous pouvez créer un projet .NET.

  2. Dans ce dossier, exécutez la commande suivante pour créer le projet .NET.

    dotnet new console --name S3CreateAndList
  3. Accédez au S3CreateAndList dossier nouvellement créé et exécutez les commandes suivantes :

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

    Les commandes précédentes installent les NuGet packages depuis le gestionnaire de NuGet packages. Comme nous savons exactement de quels NuGet packages nous avons besoin pour ce didacticiel, nous pouvons effectuer cette étape dès maintenant. Il est également courant que les packages requis soient connus au cours du développement. Dans ce cas, une commande similaire peut être exécutée à ce moment-là.

Créer le code

  1. Dans le dossier S3CreateAndList, recherchez et ouvrez Program.cs dans votre éditeur de code.

  2. Remplacez le contenu par le code suivant et enregistrez le fichier.

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

Exécutez l'application

  1. Exécutez la commande suivante.

    dotnet run
  2. Examinez le résultat pour connaître le nombre de compartiments Amazon S3 que vous possédez, le cas échéant, et leurs noms.

  3. Choisissez un nom pour un nouveau compartiment Amazon S3. Utilisez « dotnet-quicktour-s 3-1-cross- » comme base et ajoutez-y quelque chose d'unique, comme un GUID ou votre nom. Assurez-vous de suivre les règles relatives aux noms de compartiments, telles que décrites dans la section Règles relatives à la dénomination des compartiments dans le guide de l'utilisateur Amazon S3.

  4. Exécutez la commande suivante en remplaçant BUCKET-NAME par le nom du compartiment que vous avez choisi.

    dotnet run BUCKET-NAME
  5. Examinez le résultat pour voir le nouveau compartiment créé.

Nettoyage

Au cours de ce didacticiel, vous avez créé des ressources que vous pouvez choisir de nettoyer pour le moment.

  • Si vous ne souhaitez pas conserver le compartiment créé par l'application lors d'une étape précédente, supprimez-le à l'aide de la console Amazon S3 à l'adresse https://console.aws.amazon.com/s3/.

  • Si vous ne souhaitez pas conserver votre projet .NET, supprimez le dossier S3CreateAndList de votre environnement de développement.

Étapes suivantes

Retournez au menu de visite rapide ou allez directement à la fin de cette visite rapide.