Automatisierung von Abläufen in der AWS Cloud AWS CLI und SDKs

Autor / Redakteur: Sascha Möllering * / Stephan Augsten

„Wir möchten gerne mit den Schnittstellen von AWS programmatisch kommunizieren, um Abläufe zu automatisieren. Welche Möglichkeiten existieren für die Automatisierung von Abläufen in der AWS Cloud?“

Anbieter zum Thema

AWS CLI bietet allerhand Möglichkeiten, AWS-Ressourcen und -Services direkt per Kommandozeile zu verwalten.
AWS CLI bietet allerhand Möglichkeiten, AWS-Ressourcen und -Services direkt per Kommandozeile zu verwalten.
(Bild: Amazon Web Services)

Neben Werkzeugen wie Amazon CloudFormation, die Infrastruktur in Form von Quelltext ermöglichen, bietet AWS unter anderem eine Befehlszeilen-Schnittstelle (Command Line Interface, CLI) und Software Development Kits (SDKs) für unterschiedliche Sprachen.

Die AWS-Befehlszeilen-Schnittstelle ist ein Tool zur Verwaltung sämtlicher Aspekte von AWS-Services. Es muss nur ein Tool heruntergeladen und konfiguriert werden, mit dem mehrere AWS-Services über die Befehlszeile kontrolliert und über Skripte automatisiert werden können. Die AWS CLI kann für Linux und Mac OS X mithilfe von pip installiert werden:

pip install awscli

Nach erfolgreicher Installation und Konfiguration der AWS CLI können über die Befehlszeile Aufrufe an AWS Services gesendet werden. Mit folgendem Befehl lassen sich beispielsweise die Beschreibungen aller t2.large-Instanzen in einem Account auflisten:

aws ec2 describe-instances --filters "Name=instance-type,Values=t2.large"

Für die Interaktion mit dem Service Amazon S3 existieren Befehle, die sich stark an Unix-Kommandos orientieren, was die Nutzung sehr intuitiv macht. Mit folgendem Befehl können beispielsweise Dateien aus dem lokalen Filesystem rekursiv in ein S3-Bucket geladen werden:

aws s3 cp myfolder s3://mybucket/myfolder --recursive

Die AWS CLI führt diese Übertragungen parallel aus, um eine höhere Leistung zu erreichen.

Als Entwicklervorschau existiert ein Befehlszeilen-Shell-Programm namens aws-shell, das Funktionen zur Benutzerfreundlichkeit und Produktivität bietet. Davon profitieren sowohl neue als auch erfahrene Benutzer der AWS-Befehlszeilen-Schnittstelle.

Das AWS SDK für Java

Neben der CLI existieren für eine Vielzahl von Sprachen SDKs für die Interaktion mit den AWS Schnittstellen, beispielhaft betrachten wir im Folgenden das AWS SDK für Java. Dieses SDK bietet eine Java Schnittstelle für AWS. Das SDK verringert die Komplexität des Quelltextes von Anwendungen durch Bereitstellen von Java-APIs für zahlreiche AWS-Services wie beispielsweise Amazon S3, Amazon EC2 und DynamoDB.

Die Version 2.0 des AWS SDKs für Java, das aktuell als Developer Preview vorliegt, bietet Funktionalitäten wie beispielsweise non-blocking I/O und eine austauschbare HTTP-Implementierung. Das AWS SDK für Java kann einfach mit Maven oder Gradle in eigene Projekte eingebunden werden. Folgendes Beispiel zeigt die Einbindung des Amazon DynamoDB-Moduls des SDKs über Maven:

<dependency>
    <groupId>com.amazonaws</groupId>
    <artifactId>aws-java-sdk-dynamodb</artifactId>
    <version>1.11.129</version>
</dependency>

Dieses Modul kann beispielsweise folgendermaßen verwendet werden, um lesend auf eine DynamoDB-Tabelle aus einer AWS Lambda-Funktion zuzugreifen:

AmazonDynamoDB dynamoDbClient = AmazonDynamoDBClientBuilder.standard()
        .withRegion(Regions.fromName(System.getenv("AWS_REGION")))
            .build();
        String tableName = System.getenv("TABLE_NAME");
        ScanRequest scanRequest = new ScanRequest().withTableName(tableName);
        ScanResult result = dynamoDbClient.scan(scanRequest);
        StringBuffer jsonBobdy = new StringBuffer();
        for (Map<String, AttributeValue> item : result.getItems()) {
            JSONObject json = new JSONObject(item);
            jsonBobdy.append(json.toString());
        }

Sascha Möllering
Sascha Möllering
(Bild: AWS Germany GmbH)

Fazit

Mit Werkzeugen wie der AWS CLI und den AWS SDKs können sehr einfach und effizient Zugriffe auf die Services von AWS programmiert werden, um ein Höchstmaß an Automation zu erreichen. Infrastruktur kann somit als Quelltext behandelt und mit denselben Werkzeugen verwaltet und qualitätsgesichert werden.

* Sascha Möllering arbeitet als Solutions Architect bei der Amazon Web Services Germany GmbH. Seine Interessen liegen in den Bereichen Automation, Infrastructure as Code, Distributed Computing, Container und JVM.

(ID:45039948)