j'ai trouvé un script PowerShell pour copier tous les fichiers d'un seau Amazon S3 dans un dossier local sur un de nos serveurs sur site:Copie Amazon S3 Seau à un dossier local à l'aide PowerShell Script
# Your account access key - must have read access to your S3 Bucket
$accessKey = "MyAccessKey"
# Your account secret access key
$secretKey = "MySecretKey"
# The region associated with your bucket e.g. eu-west-1, us-east-1 etc. (see http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html#concepts-regions)
$region = "eu-west-1"
# The name of your S3 Bucket
$bucket = "MyBucket/"
# The folder in your bucket to copy, including trailing slash. Leave blank to copy the entire bucket
$keyPrefix = ""
# The local file path where files should be copied
$localPath = "C:\test\"
$objects = Get-S3Object -BucketName $bucket -KeyPrefix $keyPrefix -AccessKey $accessKey -SecretKey $secretKey -Region $region
foreach($object in $objects) {
$localFileName = $object.Key -replace $keyPrefix, ''
if ($localFileName -ne '') {
$localFilePath = Join-Path $localPath $localFileName
Copy-S3Object -BucketName $bucket -Key $object.Key -LocalFile $localFilePath -AccessKey $accessKey -SecretKey $secretKey -Region $region
}
}
Si je exécuter la première partie de son propre (jusqu'à et y compris la ligne Get-S3Object), puis afficher les objets $ variable, il affiche les détails des fichiers les uns après les autres avec les informations ci-dessous dans PowerShell
ETag : "38763873d83763c3876"
BucketName : MyBucketName
Key : 3287653_32876_to_38763_3876_client.xml
LastModified : 14/10/2016 11:26:51
Owner : Amazon.S3.Model.Owner
Size : 485
StorageClass : Standard
Donc c'est g réussi ise les fichiers du seau ... Cependant, si je lance le script ensemble, je reçois une erreur pour chaque itération de la boucle qui dit:
Copy-S3Object : The specified key does not exist.
At line:5 char:9
+ Copy-S3Object -BucketName $bucket -Key $object.Key -LocalFile ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (Amazon.PowerShe...yS3ObjectCmdlet:CopyS3ObjectCmdlet) [Copy-S3Object]
, InvalidOperationException
+ FullyQualifiedErrorId : Amazon.S3.AmazonS3Exception,Amazon.PowerShell.Cmdlets.S3.CopyS3ObjectCmdlet
Je pense donc qu'il est quelque chose à voir avec la commande ou des variables de la boucle ...
foreach($object in $objects) {
$localFileName = $object.Key -replace $keyPrefix, ''
if ($localFileName -ne '') {
$localFilePath = Join-Path $localPath $localFileName
Copy-S3Object -BucketName $bucket -Key $object.Key -LocalFile $localFilePath -AccessKey $accessKey -SecretKey $secretKey -Region $region
}
}
... mais n'ont pas réussi à comprendre quoi.
Est-ce que quelqu'un a des idées brillantes sur ce que je fais mal s'il vous plaît?