c# - 如何在 .Net Core 中的 AWS S3 中将对象从一个存储桶复制/移动到另一个存储桶
问题描述
最近我已将我的代码从 .NetFramework 迁移到 .NetCore 3.1。在执行此操作时,我陷入了处理MoveFolder功能的地方。
之前的代码如下所示。
public void MoveS3Folder(string sourceBucket, string targetBucket, string sourceFolder, string targetFolder)
{
sourceFolder = sourceFolder.Replace('/', '\\');
targetFolder = targetFolder.Replace('/', '\\');
using (var client = AwsObjectCreator.GetAmzonS3())
{
var source = new S3DirectoryInfo(client, sourceBucket, sourceFolder);
S3DirectoryInfo target = new S3DirectoryInfo(client, targetBucket, targetFolder);
if (!target.Exists)
{
target.Create();
}
try
{
source.MoveTo(target);
}
catch (System.IO.IOException e)
{
if (e.Message.Equals("File already exists", StringComparison.OrdinalIgnoreCase))
{
target = new S3DirectoryInfo(client, targetBucket, targetFolder + "\\" + DateTime.Now.ToString("MM-dd-yyyy hh-mm-ss"));
target.Create();
source.MoveTo(target);
}
}
}
}
因为,早些时候我们使用了具有S3DirectoryInfo类的AWSSDK.S3 Sdk 包,借助它我们已经实现了目标。
现在,我将寻找类似的解决方案 wrt AWSSDKCore.S3。
到目前为止我尝试过的事情:
- https://www.derpturkey.com/copy-a-folder-in-amazons3-using-the-c-api/
- https://docs.aws.amazon.com/AmazonS3/latest/dev/CopyingObjectUsingNetSDK.html
我理解了从上述文章中复制数据的概念,但最终没有工作。
我得到的错误- “指定的密钥不存在”</p>
如果有人可以提供帮助,那将是可观的!
解决方案
而不是var client = AwsObjectCreator.GetAmzonS3() ----错误的方式像这样创建客户端
IAmazonS3 client = new AmazonS3Client(awsAccessKey, awsSecretKey, RegionEndpoint.USWest2);
推荐阅读
- unity3d - SpriteRenderer 在第二次设置时不显示精灵
- sql - SQL 连接两个表并检查两个表中的每个值是否存在
- reactjs - 不能在组件中使用道具
- reactjs - Swiper React 鼠标滚轮滚动和键盘控制不起作用
- android - 在 kotlin 新手中设置特定日期和时间的通知
- arrays - 捕获http json主体响应并转换为角度ionic5中的数组
- javascript - 如何在控制台中显示变量不断变化的值?
- flutter - 如何从颤动的不同屏幕访问变量值?
- pointers - 如何将 Rust 结构的引用/指针传递给 C ffi 接口?
- javascript - 使用最接近()比较元素与点击事件的距离