# AWSプロファイルと出力ファイルを読み込む
$profile = "AWS_PROFILE名を指定"
$outputFileBase = "出力ファイル名を指定"
# 現在の年月日と時刻をyyyymmddhhmm形式で取得
$date = Get-Date -Format "yyyyMMddHHmm"
# 出力ファイルに年月日と時刻を追加
$outputFile = "$outputFileBase-$date.csv"
# ファイルが既に存在する場合は削除の確認を行う
if (Test-Path $outputFile) {
$delete = Read-Host "$outputFile already exists. Do you want to delete it? (y/n)"
if ($delete -eq 'y') {
Remove-Item $outputFile
} else {
Write-Output "Script terminated to avoid overwrite."
return
}
}
# 特定のパラメータKeyを複数指定
$targetKeys = 'myParameterKey1', 'myParameterKey2'
# CSVヘッダを出力
Add-Content -Path $outputFile -Value "ParameterGroupType,ParameterGroupName,ParameterKey,ParameterValue"
# DBパラメータグループとクラスタパラメータグループを対象にループ
$groupTypes = @("DB", "Cluster")
$groupTypesCount = $groupTypes.Count
$groupTypeIndex = 1
foreach ($groupType in $groupTypes) {
Write-Output "$(Get-Date -Format "yyyy/MM/dd HH:mm:ss") Processing group type $groupTypeIndex of $groupTypesCount"
$parameterGroups = if ($groupType -eq "DB") {
aws rds describe-db-parameter-groups --profile $profile | ConvertFrom-Json | Select-Object -Expand DBParameterGroups
} else {
aws rds describe-db-cluster-parameter-groups --profile $profile | ConvertFrom-Json | Select-Object -Expand DBClusterParameterGroups
}
$parameterGroupsCount = $parameterGroups.Count
$parameterGroupIndex = 1
foreach ($group in $parameterGroups) {
Write-Output "$(Get-Date -Format "yyyy/MM/dd HH:mm:ss") Processing parameter group $parameterGroupIndex of $parameterGroupsCount"
$groupName = if ($groupType -eq "DB") { $group.DBParameterGroupName } else { $group.DBClusterParameterGroupName }
$parameters = if ($groupType -eq "DB") {
aws rds describe-db-parameters --db-parameter-group-name $groupName --profile $profile | ConvertFrom-Json | Select-Object -Expand Parameters
} else {
aws rds describe-db-cluster-parameters --db-cluster-parameter-group-name $groupName --profile $profile | ConvertFrom-Json | Select-Object -Expand Parameters
}
$parametersCount = $parameters.Count
$parameterIndex = 1
foreach ($parameter in $parameters) {
Write-Output "$(Get-Date -Format "yyyy/MM/dd HH:mm:ss") Processing parameter $parameterIndex of $parametersCount"
if ($targetKeys -contains $parameter.ParameterName) {
# JSONからParameterNameとParameterValueを取得し、CSVに出力
$parameterKey = $parameter.ParameterName
$parameterValue = $parameter.ParameterValue
Add-Content -Path $outputFile -Value "$groupType,`"$groupName`",`"$parameterKey`",`"$parameterValue`""
}
$parameterIndex++
}
$parameterGroupIndex++
}
$groupTypeIndex++
}