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
    

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

質問済み 9ヶ月前318ビュー
2回答
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
エキスパート
回答済み 9ヶ月前
profile picture
エキスパート
レビュー済み 9ヶ月前
  • コメントありがとうございます。こちらの入力値、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つとして記載いたします。

回答済み 8ヶ月前

ログインしていません。 ログイン 回答を投稿する。

優れた回答とは、質問に明確に答え、建設的なフィードバックを提供し、質問者の専門分野におけるスキルの向上を促すものです。

質問に答えるためのガイドライン