1

有人會解釋如何在PowerShell腳本中啓用Amazon S3服務器端加密嗎?我使用下面的示例代碼,但是當我在AWS控制檯或Cloudberry S3 Explorer Pro中檢查加密時,加密類型仍然設置爲「無」。上傳文件後使用AWS/Cloudberry手動執行此操作是不可行的,因爲腳本將部署到200多臺服務器,每臺服務器都有S3中的自己的存儲桶。下面是代碼的腳本片段:如何使用PowerShell指定Amazon 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 

任何人都可以告訴我我做錯了什麼?提前謝謝了。

回答

1

您應該添加:

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

或者:

$S3PutRequest.ServerSideEncryptionMethod = [Amazon.S3.Model.ServerSideEncryptionMethod]::AES256 
+0

謝謝!這工作完美! :) –

0

如果您正在使用雲莓,它擁有自己的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 

通知-SSE參數Copy-CloudItem命令。 一些有用的例子可以在他們的博客上找到:http://blog.cloudberrylab.com/search?q=powershell

+0

感謝您的建議。我不想在將要運行的所有服務器上安裝Cloudberry應用程序。我已經編寫了AWS for .Net安裝程序,並且正在使用它,因爲它是免費的。 –

相關問題