有人会解释如何在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
谁能告诉我我做错了什么?非常感谢提前。
答案 0 :(得分:1)
你应该添加:
$S3PutRequest.WithServerSideEncryptionMethod([Amazon.S3.Model.ServerSideEncryptionMethod]::AES256)
或者:
$S3PutRequest.ServerSideEncryptionMethod = [Amazon.S3.Model.ServerSideEncryptionMethod]::AES256
答案 1 :(得分: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