AWS AccessKey automatisch auslesen

Um sich gegen AWS verbinden zu können, muss man den AccessKey und den SecretKey eingeben. Diese sind entweder in einer CSV gespeichert oder können händisch eingegeben werden. Folgendes Skript kann genutzt werden um diesen Prozess nicht ständig neu einzugeben:

param(
	$AccessKeyCSVPath
)

Function Get-FileName($initialDirectory){
	[System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms") | Out-Null
	$OpenFileDialog = New-Object System.Windows.Forms.OpenFileDialog
	$OpenFileDialog.Title = "Bitte die Datei - accessKeys.csv - von AWS auswählen..."
	$OpenFileDialog.initialDirectory = $initialDirectory
	$OpenFileDialog.filter = "CSV (*.csv)| *.csv"
	$OpenFileDialog.ShowDialog() | Out-Null
	Return $OpenFileDialog.filename
}

$AWSAccessKey = "" | Select AccessKey,SecretKey

# Access- und SecretKey einlesen
if(!$AccessKeyCSVPath){
	$AccessKeyCSVPath = Get-FileName
}

# CSV mit Credential einlesen und in Variablen zuweisen
if($AccessKeyCSVPath){
	$CSV = Import-Csv $AccessKeyCSVPath
	$AccessKey = $CSV."Access key ID"
	$SecretKey = $CSV."Secret access key"
}

if(!($AccessKey -and $SecretKey)){
	Write-Host "Konnte keinen Access- und Secret Key auslesen." -ForegroundColor Red
	$AccessKey = Read-Host "Bitte AccessKey eintragen"
	$SecretKey = Read-Host "Bitte SecretKey eintragen"
}

$AWSAccessKey.AccessKey = $AccessKey
$AWSAccessKey.SecretKey = $SecretKey

return $AWSAccessKey

Der Aufruf innerhalb eines anderen Skripts sieht dann z.B. wie folgt aus:

param(
	$AccessKeyCSVPath = "C:\_Privat\AWS\Accesskey.csv", # In diesem Fall übergebe ich evtl. den Pfad der CSV in den Parametern
	$AccessKey, # Ich kann aber auch den Access- und SecretKey direkt als Parameter übergeben
	$SecretKey
)

if(!($AccessKey -and $SecretKey)){
	$AWSAccessKey = C:\_Skripte\AWS\Get-AWSAccessKey.ps1 -AccessKeyCSVPath $AccessKeyCSVPath # Der Pfad zum Skript muss natürlich angepasst werden, oder ggf. auch als Parameter
	$AccessKey = $AWSAccessKey.AccessKey
	$SecretKey = $AWSAccessKey.SecretKey
}
  • Sollte also keine Access- und SecretKey in den Parametern übergeben werden, wird das Skript ausgeführt.
  • Sollte kein CSV-Pfad übergeben werden, öffnet sich ein Auswahldialog
  • Sollte der Auswahldialog abgebrochen werden, müssen Access- und SecretKey händisch eingetragen werden