Um die Anwendung zu aktualisieren, kommt Git zum Einsatz, egal ob es sich um neuen Programmcode, ergänzendes HTML oder andere Dateien handelt. Wer Git kennt, ist mit der Befehlsfolge vertraut:
»git add
«
,
»commit
«
,
»git aws.push
«
(
Listing 2
). Der erste Befehl fügt dem lokalen Repository Dateien hinzu, der zweite speichert sie im Index und der dritte überträgt die Änderungen zum Repository auf dem Server.
Listing 2
Aktualisierung
git aws.push ElasticBeanstalk git:(master) git aws.push Counting objects: 5, done. Delta compression using up to 4 threads. Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 331 bytes, done. Total 3 (delta 0), reused 0 (delta 0) remote: To https://XXXXX:XXXXX@git.elasticbeanstalk.eu-west-1.amazonaws.com/v1/repos/44616e417070/commitid/37346533646166656662386330633434363938363361616635383863363963356164326535346466/environment/44616e4170702d656e76 c56f610..74e3daf HEAD -> master
Der Push-Befehl wirkt sich direkt aus und spiegelt sich direkt auf der öffentlichen Webseite des Projekts (
»http://ID.elasticbeanstalk.com/
«
) wider.
Eine einfache PHP-Anwendung zum Testen der neuen Umgebung gibt beispielsweise die Umgebungsvariablen des Servers aus:
<?php print_r($_SERVER); ?>
Mit anderen Programmiersprachen funktioniert dies analog.
Typischerweise verwendet man in Versionsverwaltungstools wie Git verschiedene Zweige, zumindest einen für die Entwicklung und einen stabilen für den Produktiveinsatz. Das funktioniert auch mit Elastic Beanstalk. Zunächst legt man mit Git einen neuen Zweig an, etwa
»stable
«
:
$ git checkout -b stable
Fragt man nun mit
»eb status
«
den aktuellen Stand ab, bemerkt das Programm, dass der neue Zweig nicht mit Elastic Beanstalk assoziiert ist (Listing 3). Dies ändert der Befehl:
Listing 3
Ein neuer Zweig
$ eb status The current branch "stable" is not associated with an Elastic Beanstalk environment. Call "eb branch" to set up a new environment for this branch. Proceeding with default settings. URL : DanApp-env-ceqwdhduep.elasticbeanstalk.com Status : Ready Health : Green
$ eb branch The current branch is "stable". Enter an AWS Elastic Beanstalk environment name (auto-generatedvalue is "DanApp-stable-env"): Do you want to copy the settings from environment "DanApp-env" for the newbranch? [y/n]: y
Eine neuerliche Statusabfrage bestätigt durch den ausbleibenden Hinweis auf den verwaisten Zweig, dass die Integration geklappt hat:
$ eb status Environment "DanApp-stable-env" is not running.
Der Start der EBS-Anwendung erfolgt wie gewohnt:
$ eb start
Diese wenigen Befehle haben den aktiven Zweig umgestellt, die gesamte Konfiguration der Umgebung kopiert und einen Klon davon gestartet. Auch die AWS-Webkonsole zeigt in der Folge beide Umgebungen an, auch wenn sie per Kommandozeile gestartet wurden.
Listing 4
zeigt, dass dieses Mal die
»stable
«
-Version hochfährt, ansonsten ist alles wie beim ersten Start.
Listing 4
Start eines neuen Zweigs
Starting application "DanApp". Waiting for environment "DanApp-stable-env" to launch. 2013-05-08 20:20:43 INFO createEnvironment is starting. 2013-05-08 20:20:48 INFO Using elasticbeanstalk-eu-west-1-894012917938 as Amazon S3 storage bucket for environment data. 2013-05-08 20:21:04 INFO Created load balancer named: awseb-e-h-AWSEBLoa-1118ULBZLSFGH 2013-05-08 20:21:34 INFO Created security group named: awseb-e-hxaxpp3bsa-stack-AWSEBSecurityGroup-ZNUGTMANJ7WO 2013-05-08 20:21:40 INFO Created Auto Scaling launch configuration named: awseb-e-hxaxpp3bsa-stack-AWSEBAutoScalingLaunchConfiguration-12RI7463WQWE3 2013-05-08 20:23:25 INFO Waiting for EC2 instances to launch. This may take a few minutes. 2013-05-08 20:23:25 INFO Created Auto Scaling group named: awseb-e-hxaxpp3bsa-stack-AWSEBAutoScalingGroup-1NMEE2RF9GMBP 2013-05-08 20:25:11 INFO Created Auto Scaling group policy named: arn:aws:autoscaling:eu-west-1:894012917938:scalingPolicy:8bc35c42-856d-4848-8111-9ec4e4df0fcf:autoScalingGroupName/awseb-e-hxaxpp3bsa-stack-AWSEBAutoScalingGroup-1NMEE2RF9GMBP:policyName/awseb-e-hxaxpp3bsa-stack-AWSEBAutoScalingScaleDownPolicy-179VH5P3Y0VH9 2013-05-08 20:25:13 INFO Created CloudWatch alarm named: awseb-e-hxaxpp3bsa-stack-AWSEBCloudwatchAlarmLow-1Q23UL8HF2B6K 2013-05-08 20:25:16 INFO Created Auto Scaling group policy named: arn:aws:autoscaling:eu-west-1:894012917938:scalingPolicy:732bdc0c-4734-4d27-b02e-99d716c66dc6:autoScalingGroupName/awseb-e-hxaxpp3bsa-stack-AWSEBAutoScalingGroup-1NMEE2RF9GMBP:policyName/awseb-e-hxaxpp3bsa-stack-AWSEBAutoScalingScaleUpPolicy-1Q75QYV2QAY6X 2013-05-08 20:25:18 INFO Created CloudWatch alarm named: awseb-e-hxaxpp3bsa-stack-AWSEBCloudwatchAlarmHigh-1AD9DJ2JI6IPZ 2013-05-08 20:26:56 INFO Application available at DanApp-stable-env-3jhebnynie.elasticbeanstalk.com. 2013-05-08 20:26:56 INFO Successfully launched environment: DanApp-stable-env Application is available at "DanApp-stable-env-3jhebnynie.elasticbeanstalk.com".
Um die Applikation nun auch auf dem Webserver erreichbar zu machen, folgt der Befehl
»git aws.push
«
(
Listing 5
). Nach ein paar Minuten steht auch die zweite Umgebung zur Verfügung. Beide verwenden ihren eigenen Code auf ihrer eigenen virtuellen Hardware.
Listing 5
git aws.push
$ git aws.push Pushing to environment: DanApp-stable-env Counting objects: 7, done. Delta compression using up to 4 threads. Compressing objects: 100% (5/5), done. Writing objects: 100% (7/7), 589 bytes, done. Total 7 (delta 0), reused 0 (delta 0) remote: To https://AKIAJ2XDUJ2NAFFPK5SA:20130508T193045Z74f087d7af6327f3447173d8dba5de13b9c695da67033b955885c5cb4a7226b1@git.elasticbeanstalk.eu-west-1.amazonaws.com/v1/repos/44616e417070/commitid/37346533646166656662386330633434363938363361616635383863363963356164326535346466/environment/44616e4170702d737461626c652d656e76 + 04156e4...74e3daf HEAD -> master (forced update)
Um das erste Testprojekt abschließend wieder loszuwerden, genügt der Befehl
»eb delete
«
oder ein Klick auf
»Delete
«
im Web-Fronted.