

# 監査ログの表示
<a name="Appendix.SQLServer.Options.Audit.AuditRecords"></a>

監査ログは `D:\rdsdbdata\SQLAudit` に格納されます。

ファイルがサイズ制限に達している場合に SQL Server が監査ログファイルへの書き込みを完了すると、Amazon RDS はファイルを S3 バケットにアップロードします。保持設定が有効になっている場合、Amazon RDS は、このファイルを保持フォルダ (`D:\rdsdbdata\SQLAudit\transmitted`) に移動します。

保持設定については、[SQL Server Audit を DB インスタンスオプションに追加する](Appendix.SQLServer.Options.Audit.Adding.md) を参照してください。

監査ログファイルがアップロードされるまで、監査レコードは DB インスタンスに維持されます。監査レコードを表示するには、次のコマンドを実行します。

```
SELECT   * 
	FROM     msdb.dbo.rds_fn_get_audit_file
	             ('D:\rdsdbdata\SQLAudit\*.sqlaudit'
	             , default
	             , default )
```

同じコマンドを使用して、保持フォルダの監査レコードを表示するには、フィルタを `D:\rdsdbdata\SQLAudit\transmitted\*.sqlaudit` に変更します。

```
SELECT   * 
	FROM     msdb.dbo.rds_fn_get_audit_file
	             ('D:\rdsdbdata\SQLAudit\transmitted\*.sqlaudit'
	             , default
	             , default )
```

## CloudWatch での監査ログレコードの表示
<a name="Appendix.SQLServer.Options.Audit.AuditRecords.CloudWatch"></a>

監査ログを CloudWatch にアップロードすることを選択した場合は、以下の手順に従ってログレコード (JSON 形式) にアクセスできます。

**CloudWatch で監査ログを表示するには**

1. CloudWatch コンソールの [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/) を開いてください。

1. 左側のナビゲーションペインで、**[ログ]**、**[ログ管理]** の順に選択します。

1. **[ロググループ]** 検索ボックスに DB インスタンス名を入力します。

1. 適切なロググループを選択します。

1. [**ログストリーム**] タブで、ログストリームを選択します。

あるいは、AWS CLI を使用してログストリームをクエリすることもできます。次の例では、監査ログイベントを抽出し、CSV ファイルにエクスポートします。

```
# Parameters
# -----------
LOG_GROUP="/aws/rds/instance/<your-db-instance-id>/sqlaudit"
START_DATE="2026-06-18"
END_DATE="2026-06-19"
OUTPUT_FILE="sql_audit_extract.csv"

# Convert dates to epoch milliseconds
# -----------------------------------
START_TIME=$(date -d "${START_DATE}" +%s)000
END_TIME=$(date -d "${END_DATE}" +%s)000

# Fetch log events
# ----------------
# Note: --no-paginate returns all results in a single call.
# For large result sets, consider using --page-size or manual pagination.
RESPONSE=$(aws logs filter-log-events \
  --log-group-name "${LOG_GROUP}" \
  --start-time "${START_TIME}" \
  --end-time "${END_TIME}" \
  --output json \
  --no-paginate)

# Parse and export to CSV
# Extract the 'message' field from each event (JSON formatted messages),
# then convert to CSV using jq.
# Get CSV headers from the first record
# -------------------------------------
HEADERS=$(echo "${RESPONSE}" | jq -r '
  [.events[0].message | fromjson | keys[]] | @csv
')

# Write headers to output file
# ----------------------------
echo "${HEADERS}" > "${OUTPUT_FILE}"

# Write all records to output file
# --------------------------------
echo "${RESPONSE}" | jq -r '
  .events[].message | fromjson | [.[]] | @csv
' >> "${OUTPUT_FILE}"

# Script execution summary
# -------------------------
RECORD_COUNT=$(echo "${RESPONSE}" | jq '.events | length')
echo "Exported ${RECORD_COUNT} records to ${OUTPUT_FILE}"
```