هنگامی که احتیاج دارید به کسی دسترسی موقت به یک آبجکت بدهید اما نمی‌خواهید credential را در اختیارش بگذارید، میتوانید ریکوست را با زمان محدودی presign کنید.

Presign کردن برای انواع ریکوست های مختلف از جمله گرفتن آبجکت، آپلود آبجکت و … ممکن است. در ادامه چند مورد از این ریکوست ها و نحوه ی ساین کردن آنها با ابزارهای مختلف مثال زده می‌شود.

همچنین جستجوی نوع ریکوستی که میخواهید بزنید (مثلا CopyPartUpload) به همراه کلیدواژه ی presigned-url و sdk/client مورد استفاده در گوگل معمولا شما را به جواب می‌رساند.

Get Object using Presigned URL

توجه: پارامترهای Expiration به ثانیه هستن.

Using boto3 (sdk for python)

import boto3
 
s3_client = boto3.client(
       's3',
       endpoint_url='http://s3.thr1.sotoon.ir',
       aws_access_key_id='',
       aws_secret_access_key='',
)
 
    try:
        response = s3_client.generate_presigned_url('get_object',
            Params={'Bucket': '‌BUCKET_NAME',
            'Key': 'OBJECT_KEY'},
            ExpiresIn=3600)

Using aws-sdk for javascript

const AWS = require('aws-sdk');
 
var s3 = new AWS.S3({endpoint: 's3.thr1.sotoon.ir', signatureVersion: 'v2'});
var req = s3.getObject({Bucket: '‌BUCKET_NAME', Key: 'OBJECT_KEY'});
console.log(req.presign());

Using AWS CLI

aws s3 --endpoint-url=http://KISE_ENDPOINT/ presign s3://BUCKET_NAME_HERE/test1.png --expires-in EXPIRATION_TIME

Upload Objects Using Presigned URL

MultipartUpload using Presigned URL

پری‌ساین کردن یک درخواست پشت CDN

اگر استوریج یا باکتی که میخواهید ریکوست بهش رو ساین کنید پشت CDN قرار دارد ، باید کامند ساین رو با endpoint آپ استریم دامین تون که تو پنل CDN ست کردید و استوریج ستون هست (مثلا s3.thr1.sotoon.ir) ساین کنید و بعدش دامنه رو توی presigned-url خروجی تغییر بدید به دامنه ی خودتون (مثلا example.com)

مثلا اگر خروجی ساین به این شکل بود: https://my-bucket.s3.thr1.sotoon.ir/my-object?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=06eeb…&X-Amz-Date=20240515T191255Z&X-Amz-Expires=3600&X-Amz-Signature=fda69…&X-Amz-SignedHeaders=host

لازم است آن را به شکل زیر تغییر دهید:

https://my-bucket.example.com/my-object?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=06eeb…&X-Amz-Date=20240515T191255Z&X-Amz-Expires=3600&X-Amz-Signature=fda69…&X-Amz-SignedHeaders=host