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 peran IAM pada instans Amazon EC2.

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 Amazon EC2. Anda harus mendistribusikan, menyimpan, dan memutar kredensi ini dengan aman, tetapi juga membuatnya dapat diakses oleh aplikasi.

Dengan peran IAM, Anda dapat mengelola kredensil ini secara efektif. Anda membuat peran IAM dan mengonfigurasinya dengan izin yang diperlukan aplikasi, lalu melampirkan peran itu ke instans EC2. Baca selengkapnya tentang manfaat menggunakan peran IAM di Panduan Pengguna Amazon EC2 atau Panduan Pengguna Amazon EC2. Lihat juga informasi tentang Peran IAM di Panduan Pengguna IAM.

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 peran IAM dan berada dalam metadata instans 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 instans Amazon EC2 dengan peran IAM terlampir, dan kemudian melihat aplikasi pada instance menggunakan izin peran IAM.

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 kredensil, lihat. Konfigurasikan otentikasi SDK dengan AWS

Buat proyek .NET Core dengan kode berikut. Kemudian uji aplikasi pada mesin pengembangan Anda.

catatan

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

Namun, Anda juga dapat memilih untuk tidak menginstal .NET Core 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 kredensi yang Anda gunakan pada mesin pengembangan Anda untuk melihat bagaimana aplikasi merespons. (Tapi pastikan untuk mengembalikan kredensialnya saat Anda selesai.)

Membuat peran IAM

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

  1. Buka konsol IAM.

  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 instans EC2 Anda.

Luncurkan instans EC2 dan lampirkan peran IAM

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

  • Menggunakan konsol EC2

    Ikuti petunjuk untuk meluncurkan instans di Panduan Pengguna Amazon EC2 atau Panduan Pengguna Amazon EC2.

    Saat Anda melalui wizard, Anda setidaknya harus mengunjungi halaman Konfigurasi Detail Instance sehingga Anda dapat memilih peran IAM yang Anda buat sebelumnya.

Untuk meluncurkan instans EC2 yang memiliki peran IAM terpasang, konfigurasi pengguna IAM harus menyertakan izin tertentu. Untuk informasi selengkapnya tentang izin yang diperlukan, lihat Panduan Pengguna Amazon EC2 atau Panduan Pengguna Amazon EC2.

Connect ke instans EC2

Connect ke instans EC2 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, file PEM.

Anda dapat melakukannya dengan mengikuti prosedur koneksi di Panduan Pengguna Amazon EC2 atau Panduan Pengguna Amazon EC2. 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 Menyambungkan ke Instans Amazon EC2 di AWS Toolkit for Visual Studio Panduan Pengguna.

Jalankan aplikasi sampel pada instans EC2

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

    File mana yang Anda transfer tergantung pada bagaimana Anda membangun aplikasi dan apakah instans Anda telah menginstal .NET Core Runtime. Untuk informasi tentang cara mentransfer file ke instans, lihat Panduan Pengguna Amazon EC2 atau Panduan Pengguna Amazon EC2.

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

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

    1. Buka konsol Amazon EC2.

    2. Pilih instance dan lepaskan peran IAM melalui Tindakan, Pengaturan Instans, Lampirkan/Ganti Peran IAM.

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

Bersihkan

Ketika Anda selesai dengan tutorial ini, dan jika Anda tidak lagi menginginkan instans EC2 yang Anda buat, pastikan untuk menghentikan instance untuk menghindari biaya yang tidak diinginkan. Anda dapat melakukannya di konsol Amazon EC2 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 peran IAM, keypair EC2 dan file PEM, grup keamanan, dll.