8

私がこれを行うとき:

foreach ($f in (Get-ChildItem -filter "*.flv")){
    Write-S3Object -BucketName bucket.example -File $f.fullName -Key $f.name -CannedACLName PublicRead
}

次のエラーが表示されます。

Write-S3Object :
At line:1 char:51
+  foreach ($f in (Get-ChildItem -filter "*.flv")){ Write-S3Object -BucketName xx. ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (Amazon.PowerShe...eS3ObjectCmdlet:WriteS3ObjectCmdlet) [Write-S3Objec
   t], InvalidOperationException
    + FullyQualifiedErrorId : Amazon.S3.AmazonS3Exception,Amazon.PowerShell.Cmdlets.S3.WriteS3ObjectCmdlet

私は何を間違っていますか?エラーをさらに表示するためにできることはありますか、それとも構文の問題ですか?

そうでなければ、powershell を使用して特定のファイルタイプをすべてバケットにアップロードするにはどうすればよいですか?

編集:

意図的Set-DefaultAWSRegionにバケットが存在しないリージョンに設定して取得しました

Write-S3Object : The bucket you are attempting to access must be addressed using the specified endpoint. Please send all future requests to this endpoint. 

予想どおり、エラー メッセージとして、バケットに接続できるように見え、特定のリージョンにないことを認識しています。

また、 s3://バケット名の前にプレフィックスを入力すると、バケットが見つからないというメッセージが表示されるので、今入力している内容は正しいようです。

Get-S3Bucket を実行して、自分のアカウントのすべてのバケットを確認できるので、正しく構成されていることがわかります。

EDIT2:

私が行った場合:

> $f = Get-ChildItem -filter "*.flv"
> Write-S3Object

cmdlet Write-S3Object at command pipeline position 1
Supply values for the following parameters:
BucketName: bucket.name
Key: $f[0].name
File: $f[0].fullName
Write-S3Object : The file indicated by the FilePath property does not exist!
At line:1 char:1
+ Write-S3Object
+ ~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (Amazon.PowerShe...eS3ObjectCmdlet:WriteS3ObjectCmdlet) [Write-S3Objec
   t], InvalidOperationException
    + FullyQualifiedErrorId : System.ArgumentException,Amazon.PowerShell.Cmdlets.S3.WriteS3ObjectCmdlet

個別に行う$f[0].fullNameと、オブジェクトへのフル パスが取得されます。ただし、これにはスペースが含まれています。これは問題になる可能性がありますか?

4

4 に答える 4