Membuat permintaan menggunakan Akun AWS atau kredensial pengguna IAM - Amazon Simple Storage Service

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

Membuat permintaan menggunakan Akun AWS atau kredensial pengguna IAM

Anda dapat menggunakan Akun AWS atau kredensial keamanan pengguna IAM Anda untuk mengirim permintaan terautentikasi ke Amazon S3. Bagian ini memberikan contoh cara mengirim permintaan terautentikasi menggunakan AWS SDK for Java, AWS SDK for .NET, dan AWS SDK for PHP. Untuk daftar AWS SDK yang tersedia, lihat Sampel Kode dan Pustaka.

Setiap AWS SDK tersebut menggunakan rantai penyedia kredensial khusus SDK untuk menemukan dan menggunakan kredensial dan melakukan tindakan atas nama pemilik kredensial. Kesamaan yang dimiliki semua rantai penyedia kredensial ini adalah semuanya mencari file kredensial AWS lokal Anda.

Untuk informasi selengkapnya, lihat topik di bawah:

Untuk membuat file kredensial AWS lokal

Cara termudah mengonfigurasi kredensial untuk AWS SDK Anda adalah menggunakan file kredensial AWS. Jika Anda menggunakan AWS Command Line Interface (AWS CLI), Anda mungkin sudah memiliki file kredensial AWS yang dikonfigurasi. Jika tidak, gunakan prosedur berikut untuk mengatur file kredensial:

  1. Masuk ke AWS Management Console dan buka konsol IAM di https://console.aws.amazon.com/iam/.

  2. Buat pengguna baru dengan izin yang terbatas pada layanan dan tindakan yang Anda inginkan untuk dapat diakses oleh kode Anda. Untuk informasi selengkapnya tentang membuat pengguna baru, lihat Membuat pengguna IAM (Konsol), dan ikuti instruksi hingga langkah 8.

  3. Pilih Unduh .csv untuk menyimpan salinan lokal kredensial AWS Anda.

  4. Pada komputer Anda, navigasi ke direktori beranda Anda, dan buat direktori .aws. Pada sistem berbasis Unix, seperti Linux atau OS X, ini berada di lokasi berikut:

    ~/.aws

    Di Windows, ini ada di lokasi berikut:

    %HOMEPATH%\.aws
  5. Di direktori .aws, buat file baru bernama credentials.

  6. Buka file .csv kredensial yang Anda unduh dari konsol IAM, dan salin isinya ke file credentials menggunakan format berikut:

    [default] aws_access_key_id = your_access_key_id aws_secret_access_key = your_secret_access_key
  7. Simpan file credentials, dan hapus file .csv yang Anda unduh di langkah 3.

Berkas kredensial bersama Anda sekarang dikonfigurasi di komputer lokal Anda, dan siap digunakan dengan AWS SDK.

Mengirim permintaan terautentikasi menggunakan AWS SDK

Gunakan AWS SDK untuk mengirim permintaan terautentikasi. Untuk informasi selengkapnya tentang mengirim permintaan terautentikasi, lihat Kredensial keamanan AWS atau Autentikasi Pusat Identitas IAM.

Java

Untuk mengirim permintaan terautentikasi ke Amazon S3 menggunakan Akun AWS Anda atau kredensial pengguna IAM Anda, lakukan hal berikut:

  • Gunakan kelas AmazonS3ClientBuilder untuk membuat instans AmazonS3Client.

  • Jalankan salah satu metode AmazonS3Client untuk mengirim permintaan ke Amazon S3. Klien membuat tanda tangan yang diperlukan dari kredensial yang Anda berikan dan menyertakannya dalam permintaan.

Contoh berikut melakukan tugas sebelumnya. Untuk informasi tentang membuat dan menguji sampel kerja, lihat Menguji Contoh Kode Java Amazon S3.

import com.amazonaws.AmazonServiceException; import com.amazonaws.SdkClientException; import com.amazonaws.auth.profile.ProfileCredentialsProvider; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder; import com.amazonaws.services.s3.model.ListObjectsRequest; import com.amazonaws.services.s3.model.ObjectListing; import com.amazonaws.services.s3.model.S3ObjectSummary; import java.io.IOException; import java.util.List; public class MakingRequests { public static void main(String[] args) throws IOException { Regions clientRegion = Regions.DEFAULT_REGION; String bucketName = "*** Bucket name ***"; try { AmazonS3 s3Client = AmazonS3ClientBuilder.standard() .withCredentials(new ProfileCredentialsProvider()) .withRegion(clientRegion) .build(); // Get a list of objects in the bucket, two at a time, and // print the name and size of each object. ListObjectsRequest listRequest = new ListObjectsRequest().withBucketName(bucketName).withMaxKeys(2); ObjectListing objects = s3Client.listObjects(listRequest); while (true) { List<S3ObjectSummary> summaries = objects.getObjectSummaries(); for (S3ObjectSummary summary : summaries) { System.out.printf("Object \"%s\" retrieved with size %d\n", summary.getKey(), summary.getSize()); } if (objects.isTruncated()) { objects = s3Client.listNextBatchOfObjects(objects); } else { break; } } } catch (AmazonServiceException e) { // The call was transmitted successfully, but Amazon S3 couldn't process // it, so it returned an error response. e.printStackTrace(); } catch (SdkClientException e) { // Amazon S3 couldn't be contacted for a response, or the client // couldn't parse the response from Amazon S3. e.printStackTrace(); } } }
.NET

Untuk mengirim permintaan terautentikasi menggunakan Akun AWS Anda atau kredensial pengguna IAM Anda:

  • Buat instans dari kelas AmazonS3Client.

  • Jalankan salah satu metode AmazonS3Client untuk mengirim permintaan ke Amazon S3. Klien menghasilkan tanda tangan yang diperlukan dari kredensial yang Anda berikan dan menyertakannya dalam permintaan yang dikirim ke Amazon S3.

Untuk informasi selengkapnya, lihat Membuat permintaan menggunakan Akun AWS atau kredensial pengguna IAM.

catatan
  • Anda dapat membuat klien AmazonS3Client tanpa memberikan kredensial keamanan Anda. Permintaan yang dikirim menggunakan klien ini adalah permintaan anonim, tanpa tanda tangan. Amazon S3 menampilkan pesan kesalahan jika Anda mengirim permintaan anonim untuk sumber daya yang tidak tersedia untuk umum.

  • Anda dapat membuat Akun AWS dan membuat pengguna yang diperlukan. Anda juga dapat mengelola kredensial untuk pengguna tersebut. Anda perlu kredensial ini untuk melakukan tugas dalam contoh berikut. Untuk informasi selengkapnya, lihat Mengonfigurasi kredensial AWS di Panduan Developer AWS SDK for .NET.

    Anda kemudian dapat juga mengonfigurasi aplikasi Anda untuk secara aktif mengambil profil dan kredensial, dan kemudian secara eksplisit menggunakan kredensial tersebut saat membuat klien layanan AWS. Untuk informasi selengkapnya, lihat Mengakses kredensial dan profil dalam aplikasi di Panduan Developer AWS SDK for .NET.

Contoh C# berikut menunjukkan cara melakukan tugas sebelumnya. Untuk informasi tentang menjalankan contoh .NET dalam panduan ini dan untuk petunjuk tentang cara menyimpan kredensial Anda dalam file konfigurasi, lihat Menjalankan Contoh Kode Amazon S3 .NET.

using Amazon; using Amazon.S3; using Amazon.S3.Model; using System; using System.Threading.Tasks; namespace Amazon.DocSamples.S3 { class MakeS3RequestTest { private const string bucketName = "*** bucket name ***"; // Specify your bucket region (an example region is shown). private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2; private static IAmazonS3 client; public static void Main() { using (client = new AmazonS3Client(bucketRegion)) { Console.WriteLine("Listing objects stored in a bucket"); ListingObjectsAsync().Wait(); } } static async Task ListingObjectsAsync() { try { ListObjectsRequest request = new ListObjectsRequest { BucketName = bucketName, MaxKeys = 2 }; do { ListObjectsResponse response = await client.ListObjectsAsync(request); // Process the response. foreach (S3Object entry in response.S3Objects) { Console.WriteLine("key = {0} size = {1}", entry.Key, entry.Size); } // If the response is truncated, set the marker to get the next // set of keys. if (response.IsTruncated) { request.Marker = response.NextMarker; } else { request = null; } } while (request != null); } catch (AmazonS3Exception e) { Console.WriteLine("Error encountered on server. Message:'{0}' when writing an object", e.Message); } catch (Exception e) { Console.WriteLine("Unknown encountered on server. Message:'{0}' when writing an object", e.Message); } } } }

Untuk contoh pekerjaan, lihat Gambaran umum objek Amazon S3 dan Gambaran umum bucket. Anda dapat menguji contoh ini menggunakan Akun AWS Anda atau kredensial pengguna IAM Anda.

Misalnya, untuk mencantumkan semua kunci objek di bucket Anda, lihat Membuat daftar kunci objek secara terprogram.

PHP

Bagian ini menjelaskan cara menggunakan kelas dari versi 3 AWS SDK for PHP untuk mengirim permintaan terautentikasi menggunakan Akun AWS Anda atau kredensial pengguna IAM. Topik ini diberikan dengan asumsi bahwa Anda sudah mengikuti instruksi untuk Menggunakan AWS SDK for PHP dan Menjalankan Contoh PHP dan menginstal AWS SDK for PHP dengan benar.

Contoh PHP berikut menunjukkan bagaimana klien mengajukan permintaan menggunakan kredensial keamanan Anda untuk mencantumkan semua bucket untuk akun Anda.

require 'vendor/autoload.php'; use Aws\S3\Exception\S3Exception; use Aws\S3\S3Client; $bucket = '*** Your Bucket Name ***'; $s3 = new S3Client([ 'region' => 'us-east-1', 'version' => 'latest', ]); // Retrieve the list of buckets. $result = $s3->listBuckets(); try { // Retrieve a paginator for listing objects. $objects = $s3->getPaginator('ListObjects', [ 'Bucket' => $bucket ]); echo "Keys retrieved!" . PHP_EOL; // Print the list of objects to the page. foreach ($objects as $object) { echo $object['Key'] . PHP_EOL; } } catch (S3Exception $e) { echo $e->getMessage() . PHP_EOL; }
catatan

Anda dapat membuat klien S3Client tanpa memberikan kredensial keamanan Anda. Permintaan yang dikirim menggunakan klien ini adalah permintaan anonim, tanpa tanda tangan. Amazon S3 menampilkan pesan kesalahan jika Anda mengirim permintaan anonim untuk sumber daya yang tidak tersedia untuk umum. Untuk informasi selengkapnya, lihat Membuat Klien Anonim dalam Dokumentasi AWS SDK for PHP.

Untuk contoh pekerjaan, lihat Gambaran umum objek Amazon S3. Anda dapat menguji contoh ini menggunakan Akun AWS Anda atau kredensial pengguna IAM.

Untuk contoh kunci objek daftar dalam bucket, lihat Membuat daftar kunci objek secara terprogram.

Ruby

Sebelum Anda dapat menggunakan versi 3 AWS SDK for Ruby untuk melakukan panggilan ke Amazon S3, Anda harus mengatur kredensial akses AWS yang digunakan SDK untuk memverifikasi akses Anda ke bucket dan objek Anda. Jika Anda memiliki kredensial bersama yang disiapkan dalam profil kredensial AWS di sistem lokal Anda, SDK versi 3 untuk Ruby dapat menggunakan kredensial tersebut tanpa harus menyatakannya dalam kode Anda. Untuk informasi selengkapnya tentang pengaturan kredensial bersama, lihat Membuat permintaan menggunakan Akun AWS atau kredensial pengguna IAM.

Potongan kode Ruby berikut menggunakan kredensial dalam file kredensial AWS bersama pada komputer lokal guna mengautentikasi permintaan untuk mendapatkan semua nama kunci objek dalam bucket tertentu. Contoh ini melakukan hal-hal berikut:

  1. Membuat instans kelas Aws::S3::Client.

  2. Membuat permintaan ke Amazon S3 dengan menghitung objek dalam bucket menggunakan metode list_objects_v2 dari Aws::S3::Client. Klien menghasilkan nilai tanda tangan yang diperlukan dari kredensial dalam file kredensial AWS di komputer Anda, dan menyertakannya dalam permintaan yang dikirim ke Amazon S3.

  3. Mencetak susunan nama kunci objek ke terminal.

# Prerequisites: # - An existing Amazon S3 bucket. require "aws-sdk-s3" # @param s3_client [Aws::S3::Client] An initialized Amazon S3 client. # @param bucket_name [String] The bucket's name. # @return [Boolean] true if all operations succeed; otherwise, false. # @example # s3_client = Aws::S3::Client.new(region: 'us-west-2') # exit 1 unless list_bucket_objects?(s3_client, 'doc-example-bucket') def list_bucket_objects?(s3_client, bucket_name) puts "Accessing the bucket named '#{bucket_name}'..." objects = s3_client.list_objects_v2( bucket: bucket_name, max_keys: 50 ) if objects.count.positive? puts "The object keys in this bucket are (first 50 objects):" objects.contents.each do |object| puts object.key end else puts "No objects found in this bucket." end return true rescue StandardError => e puts "Error while accessing the bucket named '#{bucket_name}': #{e.message}" return false end # Example usage: def run_me region = "us-west-2" bucket_name = "BUCKET_NAME" s3_client = Aws::S3::Client.new(region: region) exit 1 unless list_bucket_objects?(s3_client, bucket_name) end run_me if $PROGRAM_NAME == __FILE__

Jika Anda tidak memiliki file kredensial AWS lokal, Anda masih dapat membuat sumber daya Aws::S3::Client dan jalankan kode terhadap bucket dan objek Amazon S3. Permintaan yang dikirim menggunakan SDK versi 3 untuk Ruby bersifat anonim, tanpa tanda tangan default. Amazon S3 menampilkan pesan kesalahan jika Anda mengirim permintaan anonim untuk sumber daya yang tidak tersedia untuk umum.

Anda dapat menggunakan dan memperluas potongan kode sebelumnya untuk SDK untuk aplikasi Ruby, seperti dalam contoh yang lebih kuat berikut.

# Prerequisites: # - An existing Amazon S3 bucket. require "aws-sdk-s3" # @param s3_client [Aws::S3::Client] An initialized Amazon S3 client. # @param bucket_name [String] The bucket's name. # @return [Boolean] true if all operations succeed; otherwise, false. # @example # s3_client = Aws::S3::Client.new(region: 'us-west-2') # exit 1 unless list_bucket_objects?(s3_client, 'doc-example-bucket') def list_bucket_objects?(s3_client, bucket_name) puts "Accessing the bucket named '#{bucket_name}'..." objects = s3_client.list_objects_v2( bucket: bucket_name, max_keys: 50 ) if objects.count.positive? puts "The object keys in this bucket are (first 50 objects):" objects.contents.each do |object| puts object.key end else puts "No objects found in this bucket." end return true rescue StandardError => e puts "Error while accessing the bucket named '#{bucket_name}': #{e.message}" return false end # Example usage: def run_me region = "us-west-2" bucket_name = "BUCKET_NAME" s3_client = Aws::S3::Client.new(region: region) exit 1 unless list_bucket_objects?(s3_client, bucket_name) end run_me if $PROGRAM_NAME == __FILE__
Go

Contoh berikut menggunakan AWS kredensial yang dimuat secara otomatis oleh SDK for Go dari file kredensial bersama.

package main import ( "context" "fmt" "github.com/aws/aws-sdk-go-v2/config" "github.com/aws/aws-sdk-go-v2/service/s3" ) // main uses the AWS SDK for Go V2 to create an Amazon Simple Storage Service // (Amazon S3) client and list up to 10 buckets in your account. // This example uses the default settings specified in your shared credentials // and config files. func main() { sdkConfig, err := config.LoadDefaultConfig(context.TODO()) if err != nil { fmt.Println("Couldn't load default configuration. Have you set up your AWS account?") fmt.Println(err) return } s3Client := s3.NewFromConfig(sdkConfig) count := 10 fmt.Printf("Let's list up to %v buckets for your account.\n", count) result, err := s3Client.ListBuckets(context.TODO(), &s3.ListBucketsInput{}) if err != nil { fmt.Printf("Couldn't list buckets for your account. Here's why: %v\n", err) return } if len(result.Buckets) == 0 { fmt.Println("You don't have any buckets!") } else { if count > len(result.Buckets) { count = len(result.Buckets) } for _, bucket := range result.Buckets[:count] { fmt.Printf("\t%v\n", *bucket.Name) } } }

Sumber daya terkait