Da ich regelmäßig die jüngste Log-Datei aus einem bestimmten S3-Bucket herunterladen muss, habe ich dieses Skript geschrieben.
Es nutzt wiederum folgende Skripte:
- AWS AccessKey automatisch auslesen
- Dynamisches Menü automatisch erstellen
- Lokalen Ordner auswählen und ggf. erstellen
Diese am besten herunterladen und die Pfade in folgendem Skript entsprechend anpassen.
Achtung:
Der Befehl „Copy-S3Object“ überschreibt die etwaig vorhandene lokale Datei einfach, ohne Rückfrage!
#################################################################### #################################################################### ###### Hier die Parameter definieren. Den Rest in Ruhe lassen ###### ###### Außer die Pfade zu den Skripten ###### param( $AccessKeyCSVPath = "C:\_Privat\AWS\Acceskey.csv", # Pfad zur Acceskey-CSV $AccessKey, $SecretKey, $BucketName = "s3-bucket-xyz", # Hier den Namen des Buckets eintragen $LocalPath = "C:\Temp\", # Lokaler Pfad, wo das letzte File vom Bucket hin soll $Region = "eu-central-1", $ProfileName = "TempProfile" # Profilname definieren ) #################################################################### #################################################################### # Access- und SecretKey einlesen if(!($AccessKey -and $SecretKey)){ $AWSAccessKey = C:\_Skripte\AWS\Get-AWSAccessKey.ps1 -AccessKeyCSVPath $AccessKeyCSVPath $AccessKey = $AWSAccessKey.AccessKey $SecretKey = $AWSAccessKey.SecretKey } # Ggf. LocalPath erstellen wenn er nicht existiert oder angegeben wurde $LocalPath = C:\_Skripte\Snippets\Select-LocalFolder.ps1 -LocalFolder $LocalPath # AWS-Modul importieren Import-Module "C:\Program Files (x86)\AWS Tools\PowerShell\AWSPowerShell\AWSPowerShell.psd1" # Credential für AWS erstellen Set-AWSCredentials -AccessKey $AccessKey -SecretKey $SecretKey -StoreAs $ProfileName # Wenn keine Region gewählt ist, Auswahlmenü für die Region erstellen if(!$Region){ $Question = "Welche AWS Region soll genommen werden?" $Command = "Get-AWSRegion" $Attributes = @("Region","Name") $Region = (C:\_Skripte\Snippets\Select-FromMenue.ps1 -Question $Question -Command $Command -Attributes $Attributes).Region } # Region initialisieren Initialize-AWSDefaults -ProfileName $ProfileName -Region $Region # Wenn kein BucketName gewähät ist, Bucket-Auswahl erstellen if(!$BucketName){ $Question = "Welcher AWS Bucket soll genommen werden?" $Command = "Get-S3Bucket" $Attributes = @("BucketName") $BucketName = (C:\_Skripte\Snippets\Select-FromMenue.ps1 -Question $Question -Command $Command -Attributes $Attributes).BucketName } # Die jüngste Datei im Bucket auslesen $LatestObject = (Get-S3Object -BucketName $BucketName | Sort LastModified -Descending)[0].Key # Lokalen Dateinamen erstellen $LocalFile = $LocalPath + "\" + $LatestObject # Datei lokal kopieren # Eine evtl. vorhandene Datei mit dem selben Namen wird ohne Warnung überschrieben Copy-S3Object -BucketName $BucketName -Key $LatestObject -LocalFile $LocalFile | Out-Null # Credentials und Region wieder leeren Clear-DefaultAWSRegion Remove-AWSCredentialProfile -ProfileName $ProfileName -Force