Berbagi objek dengan menggunakan presigned URLs - Amazon S3 on Outposts

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

Berbagi objek dengan menggunakan presigned URLs

Untuk memberikan akses terbatas waktu ke objek yang disimpan secara lokal di Outpost tanpa memperbarui kebijakan bucket, Anda dapat menggunakan URL yang telah ditetapkan sebelumnya. Dengan presigned URLs, Anda sebagai pemilik bucket dapat berbagi objek dengan individu di virtual private cloud (VPC) Anda atau memberi mereka kemampuan untuk mengunggah atau menghapus objek.

Saat Anda membuat URL presigned menggunakan AWS SDKs atau AWS Command Line Interface (AWS CLI), Anda mengaitkan URL dengan tindakan tertentu. Anda juga memberikan akses terbatas waktu ke URL yang telah ditetapkan sebelumnya dengan memilih waktu kedaluwarsa kustom yang bisa serendah 1 detik dan setinggi 7 hari. Saat Anda membagikan URL yang telah ditandatangani, individu di VPC dapat melakukan tindakan yang disertakan dalam URL seolah-olah mereka adalah pengguna yang memublikasikan sendiri. Ketika URL mencapai waktu kedaluwarsa, URL kedaluwarsa dan tidak lagi berfungsi.

Saat Anda membuat sebuah URL yang telah ditandatangani, Anda harus memberikan kredensial keamanan Anda, lalu menentukan berikut ini:

  • Titik akses Amazon Resource Name (ARN) untuk Amazon S3 di bucket Outposts

  • Kunci objek

  • Metode HTTP (GETuntuk mengunduh objek)

  • Tanggal dan waktu kedaluwarsa

Sebuah URL presigned hanya berlaku selama durasi yang telah ditentukan. Artinya, Anda harus memulai tindakan yang diizinkan oleh URL sebelum tanggal dan waktu kedaluwarsa. Anda dapat menggunakan sebuah URL presigned berkali-kali, hingga tanggal dan waktu kedaluwarsa. Jika Anda membuat URL yang telah ditandatangani menggunakan token sementara, maka URL akan kedaluwarsa saat token kedaluwarsa, meskipun jika Anda membuat URL dengan waktu kedaluwarsa yang lebih lama.

Pengguna di virtual private cloud (VPC) yang memiliki akses ke URL presigned dapat mengakses objek. Misalnya, jika Anda memiliki video dalam bucket Anda dan bucket maupun objek tersebut bersifat pribadi, Anda dapat membagikan video dengan orang lain dengan membuat URL presigned. Karena akses URLs hibah yang telah ditetapkan sebelumnya ke bucket S3 on Outposts Anda kepada siapa pun yang memiliki URL, kami sarankan Anda melindunginya dengan tepat. URLs Untuk detail selengkapnya tentang melindungi presigned URLs, lihatPembatasan kemampuan URL yang telah ditandatangani.

Siapa pun yang memiliki kredensial keamanan yang valid dapat membuat sebuah URL yang telah ditandatangani. Akan tetapi, URL presigned harus dibuat oleh seseorang yang memiliki izin untuk melakukan operasi yang menjadi dasar URL presigned. Untuk informasi selengkapnya, lihat Siapa yang dapat membuat URL yang telah ditandatangani.

Anda dapat membuat URL yang telah ditetapkan sebelumnya untuk berbagi objek di bucket S3 di Outposts dengan menggunakan dan file. AWS SDKs AWS CLI Untuk informasi selengkapnya, lihat contoh berikut ini.

Anda dapat menggunakan AWS SDKs untuk menghasilkan URL presigned yang dapat Anda berikan kepada orang lain sehingga mereka dapat mengambil objek.

catatan

Saat Anda menggunakan AWS SDKs untuk membuat URL yang telah ditetapkan sebelumnya, waktu kedaluwarsa maksimum untuk URL yang telah ditetapkan sebelumnya adalah 7 hari dari waktu pembuatan.

Java

Contoh berikut menampilkan pembuatan URL presigned yang dapat Anda berikan kepada orang lain sehingga mereka dapat mengambil objek dari bucket S3 di Outposts. Untuk informasi selengkapnya, lihat Menggunakan presigned URLs untuk S3 di Outposts. Untuk menggunakan contoh ini, ganti user input placeholdersdengan informasi Anda sendiri.

import com.amazonaws.AmazonServiceException; import com.amazonaws.HttpMethod; 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.GeneratePresignedUrlRequest; import java.io.IOException; import java.net.URL; import java.time.Instant; public class GeneratePresignedURL { public static void main(String[] args) throws IOException { Regions clientRegion = Regions.DEFAULT_REGION; String accessPointArn = "*** access point ARN ***"; String objectKey = "*** object key ***"; try { AmazonS3 s3Client = AmazonS3ClientBuilder.standard() .withRegion(clientRegion) .withCredentials(new ProfileCredentialsProvider()) .build(); // Set the presigned URL to expire after one hour. java.util.Date expiration = new java.util.Date(); long expTimeMillis = Instant.now().toEpochMilli(); expTimeMillis += 1000 * 60 * 60; expiration.setTime(expTimeMillis); // Generate the presigned URL. System.out.println("Generating pre-signed URL."); GeneratePresignedUrlRequest generatePresignedUrlRequest = new GeneratePresignedUrlRequest(accessPointArn, objectKey) .withMethod(HttpMethod.GET) .withExpiration(expiration); URL url = s3Client.generatePresignedUrl(generatePresignedUrlRequest); System.out.println("Pre-Signed URL: " + url.toString()); } 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

Contoh berikut menampilkan pembuatan URL presigned yang dapat Anda berikan kepada orang lain sehingga mereka dapat mengambil objek dari bucket S3 di Outposts. Untuk informasi selengkapnya, lihat Menggunakan presigned URLs untuk S3 di Outposts. Untuk menggunakan contoh ini, ganti user input placeholdersdengan informasi Anda sendiri.

using Amazon; using Amazon.S3; using Amazon.S3.Model; using System; namespace Amazon.DocSamples.S3 { class GenPresignedURLTest { private const string accessPointArn = "*** access point ARN ***"; private const string objectKey = "*** object key ***"; // Specify how long the presigned URL lasts, in hours. private const double timeoutDuration = 12; // Specify your bucket Region (an example Region is shown). private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2; private static IAmazonS3 s3Client; public static void Main() { s3Client = new AmazonS3Client(bucketRegion); string urlString = GeneratePreSignedURL(timeoutDuration); } static string GeneratePreSignedURL(double duration) { string urlString = ""; try { GetPreSignedUrlRequest request1 = new GetPreSignedUrlRequest { BucketName = accessPointArn, Key = objectKey, Expires = DateTime.UtcNow.AddHours(duration) }; urlString = s3Client.GetPreSignedURL(request1); } 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); } return urlString; } } }
Python

Contoh berikut menampilkan pembuatan URL presigned untuk berbagi objek dengan menggunakan SDK untuk Python (Boto3). Sebagai contoh, gunakan klien Boto3 dan generate_presigned_url fungsi untuk menghasilkan URL presigned yang memungkinkan Anda untuk GET objek.

import boto3 url = boto3.client('s3').generate_presigned_url( ClientMethod='get_object', Params={'Bucket': 'ACCESS_POINT_ARN', 'Key': 'OBJECT_KEY'}, ExpiresIn=3600)

Untuk informasi lebih lanjut tentang penggunaan SDK untuk Python (Boto3) untuk menghasilkan URL yang telah ditandatangani sebelumnya, lihat Python di Referensi API AWS SDK for Python (Boto) .

AWS CLI Perintah contoh berikut menghasilkan URL presigned untuk bucket S3 pada Outposts. Untuk menggunakan contoh ini, ganti user input placeholders dengan informasi Anda sendiri.

catatan

Saat Anda menggunakan AWS CLI untuk membuat URL yang telah ditetapkan sebelumnya, waktu kedaluwarsa maksimum untuk URL yang telah ditetapkan sebelumnya adalah 7 hari dari waktu pembuatan.

aws s3 presign s3://arn:aws:s3-outposts:us-east-1:111122223333:outpost/op-01ac5d28a6a232904/accesspoint/example-outpost-access-point/mydoc.txt --expires-in 604800

Untuk informasi selengkapnya, lihat presign dalam Referensi AWS CLI Perintah.