Memberikan akses dengan menggunakan peran IAM - AWS SDK for .NET

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Memberikan akses dengan menggunakan peran IAM

Tutorial ini menunjukkan cara menggunakan AWS SDK for .NET untuk mengaktifkan IAM peran pada EC2 instance Amazon.

Gambaran Umum

Semua permintaan AWS harus ditandatangani secara kriptografi dengan menggunakan kredensil yang dikeluarkan oleh. AWS Oleh karena itu, Anda memerlukan strategi untuk mengelola kredensional untuk aplikasi yang berjalan di instans AmazonEC2. Anda harus mendistribusikan, menyimpan, dan memutar kredensil ini dengan aman, tetapi juga membuatnya dapat diakses oleh aplikasi.

Dengan IAM peran, Anda dapat mengelola kredensil ini secara efektif. Anda membuat IAM peran dan mengonfigurasinya dengan izin yang diperlukan aplikasi, lalu melampirkan peran tersebut ke sebuah EC2 instance. Untuk membaca selengkapnya tentang manfaat menggunakan IAM peran, lihat IAMperan untuk Amazon EC2 di Panduan EC2 Pengguna Amazon. Lihat juga informasi tentang IAMPeran di Panduan IAM Pengguna.

Untuk aplikasi yang dibangun menggunakan AWS SDK for .NET, ketika aplikasi membangun objek klien untuk AWS layanan, objek mencari kredensil dari beberapa sumber potensial. Urutan penelusuran ditampilkan diResolusi kredensi dan profil.

Jika objek klien tidak menemukan kredensil dari sumber lain, ia mengambil kredensil sementara yang memiliki izin yang sama dengan yang telah dikonfigurasi ke dalam IAM peran dan berada dalam metadata instance. EC2 Kredensial ini digunakan untuk melakukan panggilan ke AWS dari objek klien.

Tentang tutorial ini

Saat Anda mengikuti tutorial ini, Anda menggunakan AWS SDK for .NET (dan alat lainnya) untuk meluncurkan EC2 instance Amazon dengan IAM peran yang dilampirkan, dan kemudian melihat aplikasi pada instance menggunakan izin IAM peran tersebut.

Buat contoh aplikasi Amazon S3

Contoh aplikasi ini mengambil objek dari Amazon S3. Untuk menjalankan aplikasi, Anda memerlukan yang berikut ini:

  • Bucket Amazon S3 yang berisi file teks.

  • AWS kredensi pada mesin pengembangan Anda yang memungkinkan Anda mengakses bucket.

Untuk informasi tentang membuat bucket Amazon S3 dan mengunggah objek, lihat Panduan Pengguna Layanan Penyimpanan Sederhana Amazon. Untuk informasi tentang AWS kredensional, lihat. Konfigurasikan otentikasi SDK dengan AWS

Buat a. NETProyek inti dengan kode berikut. Kemudian uji aplikasi pada mesin pengembangan Anda.

catatan

Pada mesin pengembangan Anda, NETCore Runtime diinstal, yang memungkinkan Anda menjalankan aplikasi tanpa mempublikasikannya. Ketika Anda membuat EC2 instance nanti dalam tutorial ini, Anda dapat memilih untuk menginstal. NETCore Runtime pada instance. Ini memberi Anda pengalaman serupa dan transfer file yang lebih kecil.

Namun, Anda juga dapat memilih untuk tidak menginstal. NETCore Runtime pada instance. Jika Anda memilih tindakan ini, Anda harus mempublikasikan aplikasi sehingga semua dependensi disertakan saat Anda mentransfernya ke instance.

using System; using System.Collections.Generic; using System.IO; using System.Threading.Tasks; using Amazon.S3; using Amazon.S3.Model; namespace S3GetTextItem { // = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = // Class to retrieve a text file from an S3 bucket and write it to a local file class Program { static async Task Main(string[] args) { // Parse the command line and show help if necessary var parsedArgs = CommandLine.Parse(args); if(parsedArgs.Count == 0) { PrintHelp(); return; } // Get the application arguments from the parsed list string bucket = CommandLine.GetArgument(parsedArgs, null, "-b", "--bucket-name"); string item = CommandLine.GetArgument(parsedArgs, null, "-t", "--text-object"); string outFile = CommandLine.GetArgument(parsedArgs, null, "-o", "--output-filename"); if( string.IsNullOrEmpty(bucket) || string.IsNullOrEmpty(item) || string.IsNullOrEmpty(outFile)) CommandLine.ErrorExit( "\nOne or more of the required arguments is missing or incorrect." + "\nRun the command with no arguments to see help."); // Create the S3 client object and get the file object from the bucket. var response = await GetObject(new AmazonS3Client(), bucket, item); // Write the contents of the file object to the given output file. var reader = new StreamReader(response.ResponseStream); string contents = reader.ReadToEnd(); using (var s = new FileStream(outFile, FileMode.Create)) using (var writer = new StreamWriter(s)) writer.WriteLine(contents); } // // Method to get an object from an S3 bucket. private static async Task<GetObjectResponse> GetObject( IAmazonS3 s3Client, string bucket, string item) { Console.WriteLine($"Retrieving {item} from bucket {bucket}."); return await s3Client.GetObjectAsync(bucket, item); } // // Command-line help private static void PrintHelp() { Console.WriteLine( "\nUsage: S3GetTextItem -b <bucket-name> -t <text-object> -o <output-filename>" + "\n -b, --bucket-name: The name of the S3 bucket." + "\n -t, --text-object: The name of the text object in the bucket." + "\n -o, --output-filename: The name of the file to write the text to."); } } // = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = // Class that represents a command line on the console or terminal. // (This is the same for all examples. When you have seen it once, you can ignore it.) static class CommandLine { // // Method to parse a command line of the form: "--key value" or "-k value". // // Parameters: // - args: The command-line arguments passed into the application by the system. // // Returns: // A Dictionary with string Keys and Values. // // If a key is found without a matching value, Dictionary.Value is set to the key // (including the dashes). // If a value is found without a matching key, Dictionary.Key is set to "--NoKeyN", // where "N" represents sequential numbers. public static Dictionary<string,string> Parse(string[] args) { var parsedArgs = new Dictionary<string,string>(); int i = 0, n = 0; while(i < args.Length) { // If the first argument in this iteration starts with a dash it's an option. if(args[i].StartsWith("-")) { var key = args[i++]; var value = key; // Check to see if there's a value that goes with this option? if((i < args.Length) && (!args[i].StartsWith("-"))) value = args[i++]; parsedArgs.Add(key, value); } // If the first argument in this iteration doesn't start with a dash, it's a value else { parsedArgs.Add("--NoKey" + n.ToString(), args[i++]); n++; } } return parsedArgs; } // // Method to get an argument from the parsed command-line arguments // // Parameters: // - parsedArgs: The Dictionary object returned from the Parse() method (shown above). // - defaultValue: The default string to return if the specified key isn't in parsedArgs. // - keys: An array of keys to look for in parsedArgs. public static string GetArgument( Dictionary<string,string> parsedArgs, string defaultReturn, params string[] keys) { string retval = null; foreach(var key in keys) if(parsedArgs.TryGetValue(key, out retval)) break; return retval ?? defaultReturn; } // // Method to exit the application with an error. public static void ErrorExit(string msg, int code=1) { Console.WriteLine("\nError"); Console.WriteLine(msg); Environment.Exit(code); } } }

Jika mau, Anda dapat menghapus sementara kredensil yang Anda gunakan pada mesin pengembangan Anda untuk melihat bagaimana aplikasi merespons. (Tapi pastikan untuk mengembalikan kredensialnya saat Anda selesai.)

Buat IAM peran

Buat IAM peran yang memiliki izin yang sesuai untuk mengakses Amazon S3.

  1. Buka IAMkonsol.

  2. Di panel navigasi, pilih Peran, lalu pilih Buat peran.

  3. Pilih AWS layanan, temukan dan pilih EC2, dan pilih Berikutnya: Izin.

  4. Di bawah Lampirkan kebijakan izin, temukan dan pilih ReadOnlyAccessAmazonS3. Tinjau kebijakan jika Anda mau, lalu pilih Berikutnya: Tag.

  5. Tambahkan tag jika Anda mau dan kemudian pilih Berikutnya: Tinjau.

  6. Ketik nama dan deskripsi untuk peran tersebut, lalu pilih Buat peran. Ingat nama ini karena Anda akan membutuhkannya saat meluncurkan EC2 instance Anda.

Luncurkan EC2 instance dan lampirkan IAM peran

Luncurkan EC2 instance dengan IAM peran yang Anda buat sebelumnya. Anda dapat melakukannya dengan cara-cara berikut.

Untuk meluncurkan EC2 instance yang memiliki IAM peran terlampir, konfigurasi IAM pengguna harus menyertakan izin tertentu. Untuk informasi selengkapnya tentang izin yang diperlukan, lihat Memberikan izin kepada pengguna untuk meneruskan IAM peran ke instans di Panduan EC2 Pengguna Amazon.

Connect ke EC2 instance

Connect ke EC2 instance sehingga Anda dapat mentransfer aplikasi sampel ke sana dan kemudian menjalankan aplikasi. Anda akan memerlukan file yang berisi bagian pribadi dari key pair yang Anda gunakan untuk meluncurkan instance; yaitu, PEM file.

Untuk informasi tentang menghubungkan ke instans, lihat Connect ke instans Linux atau Connect ke instans Windows Anda di Panduan EC2 Pengguna Amazon. Ketika Anda terhubung, lakukan sedemikian rupa sehingga Anda dapat mentransfer file dari mesin pengembangan Anda ke instans Anda.

Jika Anda menggunakan Visual Studio di Windows, Anda juga dapat terhubung ke instance dengan menggunakan Toolkit for Visual Studio. Untuk informasi selengkapnya, lihat Menghubungkan ke EC2 Instans Amazon di Panduan AWS Toolkit for Visual Studio Pengguna.

Jalankan aplikasi sampel pada EC2 instance

  1. Salin file aplikasi dari drive lokal Anda ke instans Anda.

    File mana yang Anda transfer tergantung pada bagaimana Anda membangun aplikasi dan apakah instance Anda memiliki file. NETCore Runtime diinstal. Untuk informasi tentang cara mentransfer file ke instans Anda, lihat Connect ke instans Linux Anda (lihat sub-bagian yang sesuai) atau Mentransfer file ke instance Windows di EC2Panduan Pengguna Amazon.

  2. Mulai aplikasi dan verifikasi bahwa itu berjalan dengan hasil yang sama seperti pada mesin pengembangan Anda.

  3. Verifikasi bahwa aplikasi menggunakan kredenal yang disediakan oleh peran. IAM

    1. Buka EC2konsol Amazon.

    2. Pilih instance dan lepaskan IAM peran melalui Tindakan, Pengaturan Instance, IAMLampirkan/Ganti Peran.

    3. Jalankan aplikasi lagi dan lihat bahwa itu mengembalikan kesalahan otorisasi.

Bersihkan

Ketika Anda selesai dengan tutorial ini, dan jika Anda tidak lagi menginginkan EC2 instance yang Anda buat, pastikan untuk menghentikan instance untuk menghindari biaya yang tidak diinginkan. Anda dapat melakukannya di EC2konsol Amazon atau secara terprogram, seperti yang dijelaskan dalam. Mengakhiri instans Amazon EC2 Jika mau, Anda juga dapat menghapus sumber daya lain yang Anda buat untuk tutorial ini. Ini mungkin termasuk IAM peran, EC2 keypair dan PEM file, grup keamanan, dll.