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 kredentif pengguna IAM
Anda dapat menggunakan kredentif keamanan pengguna Akun AWS atau IAM untuk mengirim permintaan yang diautentikasi ke Amazon S3. Bagian ini memberikan contoh bagaimana Anda dapat mengirim permintaan yang diautentikasi menggunakan AWS SDK untuk Java, AWS SDK untuk .NET, dan AWS SDK untuk PHP. Untuk daftar SDK yang tersedia, AWS buka Kode Sampel dan Perpustakaan.
Masing-masing AWS SDK ini menggunakan rantai penyedia SDK-specific kredenSIAL untuk menemukan dan menggunakan kredenSIAL serta melakukan tindakan atas nama pemilik kredenSIAL. Kesamaan semua rantai penyedia kredenSIAL ini adalah bahwa mereka semua mencari file AWS kredenSIAL lokal Anda.
Untuk informasi selengkapnya, lihat topik di bawah:
Untuk membuat lokal AWS file kredenSIAL
Cara termudah untuk mengonfigurasi kredenSIAL untuk AWS SDK Anda adalah dengan menggunakan file AWS kredenSIAL. Jika Anda menggunakan AWS Command Line Interface (AWS CLI), Anda mungkin sudah memiliki file AWS kredenSIAL lokal yang dikonfigurasi. Jika tidak, gunakan prosedur berikut untuk mengatur file kredensial:
Masuk ke Konsol Manajemen AWS dan buka konsol IAM di https://console.aws.amazon.com/iam/.
-
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.
-
Pilih Unduh .csv untuk menyimpan salinan lokal kredensial AWS
Anda.
-
Pada komputer Anda, navigasi ke direktori beranda Anda, dan buat direktori .aws. Pada Unix-based sistem, seperti Linux atau OS X, ini ada di lokasi berikut:
~/.aws
Di Windows, ini ada di lokasi berikut:
%HOMEPATH%\.aws
-
Di direktori .aws, buat file baru bernama credentials.
-
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
-
Simpan file credentials, dan hapus file .csv yang Anda unduh di langkah 3.
File kredensional bersama Anda sekarang dikonfigurasi di komputer lokal Anda, dan siap digunakan dengan AWS SDK.
Mengirim permintaan yang diautentikasi menggunakan AWS SDK
Gunakan AWS SDK untuk mengirim permintaan yang diautentikasi. Untuk informasi selengkapnya tentang mengirim permintaan terautentikasi, lihat AWS Kredensial keamanan atau Autentikasi Pusat Identitas IAM.
- Java
-
Untuk informasi tentang mengotentikasi permintaan menggunakan AWS SDK untuk Java, lihat Menggunakan file konfigurasi dan kredenSIAL bersama untuk mengonfigurasi AWS SDK dan alat secara global serta Oten tikasi dan akses menggunakan AWS SDK dan alat di Panduan Referensi AWS SDK dan Alat.
- .NET
-
Untuk mengirim permintaan yang diautentikasi menggunakan kredensi pengguna Anda Akun AWS atau IAM:
-
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 kredensi pengguna AWS akun atau IAM >.
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 SDK untuk .NET .
Anda kemudian juga dapat mengonfigurasi aplikasi Anda untuk secara aktif mengambil profil dan kredenSIAL, dan kemudian secara eksplisit menggunakan kredenSIAL tersebut saat membuat klien AWS layanan. Untuk informasi selengkapnya, lihat Mengakses kredensial dan profil dalam aplikasi di Panduan Developer SDK untuk .NET .
Contoh C# berikut menunjukkan cara melakukan tugas sebelumnya. Untuk informasi tentang menyiapkan dan menjalankan contoh kode, lihat Mem ulai dengan AWS SDK untuk.NET di Panduan Pengembang AWS SDK untuk.NET.
contoh
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);
}
}
}
}
- PHP
-
Bagian ini menjelaskan cara menggunakan kelas dari versi 3 AWS SDK untuk PHP untuk mengirim permintaan yang diautentikasi menggunakan kredentif pengguna Anda Akun AWS atau IAM. Untuk informasi selengkapnya tentang AWS SDK untuk Ruby API, buka AWS SDK untuk Ruby - Versi 2.
Contoh PHP berikut menunjukkan bagaimana klien mengajukan permintaan menggunakan kredensial keamanan Anda untuk mencantumkan semua bucket untuk akun Anda.
contoh
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;
}
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 untuk PHP.
- Ruby
-
Sebelum Anda dapat menggunakan versi 3 AWS SDK untuk Ruby untuk melakukan panggilan ke Amazon S3, Anda harus mengatur kredentif AWS
akses yang digunakan SDK untuk memverifikasi akses Anda ke bucket dan objek. Jika Anda telah menyiapkan kredenSIAL bersama di profil AWS kredenSIAL di sistem lokal Anda, versi 3 SDK untuk Ruby dapat menggunakan kredenSIAL tersebut tanpa Anda harus mendeklarasikannya dalam kode Anda. Untuk informasi selengkapnya tentang menyiapkan kredenSIAL bersama, lihat Membuat permintaan menggunakan kredenSIAL pengguna AWS akun atau IAM.
Cuplikan kode Ruby berikut menggunakan kredenSIAL dalam file AWS kredenSIAL bersama di komputer lokal untuk mengotentikasi permintaan untuk mendapatkan semua nama kunci objek dalam bucket tertentu. Contoh ini melakukan hal-hal berikut:
-
Buat instans dari kelas Aws::S3::Client.
-
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 AWS kredenSIAL di komputer Anda, dan memasukkannya ke dalam permintaan yang dikirimkannya ke Amazon S3.
-
Mencetak susunan nama kunci objek ke terminal.
contoh
# 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, 'amzn-s3-demo-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
true
rescue StandardError => e
puts "Error while accessing the bucket named '#{bucket_name}': #{e.message}"
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 AWS kredenSIAL lokal, Anda masih dapat membuat Aws::S3::Client sumber daya dan menjalankan 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, 'amzn-s3-demo-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
true
rescue StandardError => e
puts "Error while accessing the bucket named '#{bucket_name}': #{e.message}"
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
Contoh berikut menggunakan AWS kredenSIAL yang dimuat secara otomatis oleh SDK untuk Go dari file kredenSIAL bersama.
package main
import (
"context"
"errors"
"fmt"
"github.com/aws/aws-sdk-go-v2/config"
"github.com/aws/aws-sdk-go-v2/service/s3"
"github.com/aws/smithy-go"
)
// 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() {
ctx := context.Background()
sdkConfig, err := config.LoadDefaultConfig(ctx)
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(ctx, &s3.ListBucketsInput{})
if err != nil {
var ae smithy.APIError
if errors.As(err, &ae) && ae.ErrorCode() == "AccessDenied" {
fmt.Println("You don't have permission to list buckets for this account.")
} else {
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)
}
}
}