s3バケット一覧取得スクリプト2

はい、可能です。ライフサイクルルールが設定されていない場合と、エラーで取得できなかった場合を区別することができます。

一つの方法として、aws s3api get-bucket-lifecycle-configuration コマンドのリターンコードをチェックし、適切なメッセージをCSVファイルに書き込む方法があります。

例えば、以下のようなスクリプトに修正します。

スクリプトの修正版

#!/bin/bash

# バケットの一覧を取得
BUCKETS=$(aws s3api list-buckets --query "Buckets[].Name" --output text)

# CSVファイルのヘッダーを設定
echo "BucketName,Status,DaysToExpire" > s3_buckets.csv

# 各バケットに対してライフサイクルルールを取得
for BUCKET in $BUCKETS; do
    echo "Processing bucket: $BUCKET"
    OUTPUT=$(aws s3api get-bucket-lifecycle-configuration --bucket $BUCKET --query "Rules[].Expiration.Days" --output text 2>&1)
    RET_CODE=$?

    if [ $RET_CODE -eq 0 ]; then
        # ライフサイクルルールが存在し、正常に取得
        if [ "$OUTPUT" != "None" ]; then
            echo "$BUCKET,Configured,$OUTPUT" >> s3_buckets.csv
        else
            echo "$BUCKET,NoRules," >> s3_buckets.csv
        fi
    else
        # ライフサイクルルールの取得でエラー発生
        echo "$BUCKET,Error,$OUTPUT" >> s3_buckets.csv
    fi
done

スクリプトの説明

  • RET_CODE=$?:
    aws s3api get-bucket-lifecycle-configuration コマンドの終了ステータスコードを取得します。0 は正常終了、その他はエラーを示します。
  • if [ $RET_CODE -eq 0 ]; then ... else ... fi:
    コマンドの終了ステータスによって処理を分岐します。
  • "BucketName,Status,DaysToExpire":
    出力されるCSVに “Status” 列を追加し、ライフサイクルルールが設定されているか、設定されていないか、あるいはエラーが発生したかを示します。
  • echo "$BUCKET,Configured,$OUTPUT" >> s3_buckets.csv:
    ライフサイクルルールが設定され、正常に取得された場合の処理です。
  • echo "$BUCKET,NoRules," >> s3_buckets.csv:
    ライフサイクルルールが設定されていない場合の処理です。
  • echo "$BUCKET,Error,$OUTPUT" >> s3_buckets.csv:
    コマンド実行時にエラーが発生した場合の処理です。エラーメッセージもCSVに記録します。

スクリプトの実行方法

  1. テキストエディタで上記のスクリプトをファイルにコピーします。
  2. ファイルを list_s3_buckets.sh として保存します。
  3. 保存したファイルに実行権限を付与します。
   chmod +x list_s3_buckets.sh
  1. スクリプトを実行します。
   ./list_s3_buckets.sh

結果の確認

スクリプトを実行すると、次のようなCSVファイルが生成されます:

BucketName,Status,DaysToExpire
bucket1,Configured,30
bucket2,NoRules,
bucket3,Error,An error message
  • “Configured” はライフサイクルルールが正しく設定されていることを示します。
  • “NoRules” はライフサイクルルールが設定されていないことを示します。
  • “Error” はライフサイクルルールの取得時にエラーが発生したことを示します。

この方法では、エラーの内容も記録されるので、エラー原因を特定しやすくなります。

コメント

タイトルとURLをコピーしました