私がこれを行うとき:
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
と、オブジェクトへのフル パスが取得されます。ただし、これにはスペースが含まれています。これは問題になる可能性がありますか?