0
0

More than 1 year has passed since last update.

S3 バッチオペレーションを利用してオブジェクトACLを一括に変更する

Posted at

やりたいこと

ここでは、S3バッチオペレーションを使用して、マニフェストファイルに記載されたオブジェクトのACLを纏めて設定します。
マニフェストファイルはイベントリから取得します。

イベントリ設定の作成

対象のS3バケットの「管理」タブより、「イベントリ設定の作成」をクリック。
スクリーンショット 2021-09-10 18.51.32.png

「インベントリ設定名」を入力します。
スクリーンショット 2021-09-10 18.56.57.png

「プレフィックス」でイベントリを制限します。
※今回は、CloudTrailのオブジェクトを指定しています。
スクリーンショット 2021-09-10 18.57.04.png

「送信先」に、インベントリレポートを受け取る送信先バケットを選択してあげます。
※送信先バケットにデータを保存できるように、自動的に送信先バケットポリシーに追加されます。
スクリーンショット 2021-09-10 18.58.45.png

この辺りの設定は、デフォルトのままにします。
※なお、「頻度」の説明にある通り、最初のレポートは 48 時間以内に配信されます。
スクリーンショット 2021-09-10 19.01.38.png

サーバーの暗号化は、「Amazon S3 キー (SSE-S3)」で、暗号化しておこうと思います。
スクリーンショット 2021-09-10 19.03.06.png

S3 インベントリレポート (manifest.json)は次のように作成されていました。

{
  "sourceBucket" : "aws-cloudtrail-logs-123456789012-a54c82f0",
  "destinationBucket" : "arn:aws:s3:::XXX",
  "version" : "2016-11-30",
  "creationTimestamp" : "1631149200000",
  "fileFormat" : "CSV",
  "fileSchema" : "Bucket, Key",
  "files" : [ {
    "key" : "aws-cloudtrail-logs-123456789012-a54c82f0/test/data/0bac7445-9d6c-4939-9f97-cfd96a5c880d.csv.gz",
    "size" : 48626,
    "MD5checksum" : "37ba136f5eb6bfec4ee221dcc0f44221"
  } ]
}

IAMロールの作成

ここでは、後でS3バッチオペレーションが、S3にアクセスするためのIAMロールを作成しておく必要があります。

  • 対象のオブジェクト(バケット)に対するACL書き込み
  • S3インベントリレポートのバケットの読み取り
  • バッチオペレーションのレポートを出力するバケットへの書き込み
信頼関係
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "batchoperations.s3.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
policy
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObjectAcl",
                "s3:PutObjectVersionAcl"
            ],
            "Resource": "arn:aws:s3:::【対象のオブジェクトが格納されているバケット】/*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion",
                "s3:GetBucketLocation"
            ],
            "Resource": [
                "arn:aws:s3:::【S3インベントリレポートのバケット】/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetBucketLocation"
            ],
            "Resource": [
                "arn:aws:s3:::【バッチのレポートのバケット】/*"
            ]
        }
    ]
}

バッチオペレーション ジョブの作成

「バッチオペレーション」から「ジョブの作成」をクリック。
スクリーンショット 2021-09-10 19.13.16.png

ステップ 1:リージョンとマニフェストを選択
ジョブを作成する「AWS リージョン」を選択し、イベントリによって作成された、S3 インベントリレポート (manifest.json)を指定します。
スクリーンショット 2021-09-10 19.17.09.png

ステップ 2:オペレーションを選択
「アクセスコントロールリスト (ACL) を置き換える」を選択します。
スクリーンショット 2021-09-10 19.17.38.png

「オブジェクト所有者の正規ID」を入力します。
❇︎今回は、オブジェクト所有者が、Cloudtrailから自AWSアカウントに変更するため、自AWSアカウントの正規IDを入力します。
  自アカウントの正規IDは、「マイセキュリティ資格情報」から確認することが可能です。
他のAWSアカウントに読み取り権限などを付与する場合は、要件に応じて、「他のAWSアカウントのアクセス」に他のAWSアカウントの正規IDを入力します。
スクリーンショット 2021-09-10 19.20.40.png

ステップ 3:追加のオプションを設定
完了レポートを生成し、送信するパスなどを指定します。
❇︎完了レポートは SSE-S3 を使用して暗号化されています。
スクリーンショット 2021-09-10 19.26.47.png

事前に作成しておいたIAMロールを指定します。
スクリーンショット 2021-09-11 15.41.26.png

ステップ 4:確認
「ジョブの作成」をクリック。

ジョブの実行

128のオブジェクトがあるようです。「ジョブの実行」をクリックしてみましょう。
スクリーンショット 2021-09-18 15.15.10.png

完了しました。
スクリーンショット 2021-09-18 15.19.15.png

先程、「完了レポート」をS3保存しておくようにしてあるので、manifest.jsonを確認すると、keyに記載のあるオブジェクトとして作成されています。
なお、今回は、ジョブの実行がすべて成功(100%)したので、失敗のものは生成されていませんが、失敗したものがあれば、別途失敗したオブジェクトが作成されます。

{
  "Format": "Report_CSV_20180820",
  "ReportCreationDate": "2021-09-18T06:19:08.997Z",
  "Results": [{
    "TaskExecutionStatus": "succeeded",
    "Bucket": "aws-cloudtrail-logs-123456789012-a54c82f0",
    "MD5Checksum": "e15dc657cc1d8108223e36c9696ae6b5",
    "Key": "job-86af8bdf-58d6-4b15-ab1d-f9c9a26fa137/results/2bae7ca5eb757b7c5e92a02dcf543d0aec3a30f1.csv"
  }],
  "ReportSchema": "Bucket, Key, VersionId, TaskStatus, ErrorCode, HTTPStatusCode, ResultMessage"
}
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0