はじめに
この記事では、人類の利益のために2つの人気のあるクラウドサービスを連携させる方法を説明します。 間違いなく、その明るい日はElastic Beanstalkが完璧で、この記事が不要になる日が来るでしょう。
CloudBeesが提供する機能で、Elastic Beanstalkの無料ティアにはない機能
- MySQL DB
- ジェンキンス
- SVN git
- CloudBeesにデプロイする
CloudBeesに欠けているElastic Beanstalkが提供する機能
- 「100%」稼働時間
- 性能
- 監視、イベントなど
間違いなく、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