1

有人能解释一下如何在 PowerShell 脚本中启用 Amazon S3 服务器端加密吗?我正在使用下面的示例代码,但是当我在 AWS 控制台或 Cloudberry S3 Explorer Pro 中检查加密时,加密类型仍设置为“无”。在文件上传后使用 AWS / Cloudberry 手动执行此操作是不可行的,因为该脚本将部署到 200 多台服务器,每台服务器在 S3 中都有自己的存储桶。这是脚本中的一段代码:

$TestFile="testfile.7z"
$S3ObjectKey = "mytestfile.7z"
#Create Amazon PutObjectRequest.
$AmazonS3 = [Amazon.AWSClientFactory]::CreateAmazonS3Client($S3AccessKeyID,$S3SecretKeyID)
$S3PutRequest = New-Object Amazon.S3.Model.PutObjectRequest 
$S3PutRequest.BucketName = $S3BucketName
$S3PutRequest.Key = $S3ObjectKey
$S3PutRequest.FilePath = $TestFile
$S3Response = $AmazonS3.PutObject($S3PutRequest)

我尝试插入以下内容但没有成功(在 $S3Response 行之前):

$S3PutRequest.ServerSideEncryption

添加上述内容后,我在输出中收到此消息,但该文件仍未在 S3 上标记为加密:

MemberType          : Method
OverloadDefinitions : {Amazon.S3.Model.PutObjectRequest WithServerSideEncryptionMethod(Amazon.S3.Model.ServerSideEncryptionMethod encryption)}
TypeNameOfValue     : System.Management.Automation.PSMethod
Value               : Amazon.S3.Model.PutObjectRequest WithServerSideEncryptionMethod(Amazon.S3.Model.ServerSideEncryptionMethod encryption)
Name                : WithServerSideEncryptionMethod
IsInstance          : True

谁能告诉我我做错了什么?提前谢谢了。

4

2 回答 2

1

您应该添加:

$S3PutRequest.WithServerSideEncryptionMethod([Amazon.S3.Model.ServerSideEncryptionMethod]::AES256)

或者:

$S3PutRequest.ServerSideEncryptionMethod = [Amazon.S3.Model.ServerSideEncryptionMethod]::AES256
于 2012-05-24T06:43:43.570 回答
0

如果您使用 CloudBerry,它有自己的 PowerShell 管理单元

Add-PSSnapin CloudBerryLab.Explorer.PSSnapin

$s3 = Get-CloudS3Connection -Key XXXXXXX -Secret YYYYYYY
$destFolder = $s3 | Select-CloudFolder -path "mybucket"
$local = Get-CloudFilesystemConnection
$srcFolder = $local | Select-CloudFolder -path "c:\myzips"
$srcFolder | Copy-CloudItem $destFolder -filter "testfile.7z" -SSE

注意Copy-CloudItem命令中的-SSE参数。可以在他们的博客上找到一些有用的示例:http: //blog.cloudberrylab.com/search ?q=powershell

于 2012-05-24T12:00:56.720 回答