我可以复制一个"文件夹"在使用PowerShell的一个命令中的s3?

时间:2017-12-15 12:37:24

标签: powershell amazon-web-services amazon-s3

我有一个s3存储桶,其前缀为productionWrite-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; } } 命令似乎不接受前缀和目的地前缀,例如。

最好的方法是什么?

2 个答案:

答案 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
}