有几种方法可以解决这个问题:
您可以在 API 网关后面编写一个 lambda 函数,您可以调用该函数来为您提供预签名的 URL 以在 S3 上发布。此 URL 将允许拥有此 URL 的任何人一次上传到 S3。当用户准备好提交文本编辑器时,您只需使用预签名 URL 将附件发布到 S3 即可。
IAmazonS3 client;
client = new AmazonS3Client(Amazon.RegionEndpoint.USEast1);
// Generate a pre-signed URL.
GetPreSignedUrlRequest request = new GetPreSignedUrlRequest
{
BucketName = bucketName,
Key = objectKey,
Verb = HttpVerb.PUT,
Expires = DateTime.Now.AddMinutes(5)
};
string url = null;
url = s3Client.GetPreSignedURL(request);
// Upload a file using the pre-signed URL.
HttpWebRequest httpRequest = WebRequest.Create(url) as HttpWebRequest;
httpRequest.Method = "PUT";
using (Stream dataStream = httpRequest.GetRequestStream())
{
// Upload object.
}
HttpWebResponse response = httpRequest.GetResponse() as HttpWebResponse;
Run Code Online (Sandbox Code Playgroud)
您可以在AWS S3s 文档中找到更多有关通过用 Java、C#、Ruby 等编写的 Lambda 获取预签名 URL 的示例。
要从 Reactjs 应用程序上传到预签名 URL,您可以在这篇 Stackoverflow 帖子中找到一些很棒的示例。
您可以将所有待处理的镜像移至生命周期配置为在特定时间段内删除对象的存储桶。然后,当提交帖子时,您可以将对象从临时存储桶移动到更永久的存储桶。有关S3 对象过期的更多信息可以在他们的文档中找到。
归档时间: |
|
查看次数: |
4169 次 |
最近记录: |