最近更新时间:2021-10-29
本文介绍如何使用预签名。
通过使用Get或PUT操作获取存储桶的预签名URL。通过预签名URL,您可以向没有权限直接在您的账户中运行操作的用户授予临时访问权限。预签名URL用您的凭据进行签名,任何用户都可以使用。
使用签名URL进行临时授权的方法如下:
生成签名URL。
您可以将生成的签名URL提供给访客进行临时访问。生成签名URL时,您可以指定URL的过期时间,来限制访客的访问时长。
生成以GET方法访问的签名URL。
以下代码用于生成以GET方法访问的签名URL:
using System; using Amazon.S3; using Amazon.S3.Model;
namespace GetPreSignedUrl { class Program { static void Main(string[] args) { var Ak = ""; var Sk = ""; var endpoint = "http://s3.test.com"; var duration = 5; // 临时url生效时间,单位: 分钟 Var bucketName = ""; // 桶名称 Var objectName = ""; // 对象名称 AmazonS3Client serviceClient = new AmazonS3Client(Ak,Sk, new AmazonS3Config{ ServiceURL = endpoint });
try { GetPreSignedUrlRequest request = new GetPreSignedUrlRequest { BucketName = bucketName, Key = objectName, Expires = DateTime.UtcNow.AddMinutes(duration) // 生效时间 };
// Get path for request string path = serviceClient.GetPreSignedURL(request); Console.WriteLine(path);
} catch (AmazonS3Exception e) { Console.WriteLine(e.Data); throw; } catch (Exception e) { Console.WriteLine(e); throw; } } } } |
参数取值说明如下。
参数 | 说明 |
AK和SK | 可以从“紫光云控制台 > 用户中心 > 安全信息管理 ”处获取。 |
endpoint | 请填写需要访问区域的Endpoint地址。 |
duration | 临时URL的生效时间,单位为分钟。请按照需求填写。 |
bucketName | 请填写桶名称。 |
objectName | 请填写本次访问的对象。 |