AWSの話題を中心に、日々の業務やプログラミングの徒然を綴るエンジニアブログです。

HANDS LAB

HANDS LAB ENGINEERS BLOG

ハンズラボエンジニアブログ

Elastic Beanstalkスケールイン時にlogが消えちゃう問題


倉嶋です。
最近はすっかりPHPerとしてPHP Stormと戯れる日々です。
頭のいいIDE使うと、知識が足りないところが補完されるので頼りっぱなしです。
AWSはまだまだ補完されない領域が多いので、自分で頭を使う必要がありますね。
ということで、Elastic Beanstalkのログ取得でハマったところをご紹介。

ElasticBeanstalkのログ保存方法
↑こちらの記事にあるとおり、Elastic Beanstalkのログは設定すれば定期的に勝手にS3へ格納されるのですが、サーバが減った時に消えちゃいます。
コレは困る。
ということで、シャットダウン時にログ書き出しのスクリプトを動かすようにしました。

Linuxでシャットダウン時に想定した処理が実行されない
こちらを参考に、ランレベル0と6で動作するスクリプトを書きました。

さらに、.ebextensionsで、このスクリプトを配置するスクリプトを用意しました。
この辺がElastic Beanstalk使う時の難しいところですね。

これで、サーバ起動時・終了時に強制的にlogrotate→S3へログを転送することができます。
(logrotateのconfも書き換えていますが、こちらは割愛)

fluentdあたりを使えば悩む必要ないかもですが、この辺りまでElastic Beanstalkのデフォルトで面倒見てほしいなぁ。。。

<追記>

喉もとすぎれば熱さを忘れるわけで、割愛と書いた中にもハマリポイントが。
logroateのデフォルトのconfでは、size 10MB指定になっています。
この場合、10MBを超えていないとlogrotateしません。rotateしないとS3へも配信されないので、sizeを1にしています。


AWS CodeCommitを使ってみた


AWS CodeCommitを使ってみた

はじめまして.ハンズラボ内定者の美代(みしろ)と申します.
私は鹿児島の出身で,今は熊本でコンピュータサイエンスを専攻している修士課程の大学院生です.高校の頃からコンピュータに興味があり,関連資格としては基本情報技術者,応用情報技術者,データベーススペシャリストを持っています.

私がハンズラボを選んだ理由は主に内製とクラウドです.内製については,実際に使う人に近いところで開発し,使ってもらうことによって,手応えを感じやすい環境だと思うからです.さらにクラウドを積極的に利用して本業に集中できるように改善していく姿勢に共感して志望しました.入社後はクラウド環境でのアプリケーションの開発手法を身に着けたいと思います.またモバイルアプリ開発や組み込み開発にも関心があるので,そちらも勉強したいと思います.

さて,修論や研究データはプライベートなリポジトリに置きたいものですが,Gitのホスティングサービスでは,プライベートなリポジトリは有料だったり,リポジトリ数が制限されていたりすることが多いです.AWSのCodeCommitを使えば,プライベートなリポジトリを置くことができます.今回その使い方と,私がどう使っているかについて紹介したいと思います.なおGitHubやBitbucket等のGitホスティングサービスを使ったことのあるという前提で書いています.

CodeCommitとは?

CodeCommitはAWSが提供するGitのホスティングサービスです.Gitは分散型のバージョン管理システムで,リポジトリと呼ばれる場所にソースコードとその変更履歴を保存します.CodeCommitは,Gitのリモートリポジトリを提供するサービスです.

何に使っているか

私がCodeCommitに置いているリポジトリは,主に下記の3つです.

  • 修論のリポジトリ
  • 実験データ
  • プライベートで作ったコードのアーカイブ先

主に下の図のような使い方をしてます.

リモートとローカルリポジトリ

まず昼間,研究室マシンで作業してローカルリポジトリにコミットします.作業が終わるとリモートリポジトリにプッシュして帰宅します.帰宅してから,CodeCommitのリモートリポジトリからノートPCへプルしてきます.

これにより研究室のマシンとCodeCommit,ノートPCの3箇所に最新のデータが残る事になります.この3箇所が同時に故障することはほとんど考えられないので,修論や実験データのデータ消失の心配をしなくても済みます.

料金について

CodeCommitにも無料利用枠があります.しかも12ヶ月超えても条件を満たせば無料枠は続きます.条件は下記の3つです.料金についての詳細は公式サイトの説明をご覧ください.

  • アクティブユーザ 5人
  • ストレージ 50GB / 月
  • Gitリクエスト 10,000 件 / 月

一人で使う分には十分な条件です.3ヶ月ほど使っていますが,無料枠を超えたことはまだありません.公開したくないコードで,すでにクローズしたリポジトリのアーカイブ先としても使えると思います.

使い方

使い方はGitHub等の他のGitホスティングサービスとほとんど同じですが,ユーザ管理をAWS IAMでするようになっています.そのためSSHで接続する前にIAMの設定が必要です.

IAMの設定(アクセス権の付与)

まずIAMを開いて,CodeCommitへアクセス権を付与するIAMユーザを選択するか,新しく作成します.
IAMユーザを選択し,アクセス許可タブを開きます.
ポリシーのアタッチをクリックし,ポリシー一覧の中からAWSCodeCommitFullAccess を選択します.

IAMポリシーのアタッチ

IAMの設定(SSH公開鍵の追加)

続いてIAMユーザにSSH公開鍵を追加します.
認証情報タブをクリックし,一番下のAWS CodeCommitのSSHキー にSSHの公開鍵をアップロードします.公開鍵をアップロードすると,SSHキーIDが発行されます.このSSHキーIDがSSH接続するときのユーザ名になります.

SSH公開鍵のアップロード

交換鍵認証するローカルのSSHの設定に,SSHキーIDを追加します.
CodeCommitへSSH接続する際に,ユーザ名を常にSSHキーIDで接続するように設定します.
~/.ssh/config に下記を書き込みます.

これで準備完了です.

CodeCommit

CodeCommitを開きます.今のところ,バージニア北部のリージョンしかサポートされてないのでリージョンを変更します.

リージョンの変更

後は他のGitホスティングサービスと同じで,リポジトリを作成してクローンします.リポジトリ一覧はこんな感じです.

CodeCommitのダッシュボード

使用した感想

3ヶ月ほど使っていますが,トラブルなく使っています.
GitHubからWikiやIssues等のコミュニティ機能を除いた感じという印象です.

リージョンが離れているためか,リモートリポジトリへの転送速度が遅いです.下図のようにgit pullに5秒ほどかかります.

git pullの時間

おわりに

CodeCommitを一人で使う分には,無料枠内で料金を気にせずにプライベートリポジトリを維持できます.
手頃なバックアップ先として使ってみてはいかがでしょうか?


JAWS-UG 初心者支部#4 でライトニングトーク(LT)をしてみました


ハンズラボの吉田です

自分に一言、さぁ、書けぇ!!!!   

JAWS-UG初心者支部でLTをしてきました。

12734186_10153451165193325_5222529472219657039_n

初LTでかなり緊張しました。
LT内容は失敗談でしたが失敗からいろいろと学んでいきたいです。

LTで最後にボソッと“EC2のインスタンスタイプをチェックしてslackに流す”というお話をしたのですが、せっかくなのでその内容について少し補足しようかと思います。


ところで、LTの内容を3行で説明します。

– 入社した。

– インスタンスタイプを立て間違えた!?

– ごめんなさい。

インスタンスタイプは怖いです。皆様お気をつけください。。。
さて、そんな中少し試してみようと思い書いてみたLambda_functionがこちらです。

続きを読む JAWS-UG 初心者支部#4 でライトニングトーク(LT)をしてみました


  • IT酒場放浪記 記事一覧
  • エンジニア募集中!