是否可以请求 AWS S3 下载文件?
Is it possible to request AWS S3 to download a file?
目前我使用 C# 应用程序从已知 URL 下载图片并将其上传到 AWS S3 服务器。
using (WebClient c = new WebClient())
{
var data = c.DownloadData(ad.PhotoUrl);
var s3 = new AmazonS3Client(RegionEndpoint.EUWest1);
using (var memoryStream = new MemoryStream(data))
{
using (var yourBitmap = new Bitmap(memoryStream))
{
yourBitmap.Save(memoryStream, ImageFormat.Jpeg);
var titledRequest = new PutObjectRequest
{
CannedACL = S3CannedACL.PublicRead,
InputStream = memoryStream,
BucketName = myBucket,
Key = keyName
};
s3.PutObject(titledRequest);
}
}
}
它工作正常,但我想避免这种方法,我有一个持续的巨大图像流要存储/删除,所以它会占用我的带宽。
是否可以绕过 "download" 部分?我的意思是,我可以要求 AWS S3 服务器自行下载位于 ad.PhotoUrl
的图像吗? "distant request" 不需要 C#。我只是想知道这是否可行,所以我可以深入了解一下以找到解决方案。
为简单起见,我只想对 AWS S3 说:嘿,你能为我下载并存储这个图像吗?而不是:嘿,这是我刚下载的图片,你能保存吗?
S3 无法执行此操作(因为它实际上只进行文件存储),但您可以通过使用启动下载并将文件推送到 S3 的 Lambda 函数来解决此问题。 Lambda 函数又可以通过 AWS SDK 或 API-gateway HTTP 请求调用。
目前我使用 C# 应用程序从已知 URL 下载图片并将其上传到 AWS S3 服务器。
using (WebClient c = new WebClient())
{
var data = c.DownloadData(ad.PhotoUrl);
var s3 = new AmazonS3Client(RegionEndpoint.EUWest1);
using (var memoryStream = new MemoryStream(data))
{
using (var yourBitmap = new Bitmap(memoryStream))
{
yourBitmap.Save(memoryStream, ImageFormat.Jpeg);
var titledRequest = new PutObjectRequest
{
CannedACL = S3CannedACL.PublicRead,
InputStream = memoryStream,
BucketName = myBucket,
Key = keyName
};
s3.PutObject(titledRequest);
}
}
}
它工作正常,但我想避免这种方法,我有一个持续的巨大图像流要存储/删除,所以它会占用我的带宽。
是否可以绕过 "download" 部分?我的意思是,我可以要求 AWS S3 服务器自行下载位于 ad.PhotoUrl
的图像吗? "distant request" 不需要 C#。我只是想知道这是否可行,所以我可以深入了解一下以找到解决方案。
为简单起见,我只想对 AWS S3 说:嘿,你能为我下载并存储这个图像吗?而不是:嘿,这是我刚下载的图片,你能保存吗?
S3 无法执行此操作(因为它实际上只进行文件存储),但您可以通过使用启动下载并将文件推送到 S3 的 Lambda 函数来解决此问题。 Lambda 函数又可以通过 AWS SDK 或 API-gateway HTTP 请求调用。