gpt4 book ai didi

powershell - 如何将特定类型的所有文件上传到 S3 Bucket?

转载 作者:行者123 更新时间:2023-12-04 08:08:17 26 4
gpt4 key购买 nike

当我这样做时:

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 并查看我帐户中的所有存储桶,因此我知道它已正确配置。

编辑2:

如果我做:
> $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单独地,我得到了对象的完整路径。
但是,这里面有空格。这可能是个问题吗?

最佳答案

当您从命令行填写缺失的参数时,您需要指定它们的文字字符串值。当我在本地模仿您的问题时:

PS C:\> Write-S3Object

cmdlet Write-S3Object at command pipeline position 1
Supply values for the following parameters:
BucketName: MyTestBucketNameHere
Key: $testName
File: C:/test.txt

我最终在 S3 上得到了一个文件,其 key 名为 $testName ,因为变量不在该上下文中计算。同样,您会收到此信息“FilePath 属性指示的文件不存在!”错误,因为您的文件系统中没有名为 $f[0].fullName 的文件.

将单个文件写入 S3 的示例:
PS C:> Write-S3Object -BucketName "MyTestBucketName" -Key "file.txt" -File "C:/test.txt"

要将所有文件写入 S3:
PS C:\> (Get-ChildItem -filter "*.flv") | % { Write-S3Object -BucketName "MyTestBucketName" -File $_ -Key $_.name}

这将首先获取当前目录中所有文件类型为 flv 的文件,对于每个对象(由百分号表示),我们将使用作为 name 属性的 Key 将文件(由 $_ 表示)写入 MyTestBucketName正在迭代的当前文件。

关于powershell - 如何将特定类型的所有文件上传到 S3 Bucket?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23918359/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com