AWS Tools for Powershellを使用してAmazon S3のバケットにオブジェクトロックを設定したい

0

Amazon S3のバケット作成・オブジェクトロック設定・バケットにファイルアップロードをPowerShellスクリプト化させたいと考えております。 オブジェクトロック有効化したバケットの作成はできたのですが、作成したバケットにオブジェクトロックのリテンションモード・期間の設定ができません。 具体的に言いますと、以下のコマンドを入力した際にエラーが出力し、設定されません。 ■コマンド Write-S3ObjectLockConfiguration -BucketName bucket-name -DefaultRetention_Day 31 -DefaultRetention_Mode Compliance ■エラーメッセージ Write-S3ObjectLockConfiguration -BucketName bucket-name -DefaultRetention_Day 31 -DefaultRetention_Mode Compliance

Write-S3ObjectLockConfiguration : The XML you provided was not well-formed or did not validate against our published schema 発生場所 行:1 文字:1

  • Write-S3ObjectLockConfiguration -BucketName bucket-name -Defaul ...
  •   + CategoryInfo          : InvalidOperation: (Amazon.PowerShe...igurationCmdlet:WriteS3ObjectLockConfigurationCmdlet) [Write-S3ObjectLockConfiguration]、InvalidOperation 
     Exception
      + FullyQualifiedErrorId : Amazon.S3.AmazonS3Exception,Amazon.PowerShell.Cmdlets.S3.WriteS3ObjectLockConfigurationCmdlet
    

コマンド自体パラメータにたいして必須の値もなく、何が原因で無効と言われているのか皆目つかないのでご知見ある方、何かしら気にかかった方いらっしゃいましたらご教示いただけますと幸いです。 宜しくお願いいたします。

gefragt vor 10 Monaten340 Aufrufe
2 Antworten
0

あまりAWS Tools for Powershellは使用したことないのですが、DefaultRetention_Modeの入力値はStringで問題無いのでしょうか?
「Get-Help Write-S3ObjectLockConfiguration」を実行してヘルプを確認したところ以下のようになっていました。
https://docs.aws.amazon.com/powershell/latest/reference/items/Write-S3ObjectLockConfiguration.html

[-DefaultRetention_Mode <Amazon.S3.ObjectLockRetentionMode>]
profile picture
EXPERTE
beantwortet vor 10 Monaten
profile picture
EXPERTE
überprüft vor 10 Monaten
  • コメントありがとうございます。こちらの入力値、stringになってしまうのですね……。 いただいたURLから更にリンクされている以下のページを確認し、Fieldの値を入力すれば動くかと実行したのですがエラーになっておりました。

    ■参考URL https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/S3/TObjectLockRetentionMode.html

    もう少し調べてみます。ありがとうございます。

0

結局解決策が見いだせなかったため、AWS Tools for Powershellではなくaws cli(aws s3apiコマンド)にて対応しました。
①オブジェクトロックを有効化し、バケット作成

aws s3api create-bucket --bucket bucketname --create-bucket-configuration LocationConstraint=ap-northeast-1 --object-lock-enabled-for-bucket --output json

②オブジェクトロックのリテンションモード・期間の設定

aws s3api put-object-lock-configuration `
       --bucket bucketname `
       --object-lock-configuration '{ \"ObjectLockEnabled\": \"Enabled\", \"Rule\": { \"DefaultRetention\": { \"Mode\": \"GOVERNANCE\", \"Days\": 1 }}}' `
       --output json

当初想定していた方法ではありませんが、一応PowerShell上でも対応できたので解決案の1つとして記載いたします。

beantwortet vor 9 Monaten

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen