この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
はじめに
こんにちは佐伯です。AWS CodeStarが東京リージョンで利用できるようになりました!
AWS CodeStar is now available in Asia Pacific (Tokyo) and Canada (Central) Regions
以下のエントリで紹介されていますが、今回はRuby on Railsを全く知らない私が、Ruby on Railsウェブアプリケーションをサクっと作ってみたいと思います。(なお、やってることはほぼ一緒だったりします)
やってみた
プロジェクトの作成
CodeStarのサービス画面よりプロジェクトの作成をクリックします。
はじめてプロジェクトの作成を行う場合、CodeStarが各種AWSリソースを作成するためのIAMロールを作成するかの表示がされますので、「はい、ロールを作成します。」を選択します。
今回はElastic BeanstalkでRuby on Railsのウェブアプリケーションを作成するテンプレートを使用しました。
プロジェクト名を入力し、ソースコードのリポジトリをCodeCommitまたはGitHubから選択します。今回はCodeCommitを選択しました。
EC2の設定はデフォルトのままとし、キーペアを選択して、プロジェクトを作成します。
次にツールのセットアップを参照しながら、リポジトリへの接続設定を行います。「手順を表示」から設定手順を確認することができます。
今回はコマンドラインツールのセットアップを行いました。詳しい手順はCodeCommitのGitリポジトリへの接続方法を参照して頂ければと思います。
$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/saiki.ko/.ssh/id_rsa): codecommit
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in codecommit.
Your public key has been saved in codecommit.pub.
アップロードしたSSHキーIDをUserに指定して、以下の様にSSH設定ファイルに追加します。
Host git-codecommit.*.amazonaws.com
IdentityFile ~/.ssh/codecommit
User APKAXXXXXXXXXXXXXXXX
リポジトリをクローンできればオッケーです。
$ git clone ssh://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/hello-codestar
プロジェクトのセットアップまでしばらく待ちます。その間にCloudFormationを確認すると色々作ってくれてるのが確認できます。
プロジェクトの作成が完了し、CodeStarのダッシュボードからCodePipelineの進捗状況が確認できます。その時点でデプロイが完了していれば、アプリケーションのエンドポイントにアクセスするとサンプルページが表示されます!
ソースの変更からデプロイ
ソースを編集して、デプロイまでどんな感じかを見てみます。ソースを変更して、リポジトリにPushします。今回はCongratulations!
をHello AWS CodeStar!
に変更しました。
$ git diff
diff --git a/app/views/hello_page/hello.html.erb b/app/views/hello_page/hello.html.erb
index 6936c8b..c7a1b89 100644
--- a/app/views/hello_page/hello.html.erb
+++ b/app/views/hello_page/hello.html.erb
@@ -46,7 +46,7 @@
<div class="message">
<a class="twitter-link" href="http://twitter.com/home/?status=I%20created%20a%20project%20with%20AWS%20CodeStar!%20%23AWS%20%23AWSCodeStar%20https%3A%2F%2Faws.amazon.com%2Fcodestar"><%= image_tag("tweet.svg", :alt => "twitter logo") %></a>
<div class="text">
- <h1>Congratulations!</h1>
+ <h1>Hello AWS CodeStar!</h1>
<h2>You just created a Ruby on Rails web application.</h2>
</div>
</div>
$ git add app/views/hello_page/hello.html.erb
$ git commit -m "Modify app/views/hello_page/hello.html.erb"
[master 223ec69] Modify app/views/hello_page/hello.html.erb
1 file changed, 1 insertion(+), 1 deletion(-)
$ git push origin master
Counting objects: 6, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (5/5), done.
Writing objects: 100% (6/6), 524 bytes | 524.00 KiB/s, done.
Total 6 (delta 3), reused 0 (delta 0)
To ssh://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/hello-codestar
80b2f1d..223ec69 master -> master
PushされるとCodePipelineが開始され、デプロイまで行ってくれます。
アプリケーションのエンドポイントに再度アクセスすると変更が反映されていました!
まとめ
全くRuby on Railsを知らない私でも数クリックでCD環境を含めた、ウェブアプリケーションを作成できることができました!この手軽さはすごいと思います。また、私自身Codeシリーズの知見があまりないので、テンプレートを参照してCodeBuildやCodeDeployの設定を参考にしてみたいと思います。