我有一个s3存储桶,其前缀为production
和Write-S3Object -BucketName $bucketName -Folder $myfolder -Keyprefix $Keyprefix
。在QA之后,我想将所有对象从舞台复制到制作。我试图通过一个命令了解如何做到这一点。
我的Google搜索仅显示以下内容,即复制单个对象:
http://docs.aws.amazon.com/powershell/latest/reference/items/Copy-S3Object.html
我能够以下列方式一次上传文件夹
Copy-S3Object
但 private bool CreateFolderPath(string parentPath, string pathToCreate)
{
try
{
string[] folders = pathToCreate.Split(new string[] { "\\" }, StringSplitOptions.RemoveEmptyEntries);
foreach (string folderName in folders)
{
var fileTargetContentFolderTask = Content.LoadAsync(parentPath+"/"+folderName);
fileTargetContentFolderTask.Wait();
if (fileTargetContentFolderTask.Result == null)
{
var folder = Content.CreateNew(parentPath, ConfigurationManager.AppSettings["FolderType"], folderName);
var task = folder.SaveAsync();
task.Wait();
}
parentPath += "/" + folderName;
}
return true;
}
catch
{
return false;
}
}
命令似乎不接受前缀和目的地前缀,例如。
最好的方法是什么?
答案 0 :(得分:1)
相信您只能通过AWS命令行界面执行此操作,请参阅下面的代码段作为示例。
JsonConvert.DeserializeObject<DataSet>(json)
答案 1 :(得分:0)
好的,看起来AWS CLI在许多情况下都是一个很好的解决方案,但我实际上已经限制在这里使用Powershell。
这是我的解决方案:
$objects = Get-S3Object -BucketName $bucketName -KeyPrefix $stageKeyPrefix
foreach($object in $objects) {
$prodKey = $object.Key -replace $stageKeyPrefix, $prodKeyPrefix
Copy-S3Object -BucketName $bucket -Key $object.Key -DestinationKey $prodKey
}