Get-S3Object -BucketName パイロットを試していますが、サブディレクトリがたくさんあります。
3 に答える
実際のコピーには、代わりにCopy-S3Objectを使用することをお勧めします。Get-S3Object は、S3Object メタデータのコレクションを返します。Get-S3Object を使用して、コピーするオブジェクトを分離し、そこから重要な情報 (キー) を Copy-S3Object に渡します。
パラメータを使用してKeyPrefix
、結果を特定のサブディレクトリに絞り込むことができます。例えば:
$srcBucketName = "myBucket"
$objects = get-s3object -bucketname $srcBucketName -KeyPrefix "mySubdirectory"
すべてのディレクトリからデータをコピーする必要がある場合は、バケット内のディレクトリごとに 1 回、get-s3object を個別に呼び出すことで、この操作全体を小さなチャンクに分割できます。
個々のディレクトリがまだ大きすぎる場合は、MaxKeys
パラメーターを使用して操作をさらに分割できます。
コピーする準備ができたら、次のようなことができます。
$objects |
% { copy-s3object -BucketName $srcBucketName -Key $_.Key -LocalFile "somePath" }
...ローカルパスを定義した場所。文字列内のキーを解決することで、サブディレクトリとキーをローカル パスに一致させることもできます。"C:/someDir/$($_.Key)"
- Get-S3Object ドキュメント: http://docs.aws.amazon.com/powershell/latest/reference/items/Get-S3Object.html
- Copy-S3Object ドキュメント: http://docs.aws.amazon.com/powershell/latest/reference/items/Copy-S3Object.html
私が所有している Powershell 用の AWS のバージョンでは、copy-s3object
. だから、あなたが使用することができますread-s3object
。
また、get-s3object
奇妙なことに、バケット名パラメーターがありません。
Get-S3Object -BucketName mybucket -Key path/to/files | % { Read-S3Object -BucketName mybucket -Key $_.Key -File $("C:\"+$_.key)}