AWS-Ressourcen mit Python bereitstellen, Teil 1 AWS Boto3 installieren und konfigurieren

Autor / Redakteur: Thomas Drilling / Stephan Augsten

AWS-Nutzer können Ressourcen in der AWS-Public-Cloud auf verschiedenen Wegen provisionieren. Die programmatische Variante ist vor allem für Entwickler und in DevOps-Szenarien erste Wahl. Zu den zahleichen unterstützten SDKs gehört auch Boto3 für Python.

Anbieter zum Thema

Boto3 für Python ist eine der von AWS unterstützen Entwicklungsumgebungen.
Boto3 für Python ist eine der von AWS unterstützen Entwicklungsumgebungen.
(Bild: Python.org / AWS Germany GmbH)

AWS stellt SDKs für fast alle gängige Programmiersprachen – darunter Java, Node.JS, Browser (Javascript), PHP, Python, Ruby, Go, C++ und .Net (C#) – zur Verfügung. Dieser und folgende Workshops dieser Reihe stellen die wichtigsten SDKs vor, beginnend mit Python.

Damit knüpfen wir auch an unseren Python-Workshop an. Denn nachdem Python-Einsteiger mit den wichtigsten Programmierprinzipien, Datentypen, Kontrollstrukturen, Bibliotheken und dem Objekt-Modell von Python vertraut sind, möchten sie sicherlich in die moderne App-Entwicklung einsteigen und keine Fibonacci-Folgen in rekursive Funktionen gießen.

Boto3 bereitstellen

Die Python-SDK für AWS wird durch das Software-Paket Boto bereitgestellt, genauer gesagt Boto3 für Python 3. Verwendet man als Entwicklungsumgebung eine EC2-Instanz auf Basis von Amazon Linux oder Amazon Linux 2, sind Build-Utitilies, AWS-CLI und Entwicklungsumgebungen bereits voreingestellt. Dies gilt auch für Python 3 und die wichtigsten Paketquellen, sodass sich Boto3 einfach mit …

pip install boto3

… installieren lässt.

Installation von Boto3über den Bash-Befehl: docker run --name amazon_bash --rm -i -t amazonlinux bash
Installation von Boto3über den Bash-Befehl: docker run --name amazon_bash --rm -i -t amazonlinux bash
(Bild: Drilling / AWS Germany GmbH)

Der Quellcode von Boto3 ist auch auf GibHub verfügbar. Auf einem „nackten“ Linux muss man Python 3, Pip und Boto nacheinander manuell installieren. Wir zeigen dies exemplarisch für alle mit Red Hat verwandten Distributionen (ebenfalls auf Basis vom Amazon Linux). Dieses wird nicht nur als EC2-AMI sondern auch als virtuelle Maschine für VMware, KVM, VirtualBox und Hyper-V zum Download bereitgestellt.

Noch einfacher ist das Bereitstellen von Amazon Linux als Docker-Container, da auch der offizielle Docker-Hub ein passendes Image von Amazon Linux bereitstellt. Wie in unserem Docker-Workshop gezeigt, lässt sich Amazon Linux im interaktiven Modus mit Bash ganz einfach wie folgt bereitstellen:

docker run --name amazon_bash --rm -i -t amazonlinux bash

Das Installieren von Python 3 erfolgt dann mittels …

yum –y update
yum –y install python3
Python-Tutorial
Bildergalerie mit 10 Bildern

Der Python-Paketmanager will auch installiert werden.
Der Python-Paketmanager will auch installiert werden.
(Bild: Drilling / AWS Germany GmbH)

Das Installieren des Python-Paketmanagers Pip erledigt man mit …

yum install –y python-pip

Boto3-Installation via Python-Paketmanager.
Boto3-Installation via Python-Paketmanager.
(Bild: Drilling / AWS Germany GmbH)

… um dann Boto3 wie im nächsten Bild gezeigt mit „pip install …“ installieren zu können. In Amazon Linux unter EC2 muss den jeweiligen Kommandos „sudo“ vorangestellt werden.

Windows-Python-User müssen hingegen den aktuellen Tarball von Boto3 herunterladen und entpacken. Achtung: dass alle Screenshots die CMD zeigen, soll nicht zu der falschen Annahme verleiten, dass wie hier Python unter Windows ausführen, denn wir sind lediglich aus der CMD mit der Bash in einem Docker-Container in Amazon Linux verbunden. Die Installation kann dann entweder mit …

setup.py install

erfolgen, oder wenn pip installiert ist ebenfalls mit …

pip install –U boto

Abschließend installiert man noch die AWS-CLI mit

yum –y install aws-cli

Credentials konfigurieren

Konfiguration der Zugangsdaten.
Konfiguration der Zugangsdaten.
(Bild: Drilling / AWS Germany GmbH)

Vor der Erstbenutzung der SDK muss das CLI bzw. die Entwicklungsumgebung so konfiguriert werden, dass dieser in der gewünschten Default-Region über die benötigten Account-Credentials verfügt. Wie das funktioniert, zeigt unser Artikel zu AWS-CLI. Dazu startet man auf dem Host, auf dem man die AWS-SDK für Python nutzen will:

aws configure

Die bei AWS hinterlegten Schlüssel.
Die bei AWS hinterlegten Schlüssel.
(Bild: Drilling / AWS Germany GmbH)

Hierdurch werden unter anderem die Credentials konfiguriert, mit denen man sich gegen die API authentifiziert. So genannte Access-Key/Access-Secret-Pairs kann man zuvor in der IAM-Konsole des zu verwendenden IAM-Nutzers generieren und sich das Key-Pair als CSV herunterladen. Später besteht diese Möglichkeit nicht mehr. Bei Verlust muss man neue Schlüsselpaare anlegen.

Die Konfigurationseinstellungen werden auf dem lokalen Arbeitsplatz oder in der EC2-Instanz die man als Entwicklungssystem nutzt in zwei Dateien geschrieben. Das „credentials“-File mit eben diesem Key-Pair findet sich bei Linux-/Unix- und Mac-OS-Systemen unter ~/.aws/credentials bzw. in der Datei C:\Users\USERNAME\.aws\credentials unter Windows. Bei Bedarf kann die Datei mehrere benannte Profile zusätzlich zu einem Standardprofil enthalten.

Inhalt der Konfigurationsdatei.
Inhalt der Konfigurationsdatei.
(Bild: Drilling / AWS Germany GmbH)

Das CLI-Config-File hingegen enthält die konfigurierte Default-Region und ist unter ~/.aws/config (Linux, Mac OS, Unix) oder unter C:\User\USERNAME\.aws\config (Windows) zu finden. Auch dieses kann ein Standardprofil, benannte Profile und CLI-spezifische Konfigurationsparameter für jedes Profil enthalten. Wenn die Konfigurationsdatei-Variable gesetzt ist, schreibt „aws config“ die Einstellungen für die Region und die Ausgabe in die angegebene Datei. Die CLI versucht dann, die Einstellungen der Profile von dort anstelle der Standarddatei (~/.aws/config) zu lesen. Anmeldeinformationen werden weiterhin aus der Standardanmeldungsdatei (~/.aws/credentials) gelesen und in diese geschrieben.

Python-Tutorial
Bildergalerie mit 10 Bildern

(ID:45514540)