AWS Elastic BeanstalkとCloudBeesをリンクする

はじめに





この記事では、人類の利益のために2つの人気のあるクラウドサービスを連携させる方法を説明します。 間違いなく、その明るい日はElastic Beanstalkが完璧で、この記事が不要になる日が来るでしょう。



CloudBeesが提供する機能で、Elastic Beanstalkの無料ティアにはない機能








CloudBeesに欠けているElastic Beanstalkが提供する機能








間違いなく、Elastic Beanstalkは将来的にCloudBeesを完全に吸収する、より強力で有望なサービスですが、今のところは自分たちのためにより良いものにするでしょう。







ステップ1:Elastic Beanstalkを登録します(既にお持ちの場合はスキップします)





この例では、米国東部(バージニア)サーバーでテストアプリケーションを作成しました。これは、データベースへの接続速度とJenkinsからのアプリケーションの展開に大きな影響を与えたようです。 しかし、もちろん、他の地域を試すこともできます。



1.1新しいアプリケーションを作成する



画像



1.2結果を取得する



画像



1.3 Elastic Beanstalk APIの新しいユーザーを作成する



画像



1.4ユーザーに「AWS Elastic Beanstalkフルアクセス」許可を与える



画像



1.5 WARを保存するために作成されたS3バケットを確認する



画像



1.6テストアプリケーションが実行されていることの確認



画像



ステップ2:CloudBeesを登録する(既にお持ちの場合はスキップしてください)





2.1新しいMySQL DBを作成する



画像



たとえば、クエリ実行の速度を示すために、id、foo、barというフィールドを持つtestdataテーブルも作成されました。



2.2 GITリポジトリの作成(ソースを保存するための例としてのみ使用されます)



画像



2.3継続する...手順4を参照



ステップ3:テストWebアプリケーションを作成する





pom.xml




<?xml version="1.0"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.elasticbeanstalk.sampleapp</groupId> <artifactId>elasticbeanstalk-sampleapp</artifactId> <version>1.0-SNAPSHOT</version> <packaging>war</packaging> <name>elasticbeanstalk-sampleapp</name> <url>http://Default-Environment-whahswsu23.elasticbeanstalk.com</url> <properties> <maven.build.timestamp.format>yyyyMMddHHmmss</maven.build.timestamp.format> <beanstalk.versionLabel>${maven.build.timestamp}</beanstalk.versionLabel> </properties> <dependencies> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.16</version> <scope>runtime</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> <scope>runtime</scope> </dependency> </dependencies> <build> <finalName>elasticbeanstalk-sampleapp</finalName> <plugins> <plugin> <groupId>br.com.ingenieux</groupId> <artifactId>beanstalk-maven-plugin</artifactId> <version>0.2.6</version> <configuration> <applicationName>My First Elastic Beanstalk Application</applicationName> <s3Bucket>elasticbeanstalk-us-east-1-997639223855</s3Bucket> <s3Key>${maven.build.timestamp}-${project.build.finalName}.war</s3Key> <environmentName>Default-Environment</environmentName> </configuration> </plugin> </plugins> </build> </project>
      
      







珍しいのは、beanstalk-maven-pluginのみがElastic Beanstalkにアプリケーションを自動的にインストールするために使用されることです。



applicationName-パラグラフ1.2のデフォルト値を示します

s3Bucket-パラグラフ1.5の名前S3バケット

s3Key-S3に保存するwarファイルの名前。$ {maven.build.timestamp}がアプリケーションバージョンの名前として使用されます。

environmentName-パラグラフ1.2のデフォルト値を示します



context.xml




 <Context> <Resource name="jdbc/beanstalk" auth="Container" type="javax.sql.DataSource" factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory" username="beanstalk" password="" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://ec2-50-19-213-178.compute-1.amazonaws.com:3306/beanstalk?autoReconnect=true&characterEncoding=utf8" validationQuery="SELECT 1" maxWait="1000" removeAbandoned="true" maxActive="30" maxIdle="10" removeAbandonedTimeout="60" logAbandoned="true"/> </Context>
      
      







パラグラフ2.1で作成されたデータベースに接続するためのパラメーターについて説明します。



web.xml




 <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"> <display-name>Archetype Created Web Application</display-name> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <resource-ref> <res-ref-name>jdbc/beanstalk</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref> </web-app>
      
      







index.jsp




 <%@ page session="false" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title>Custom Welcome Page</title> </head> <body> <p>Your <b>custom</b> AWS Elastic Beanstalk Application is now running on your own dedicated environment in the AWS Cloud</p> <br/><br/><b>testdata:</b><br/> <jsp:useBean id="now1" class="java.util.Date" /> <sql:query dataSource="jdbc/beanstalk" var="rst" scope="request"> select id, foo, bar from testdata </sql:query> <c:forEach items="${rst.rows}" var="row"> ${row.id} ${row.foo} ${row.bar}<br/> </c:forEach> <jsp:useBean id="now2" class="java.util.Date" /> <br/><br/>Time: ${now2.time - now1.time} ms. </body> </html>
      
      







そして、最も簡単なデータベースクエリが実行され、ランタイムが表示されるテストインデックスページ。



完全なプロジェクトをダウンロード:git clone git://git.cloudbees.com/wickiup/beanstalk.git



ステップ4:CloudBeesに戻る-Jenkinsの構成





4.1新しいタスクの作成



画像



4.2。プロジェクトをダウンロードするリポジトリーを指定する(CloudBeesのGITの例)



画像



4.3 Elastic Beanstalkにアプリケーションをデプロイするためのポストステップを追加する



画像



aws.accessKeyおよびaws.secretKeyは、パラグラフ1.3の実行中に受け取ったものを指定します



この手順により、WARがS3リポジトリに追加され、アプリケーションの新しいバージョンが作成され、インスタンスが更新されます。



4.4プロジェクトを収集します-ログを調べます



 [INFO] Target Path: s3://elasticbeanstalk-us-east-1-997639223855/20120724145549-elasticbeanstalk-sampleapp.war [INFO] Uploading artifact file: /scratch/hudson/workspace/beanstalk/target/elasticbeanstalk-sampleapp.war [INFO] Artifact Uploaded [INFO] SUCCESS [INFO] ETag: 81af708b625c34c2b5a9b1d12057f575 [class: String] [INFO] [INFO] --- beanstalk-maven-plugin:0.2.6:create-application-version (default-cli) @ elasticbeanstalk-sampleapp --- [INFO] SUCCESS [INFO] sourceBundle: {S3Bucket: elasticbeanstalk-us-east-1-997639223855, S3Key: 20120724145549-elasticbeanstalk-sampleapp.war, } [class: S3Location] [INFO] versionLabel: 20120724145549 [class: String] [INFO] description: elasticbeanstalk-sampleapp [class: String] [INFO] applicationName: My First Elastic Beanstalk Application [class: String] [INFO] dateCreated: Tue Jul 24 14:56:03 EDT 2012 [class: Date] [INFO] dateUpdated: Tue Jul 24 14:56:03 EDT 2012 [class: Date] [INFO] [INFO] --- beanstalk-maven-plugin:0.2.6:update-environment (default-cli) @ elasticbeanstalk-sampleapp --- [INFO] Calling update-environment, and using versionLabel: 20120724145549 [INFO] SUCCESS [INFO] resources: {LoadBalancer: {LoadBalancerName: awseb-Default-Environment, Domain: awseb-Default-Environment-1219914711.us-east-1.elb.amazonaws.com, Listeners: [{Protocol: http, Port: 80, }], }, } [class: EnvironmentResourcesDescription] [INFO] versionLabel: 20120724145549 [class: String] [INFO] status: Updating [class: String] [INFO] applicationName: My First Elastic Beanstalk Application [class: String] [INFO] endpointURL: awseb-Default-Environment-1219914711.us-east-1.elb.amazonaws.com [class: String] [INFO] health: Grey [class: String] [INFO] dateUpdated: Tue Jul 24 14:56:03 EDT 2012 [class: Date] [INFO] environmentId: e-4hephxdqd9 [class: String] [INFO] solutionStackName: 32bit Amazon Linux running Tomcat 7 [class: String] [INFO] CNAME: Default-Environment-whahswsu23.elasticbeanstalk.com [class: String] [INFO] description: This is the default environment for the sample application. [class: String] [INFO] dateCreated: Tue Jul 24 13:10:42 EDT 2012 [class: Date] [INFO] environmentName: Default-Environment [class: String] [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 14.653s [INFO] Finished at: Tue Jul 24 14:56:04 EDT 2012 [INFO] Final Memory: 6M/15M [INFO] ------------------------------------------------------------------------ Finished: SUCCESS
      
      







ステップ5:すべてがうまくいったことを確認する





5.1 Elastic Beanstalkコンソールを確認します



画像



ご覧のとおり、現在アクティブなアプリケーションの新しいバージョン(20120724145549)が登場しました。



5.2 S3コンソールを見る



画像



現在のバージョンのアプリケーションを含むWARファイル(20120724145549-elasticbeanstalk-sampleapp.war)。



5.3 WEBインターフェースの確認



画像



リクエストの実行時間は約2ミリ秒で、これは無料利用枠に適しています。



ドキュメント





AWS無料利用枠

beanstalk-maven-plugin



All Articles