<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>klog</title>
    <link rel="alternate" type="text/html" href="http://5net.com/blog/" />
    <link rel="self" type="application/atom+xml" href="http://5net.com/blog/atom.xml" />
    <id>tag:5net.com,2012-12-06:/blog//1</id>
    <updated>2014-04-22T00:37:14Z</updated>
    <subtitle>AWS (Amazon Web Services) を中心にクラウドコンピューティングを追ったり、あとはガジェットやウェブサービスなど。</subtitle>
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type Pro 5.2.2</generator>

<entry>
    <title>EC2の/proc/cpuinfoメモ</title>
    <link rel="alternate" type="text/html" href="http://5net.com/blog/2013/08/ec2-cpuinfo-memo.html" />
    <id>tag:5net.com,2013:/blog//1.85631</id>

    <published>2013-08-16T02:57:32Z</published>
    <updated>2014-04-22T00:37:14Z</updated>

    <summary>EC2のm1.smallとm1.xlargeのcpuinfo(2013年8月16日時点の私の環境)を調べたのでメモ。 ▼m1.small (vCPU:1, ECU:1) $ cat /proc/cpu...</summary>
    <author>
        <name>kaz</name>
        
    </author>
    
    <category term="amazonec2" label="amazon-ec2," scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="amazonwebservices" label="amazon-web-services" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://5net.com/blog/">
        <![CDATA[<p>EC2のm1.smallとm1.xlargeのcpuinfo(2013年8月16日時点の私の環境)を調べたのでメモ。</p>

<p><strong>▼m1.small (vCPU:1, ECU:1)</strong><br />
<blockquote>$ cat /proc/cpuinfo <br />
processor       : 0<br />
vendor_id       : GenuineIntel<br />
cpu family      : 6<br />
model           : 26<br />
model name      : Intel(R) Xeon(R) CPU           E5507  @ 2.27GHz<br />
stepping        : 5<br />
microcode       : 0x11<br />
cpu MHz         : 2266.746<br />
cache size      : 4096 KB<br />
physical id     : 0<br />
siblings        : 1<br />
core id         : 0<br />
cpu cores       : 1<br />
apicid          : 0<br />
initial apicid  : 16<br />
fdiv_bug        : no<br />
hlt_bug         : no<br />
f00f_bug        : no<br />
coma_bug        : no<br />
fpu             : yes<br />
fpu_exception   : yes<br />
cpuid level     : 11<br />
wp              : yes<br />
flags           : fpu de tsc msr pae cx8 sep cmov pat clflush mmx fxsr sse sse2 ss ht nx constant_tsc up nonstop_tsc pni ssse3 sse4_1 sse4_2 popcnt hypervisor<br />
bogomips        : 4533.49<br />
clflush size    : 64<br />
cache_alignment : 64<br />
address sizes   : 40 bits physical, 48 bits virtual<br />
power management:<br />
</blockquote></p>

<p><strong>▼m1.xlarge (vCPU:4, ECU:8)</strong><br />
<blockquote>$ cat /proc/cpuinfo <br />
processor	: 0<br />
vendor_id	: GenuineIntel<br />
cpu family	: 6<br />
model		: 45<br />
model name	: Intel(R) Xeon(R) CPU E5-2650 0 @ 2.00GHz<br />
stepping	: 7<br />
microcode	: 0x70a<br />
cpu MHz		: 1799.999<br />
cache size	: 20480 KB<br />
physical id	: 0<br />
siblings	: 4<br />
core id		: 0<br />
cpu cores	: 1<br />
apicid		: 0<br />
initial apicid	: 2<br />
fpu		: yes<br />
fpu_exception	: yes<br />
cpuid level	: 13<br />
wp		: yes<br />
flags		: fpu de tsc msr pae cx8 sep cmov pat clflush mmx fxsr sse sse2 ss ht syscall nx lm constant_tsc rep_good nopl nonstop_tsc pni pclmulqdq ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes hypervisor lahf_lm arat epb xsaveopt pln pts dtherm<br />
bogomips	: 3599.99<br />
clflush size	: 64<br />
cache_alignment	: 64<br />
address sizes	: 46 bits physical, 48 bits virtual<br />
power management:</p>

<p>processor	: 1<br />
vendor_id	: GenuineIntel<br />
cpu family	: 6<br />
model		: 45<br />
model name	: Intel(R) Xeon(R) CPU E5-2650 0 @ 2.00GHz<br />
stepping	: 7<br />
microcode	: 0x70a<br />
cpu MHz		: 1799.999<br />
cache size	: 20480 KB<br />
physical id	: 0<br />
siblings	: 4<br />
core id		: 0<br />
cpu cores	: 1<br />
apicid		: 0<br />
initial apicid	: 2<br />
fpu		: yes<br />
fpu_exception	: yes<br />
cpuid level	: 13<br />
wp		: yes<br />
flags		: fpu de tsc msr pae cx8 sep cmov pat clflush mmx fxsr sse sse2 ss ht syscall nx lm constant_tsc rep_good nopl nonstop_tsc pni pclmulqdq ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes hypervisor lahf_lm arat epb xsaveopt pln pts dtherm<br />
bogomips	: 3599.99<br />
clflush size	: 64<br />
cache_alignment	: 64<br />
address sizes	: 46 bits physical, 48 bits virtual<br />
power management:</p>

<p>processor	: 2<br />
vendor_id	: GenuineIntel<br />
cpu family	: 6<br />
model		: 45<br />
model name	: Intel(R) Xeon(R) CPU E5-2650 0 @ 2.00GHz<br />
stepping	: 7<br />
microcode	: 0x70a<br />
cpu MHz		: 1799.999<br />
cache size	: 20480 KB<br />
physical id	: 0<br />
siblings	: 4<br />
core id		: 0<br />
cpu cores	: 1<br />
apicid		: 0<br />
initial apicid	: 2<br />
fpu		: yes<br />
fpu_exception	: yes<br />
cpuid level	: 13<br />
wp		: yes<br />
flags		: fpu de tsc msr pae cx8 sep cmov pat clflush mmx fxsr sse sse2 ss ht syscall nx lm constant_tsc rep_good nopl nonstop_tsc pni pclmulqdq ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes hypervisor lahf_lm arat epb xsaveopt pln pts dtherm<br />
bogomips	: 3599.99<br />
clflush size	: 64<br />
cache_alignment	: 64<br />
address sizes	: 46 bits physical, 48 bits virtual<br />
power management:</p>

<p>processor	: 3<br />
vendor_id	: GenuineIntel<br />
cpu family	: 6<br />
model		: 45<br />
model name	: Intel(R) Xeon(R) CPU E5-2650 0 @ 2.00GHz<br />
stepping	: 7<br />
microcode	: 0x70a<br />
cpu MHz		: 1799.999<br />
cache size	: 20480 KB<br />
physical id	: 0<br />
siblings	: 4<br />
core id		: 0<br />
cpu cores	: 1<br />
apicid		: 0<br />
initial apicid	: 2<br />
fpu		: yes<br />
fpu_exception	: yes<br />
cpuid level	: 13<br />
wp		: yes<br />
flags		: fpu de tsc msr pae cx8 sep cmov pat clflush mmx fxsr sse sse2 ss ht syscall nx lm constant_tsc rep_good nopl nonstop_tsc pni pclmulqdq ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes hypervisor lahf_lm arat epb xsaveopt pln pts dtherm<br />
bogomips	: 3599.99<br />
clflush size	: 64<br />
cache_alignment	: 64<br />
address sizes	: 46 bits physical, 48 bits virtual<br />
power management:<br />
</blockquote></p>

<p>以上。<br />
</p>]]>
        
    </content>
</entry>

<entry>
    <title>terminatedなインスタンスを非表示にするChromeアドオン（AWS温泉ハッカソン） #jawspa #jawsug</title>
    <link rel="alternate" type="text/html" href="http://5net.com/blog/2013/02/toggle-terminated-instance-chrome-extension.html" />
    <id>tag:5net.com,2013:/blog//1.85630</id>

    <published>2013-02-09T08:10:49Z</published>
    <updated>2013-02-09T12:13:31Z</updated>

    <summary>ついにやってきましたAWS温泉ハッカソン。 自分の考えてきてネタはいくつかあるがChromeアドオン作りたい熱が高まってきたので、Management Consoleの表示の制御をしようと思いつき、「...</summary>
    <author>
        <name>kaz</name>
        
    </author>
    
        <category term="technology" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="amazonec2" label="amazon-ec2" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="amazonwebservices" label="amazon-web-services" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="chrome" label="chrome" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://5net.com/blog/">
        <![CDATA[<p><img src="http://media.amazonwebservices.com/logo_aws.gif" alt="amazon web services logo" align="right"></p>ついにやってきました<a href="http://www.zusaar.com/event/486003">AWS温泉ハッカソン</a>。

<p>自分の考えてきてネタはいくつかあるがChromeアドオン作りたい熱が高まってきたので、Management Consoleの表示の制御をしようと思いつき、「コンソールあるある」の一つ「terminatedなインスタンスがじゃま」を解決するアドオンを書きます。</p>

<p>まずはドットインストールを見るべし！これすばらしいです。ざっと把握できてすぐにコード書こうという気にさせてくれるレッドブル的なコンテンツすばらしい。</p>

<p>■<a href="http://dotinstall.com/lessons/basic_chrome_v2">Google Chrome拡張機能入門 (全20回) - プログラミングならドットインストール</a></p>

<p>どんな風に開発するかは後にして、インストールがうまくいくとこのようなボタンが出現します。</p>

<p><a href="http://www.flickr.com/photos/kaz_goto/8458139420/" title="Chromeアドオン アイコン by kazgoto, on Flickr"><img src="http://farm9.staticflickr.com/8523/8458139420_3e5d5851e2_o.png" width="347" height="230" alt="Chromeアドオン アイコン"></a></p>]]>
        <![CDATA[<p>ボタンは押すごとにterminatedなインスタンスの表示・非表示の切り替えができます。</p>

<p><a href="http://www.flickr.com/photos/kaz_goto/8457051867/" title="terminated表示中 by kazgoto, on Flickr"><img src="http://farm9.staticflickr.com/8530/8457051867_050ee81a25.jpg" width="500" height="358" alt="terminated表示中"></a></p>

<p>クリックすると</p>

<p><a href="http://www.flickr.com/photos/kaz_goto/8457051805/" title="terminated非表示 by kazgoto, on Flickr"><img src="http://farm9.staticflickr.com/8519/8457051805_48fb656d4d.jpg" width="500" height="358" alt="terminated非表示"></a></p>

<p>こんな感じで切り替えられます。<br />
これでプレゼンやハンズオンなどでデモするときにも恥ずかしいインスタンスを隠すことができますｗ</p>

<p>今のコンソールだと実はフィルタが充実していて...<br />
こんなものでも使ってみたい方がいたらこちらからどうぞ→ <a href="http://5net.com/blog/2013/02/09/hide-terminated-instances.crx">Hide Terminated Instances Chrome Extension</a></p>

<p>はー、勉強になった。さて、風呂にでも入るか。</p>

<p>【追記】<br />
ソースコードがどうなっているか、少し解説。</p>

<pre class="brush: shell">
- manifest.json
- icon.png
- hide.js
- jquery-1.9.1.min.js
</pre>

<p>まずアドオンを作るにはおきまりのマニフェストファイルminifest.jsonを作ります。<br />
まず <em>permission</em> にコンソールのURLを指定して動作許可します。実装したJavaScriptは hide.js なので読み込む指定を <em>background</em> に。また今回はjQueryを利用したいので content_scripts で指定してます。</p>

<pre class="brush: js">
{
  "name": "Hide Terminated Instances",
  "description": "Hide terminated instances in AWS Management Console.",
  "version": "0.1",
  "permissions": [
    "tabs", "https://console.aws.amazon.com/ec2/*" // EC2のコンソールでのみ許可
  ],
  "background": { "scripts": [ "hide.js" ] },      // 自作の切り替えスクリプトを読み込む
  "browser_action": {
    "default_icon": "icon.png",                    // アイコン画像の指定
    "default_title": "Hide Terminated Instances"
  },
  "content_scripts": [
  	{
	  	"matches": [ "https://console.aws.amazon.com/*" ], 
	  	"js": [ "jquery-1.9.1.min.js" ],           // jQuery読み込み
	  	"run_at": "document_start"
  	}
  ],
  "manifest_version": 2
}
</pre>

<p>アイコンは適当に縦横 19px で作っておきます。あとは切り替え機能本体を定義している hide.js を作ります。</p>

<pre class="brush: js; highlight: [1, 2];">
chrome.browserAction.onClicked.addListener(function(tab) {
	chrome.tabs.executeScript(null, {
	code: "if ( localStorage['terminated_hidden'] == 0 ) { $('td.yui-dt-col-instanceState div').each(function(){ if ($(this).text().match(/terminated/i)) { $(this).parent().parent().hide(); localStorage['terminated_hidden'] = 1;	} }) } else { $('td.yui-dt-col-instanceState div').each(function(){	if ($(this).text().match(/terminated/i)) { $(this).parent().parent().show(); localStorage['terminated_hidden'] = 0; } }) }"
	});
});
 
localStorage['terminated_hidden'] = 0;
</pre>

<p>1行目でボタンクリック時のイベントハンドラを登録。2行目の <em>chrome.tabs.executeScript</em> で実際の動作をJavaScriptで実装しています。いくつか<a href="http://developer.chrome.com/extensions/tabs.html#type-InjectDetails">方法があります</a>が、今回は <em>code</em> を使って直接コードを文字列で書いてます。（もっと賢く書く方法を知りたい）</p>

<p>3行目のコードですが、まずトグルするために状態保持をローカルストレージを利用して <em>localStorage['terminated_hidden']</em> をチェックします。terminatedな行を見極めるためにjQueryのセレクタとして「<em>td.yui-dt-col-instanceState div</em>」を指定し、子要素のテキストが「terminated」とマッチするかチェックしてます。マッチしたら行に対応する要素に遡って <em>hide()</em> を実行すると消えるわけですね。この辺の要素を探すところはFirebugやChromeのDeveloper Toolを使ってやるのが良いでしょう。<br />
</p>]]>
    </content>
</entry>

<entry>
    <title>jqを使ってフィードをいじる</title>
    <link rel="alternate" type="text/html" href="http://5net.com/blog/2013/01/format-feed-using-jq.html" />
    <id>tag:5net.com,2013:/blog//1.85244</id>

    <published>2013-01-29T04:17:11Z</published>
    <updated>2013-01-29T05:08:59Z</updated>

    <summary> 前回作った「AWS関連ブログ記事Widget」用のフィードを使って、AWS+パートナー関連のブログ記事リストを定期的にメール送信する方法を実装してみた。 以前はPlaggerを使ってやっていたが最近...</summary>
    <author>
        <name>kaz</name>
        
    </author>
    
        <category term="technology" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://5net.com/blog/">
        <![CDATA[<p>
前回作った「<a href="http://5net.com/blog/2013/01/aws-related-blog-entry-widget.html">AWS関連ブログ記事Widget</a>」用のフィードを使って、AWS+パートナー関連のブログ記事リストを定期的にメール送信する方法を実装してみた。
</p>

<p>
以前はPlaggerを使ってやっていたが最近メンテナンスされてないのか、そもそも最新情報が乏しくインストールに苦労するのもアレなので、Yahoo!の<a href="http://pipes.yahoo.com/pipes/">Pipes</a>を使っていたのでJSON出力も対応していることもあり、最近AWS CLIの出力処理のために注目された<a href="http://stedolan.github.com/jq/">jq</a>を使ってみた。
</p>

<p>
ちなみにjqの使い方や導入方法などについては以下のページを参考にしてください。
</p>

<p>
<a href="http://d.hatena.ne.jp/shot6/20130102#1357063758">http://d.hatena.ne.jp/shot6/20130102#1357063758</a><br />
<a href="http://dev.classmethod.jp/cloud/aws-command-line-tool-python/">http://dev.classmethod.jp/cloud/aws-command-line-tool-python/</a><br />
<a href="http://blog.cloudpack.jp/2013/01/aws-news-jq-rpm-centos-63.html">http://blog.cloudpack.jp/2013/01/aws-news-jq-rpm-centos-63.html</a><br />

</p>]]>
        <![CDATA[<p>
メール本文ようにともかくテキストしたい。できるだけjqでフォーマットすることにしてチャレンジするとこんな感じにかけることがわかりました。
</p>

<pre class="brush:bash">
curl 'http://pipes.yahoo.com/pipes/pipe.run?_id=56ffe606fb3d43330a2e6df31783d8b9&amp;_render=json&amp;dateinput1=1+week+ago' \
 | ./jq '
   def s(i): "[" + i.date + "] " + i.title + "\n" + i.link + "\n";
   def z(n): if n|tonumber < 10 then "0" + n else n end;
   def d(p): p.year + "." + z(p.month) + "." + z(p.day);
   .value | .items[] | {title, link, date: d(.["y:published"])} | s(.)
 ' \
 | sed -e 's/\"//g' | sed -e 's/\\n/\n/g'
</pre>

<p>
jqでも関数は作れるようなので、3つほど作って再利用。残念だけど、「"」削除と改行処理が実現できなかったのでsedで対処。
</p>

<p>
上記コマンドを実行すると以下のような出力を得られます。あとはmailコマンドで送信！<br />
1週間に一度実行すれば過去1週間分の記事をまとめて共有することができます。
</p>

<pre class="brush:bash">
[2013.01.29] Glacierで思い出よ永遠に。 | サーバーワークス エンジニアブログ
http://blog.serverworks.co.jp/tech/2013/01/29/glacier/

[2013.01.29] EC2のセキュリティグループを複製する | サーバーワークス柳瀬くん
http://okochang.hatenablog.jp/entry/2013/01/29/102437

[2013.01.29] 第2回福岡Debian勉強会に参加した | サーバーワークス小室さん
http://feedproxy.google.com/~r/popowa/FNwq/~3/GiZnPH46tc8/2debian.html

[2013.01.29] 2012 AWSスタートアップチャレンジの受賞者が決定! | AWS Japan Blog
http://aws.typepad.com/aws_japan/2013/01/congratulations-to-the-winners-of-the-2012-aws-start-up-challenge.html

[2013.01.28] Congratulations to the Winners of the 2012 AWS Start-Up Challenge | AWS Blog
http://feedproxy.google.com/~r/AmazonWebServicesBlog/~3/3AMSs2UuGSM/congratulations-to-the-winners-of-the-2012-aws-start-up-challenge.html

[2013.01.28] AWS Week in Review - January 21, 2013 | AWS Blog
http://feedproxy.google.com/~r/AmazonWebServicesBlog/~3/Q_LF2fKl9vs/aws-week-in-review-january-21-2013.html

[2013.01.28] Ruby で URL を デコードする | サーバーワークス小室さん
http://feedproxy.google.com/~r/popowa/FNwq/~3/Bu0WbaKR6TE/ruby-url.html

[2013.01.28] PDFの一部だけを簡単に切り出す方法（Mac版） | サーバーワークス エンジニアブログ
http://blog.serverworks.co.jp/tech/2013/01/28/export-selected-pdf-mac-version/

[2013.01.28] EC2上でCentOSを使う 〜 AWS Marketplaceを利用してみる | クラスメソッド開発ブログ ≫ クラウド
http://dev.classmethod.jp/cloud/aws/centos-on-ec2-by-aws-marketplace/

[2013.01.26] CROSS2013で頂いた資料をじっくり読んでみる | サーバーワークス小室さん
http://feedproxy.google.com/~r/popowa/FNwq/~3/zotr-zvBLsA/cross2013.html

[2013.01.26] 第二回明星和楽 | サーバーワークス小室さん
http://feedproxy.google.com/~r/popowa/FNwq/~3/Jf6CceZhHvE/blog-post_2183.html

[2013.01.26] オイル/ガス業界のデーターセンター | サーバーワークス小室さん
http://feedproxy.google.com/~r/popowa/FNwq/~3/PfEs7cSetDY/blog-post_26.html

[2013.01.26] クラウドもモダンアプリもどちらも過渡期なので、総力戦でやりましょうぜという話 | AWS荒木さん
http://debiancdn.wordpress.com/2013/01/26/%e3%82%af%e3%83%a9%e3%82%a6%e3%83%89%e3%82%82%e3%83%a2%e3%83%80%e3%83%b3%e3%82%a2%e3%83%97%e3%83%aa%e3%82%82%e3%81%a9%e3%81%a1%e3%82%89%e3%82%82%e9%81%8e%e6%b8%a1%e6%9c%9f%e3%81%aa%e3%81%ae%e3%81%a7/

[2013.01.25] ワンクリックでメルマガ退会出来たらいいと思う | サーバーワークス小室さん
http://feedproxy.google.com/~r/popowa/FNwq/~3/M-XZ9cJE-LY/blog-post_25.html

[2013.01.24] The AWS Report - Michelle Munson of Aspera | AWS Blog
http://feedproxy.google.com/~r/AmazonWebServicesBlog/~3/suAtbDna1L4/the-aws-report-michelle-munson-of-aspera.html

[2013.01.22] Amazon LinuxからTreasure Dataを使ってみる | クラスメソッド開発ブログ ≫ クラウド
http://dev.classmethod.jp/cloud/amazon-linux-treasure-data/

[2013.01.22] 【AWS発表】 インメモリコンピューティングのためのEC2 - ハイメモリクラスタエイトエクストララージ | AWS Japan Blog
http://aws.typepad.com/aws_japan/2013/01/ec2-for-in-memory-computing-the-high-memory-cluster-eight-extra-large-instance.html

[2013.01.22] AWS上のWindowsインスタンスにWordPressをインストールしてみる　～その2 EC2 + RDS for MySQL環境でのインストール～ | AWS源太さん
http://gentaws.wordpress.com/2013/01/22/aws%e4%b8%8a%e3%81%aewindows%e3%82%a4%e3%83%b3%e3%82%b9%e3%82%bf%e3%83%b3%e3%82%b9%e3%81%abwordpress%e3%82%92%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab%e3%81%97%e3%81%a6%e3%81%bf%e3%828-2/

[2013.01.22] EC2 for In-Memory Computing - The High Memory Cluster Eight Extra Large Instance | AWS Blog
http://feedproxy.google.com/~r/AmazonWebServicesBlog/~3/COTFC2i8-hY/ec2-for-in-memory-computing-the-high-memory-cluster-eight-extra-large.html
</pre>
]]>
    </content>
</entry>

<entry>
    <title>AWS関連ブログ記事Widget</title>
    <link rel="alternate" type="text/html" href="http://5net.com/blog/2013/01/aws-related-blog-entry-widget.html" />
    <id>tag:5net.com,2013:/blog//1.85243</id>

    <published>2013-01-16T09:42:43Z</published>
    <updated>2013-01-16T09:49:30Z</updated>

    <summary> TwitterやFacebookからの情報がプライマリになって、ブログをフィード通じて読むことがなくなったのだけど、特定目的のためにはフィードを活用した方が良いケースができたのでまとめてみた。 要す...</summary>
    <author>
        <name>kaz</name>
        
    </author>
    
        <category term="technology" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="amazonwebservices" label="amazon-web-services" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://5net.com/blog/">
        <![CDATA[<p>
TwitterやFacebookからの情報がプライマリになって、ブログをフィード通じて読むことがなくなったのだけど、特定目的のためにはフィードを活用した方が良いケースができたのでまとめてみた。
</p>

<p>
要するにcloudpackメンバーが普段から見ておくべきブログ記事一覧です。
</p>

<script src='http://feedgrabbr.com/widget/fgwidget.js'></script>
<div class="feedgrabbr_widget" fgid="f0d8cba0f6e32de144b67a58c"></div>

<p>
うーむ、Widgetじゃなくて単純な記事一覧がいいなぁ。<br />

</p>]]>
        
    </content>
</entry>

<entry>
    <title>2012年振り返り＋2013年抱負</title>
    <link rel="alternate" type="text/html" href="http://5net.com/blog/2013/01/look-back-2012-and-wish-for-2013.html" />
    <id>tag:5net.com,2013:/blog//1.85242</id>

    <published>2013-01-08T10:24:55Z</published>
    <updated>2013-01-08T10:59:52Z</updated>

    <summary> いよいよ2013年が始まりました。今年も仕事もプライベートも、むしろ公私混同でがんばっていきたい所存でございます。 そういえば2012年総括するのをわすれてました。昨年もcloudpack事業展開に...</summary>
    <author>
        <name>kaz</name>
        
    </author>
    
        <category term="diary" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="amazonwebservices" label="amazon-web-services" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="cloudpack" label="cloudpack" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://5net.com/blog/">
        <![CDATA[<p>
いよいよ2013年が始まりました。今年も仕事もプライベートも、むしろ公私混同でがんばっていきたい所存でございます。
</p>

<p>
そういえば2012年総括するのをわすれてました。昨年もcloudpack事業展開にほとんどの時間を費やしたといっても過言ではありません。その過程で全国各地のJAWS-UG勉強会や海外でのイベントにも参加したこともあり、出張も多く体調管理に気を配る毎日でした。
</p>

<p>
出張を振り返ってみると...<br />

</p>]]>
        <![CDATA[<table align="center">
<thead>
<tr><th>日程</th><th>行き先</th><th>用件</th></tr>
</thead>
<tbody>
<tr>
<td>1/20(金)〜1/21(土)</td>
<td>金沢</td>
<td>JAWS-UG北陸</td>
</tr>
<tr>
<td>2/8(水)〜2/11(土)</td>
<td>福岡＋熊本</td>
<td>JAWS-UG福岡、JAWS-UG熊本</td>
</tr>
<tr>
<td>2/14(火)〜2/15(水)</td>
<td>札幌</td>
<td>JAWS-UG札幌</td>
</tr>
<tr>
<td>2/18(土)〜2/19(日)</td>
<td>大阪</td>
<td>JAWS-UG大阪</td>
</tr>
<tr>
<td>2/21(火)〜2/22(水)</td>
<td>仙台</td>
<td>JAWS-UG仙台</td>
</tr>
<tr>
<td>3/7(水)〜3/9(金)</td>
<td>大阪</td>
<td>Cloud Days Osaka 2012</td>
</tr>
<tr>
<td>3/30(金)〜3/31(土)</td>
<td>長崎</td>
<td>JAWS-UG長崎</td>
</tr>
<tr>
<td>4/12(木)〜4/12(木)</td>
<td>大阪</td>
<td>クライアント訪問</td>
</tr>
<tr>
<td>4/17(火)〜4/22(日)</td>
<td>New York</td>
<td>AWS Summit 2012 NYC</td>
</tr>
<tr>
<td>4/25(水)〜4/29(日)</td>
<td>沖縄</td>
<td>JAWS-UG沖縄</td>
</tr>
<tr>
<td>5/16(水)〜5/17(木)</td>
<td>札幌</td>
<td>JAWS-UG札幌</td>
</tr>
<tr>
<td>5/22(火)〜5/23(水)</td>
<td>大阪</td>
<td>クライアント訪問</td>
</tr>
<tr>
<td>6/2(土)〜6/3(日)</td>
<td>大阪</td>
<td>JAWS-UG大阪</td>
</tr>
<tr>
<td>6/6(水)〜6/7(木)</td>
<td>神戸</td>
<td>JAWS-UG神戸</td>
</tr>
<tr>
<td>6/19(火)〜6/19(火)</td>
<td>名古屋</td>
<td>クライアント訪問</td>
</tr>
<tr>
<td>6/26(火)〜6/27(水)</td>
<td>名古屋</td>
<td>クライアント訪問</td>
</tr>
<tr>
<td>7/30(月)〜7/31(火)</td>
<td>名古屋</td>
<td>クライアント訪問</td>
</tr>
<tr>
<td>7/31(火)〜8/1(水)</td>
<td>名古屋</td>
<td>クライアント訪問</td>
</tr>
<tr>
<td>8/29(水)〜8/29(水)</td>
<td>名古屋</td>
<td>クライアント訪問</td>
</tr>
<tr>
<td>8/30(木)〜8/30(木)</td>
<td>つくば</td>
<td>クライアント訪問</td>
</tr>
<tr>
<td>9/7(金)〜9/10(月)</td>
<td>福岡</td>
<td>明星和楽参加</td>
</tr>
<tr>
<td>9/24(月)〜9/24(月)</td>
<td>名古屋</td>
<td>クライアント訪問</td>
</tr>
<tr>
<td>10/6(土)〜10/7(日)</td>
<td>名古屋</td>
<td>JAWS-UG名古屋</td>
</tr>
<tr>
<td>10/15(月)〜10/15(月)</td>
<td>名古屋</td>
<td>クライアント訪問</td>
</tr>
<tr>
<td>10/16(火)〜10/21(日)</td>
<td>福岡＋熊本＋鹿児島</td>
<td>Cloud Days Fukuoka 2012、クライアント訪問、JAWS-UG鹿児島</td>
</tr>
<tr>
<td>11/6(火)〜11/7(水)</td>
<td>名古屋</td>
<td>クライアント訪問</td>
</tr>
<tr>
<td>11/8(木)〜11/8(木)</td>
<td>名古屋</td>
<td>クライアント訪問</td>
</tr>
<tr>
<td>11/11(日)〜11/13(火)</td>
<td>札幌</td>
<td>JAWS-UG札幌</td>
</tr>
<tr>
<td>11/17(土)〜11/19(月)</td>
<td>沖縄</td>
<td>JAWS-UG沖縄</td>
</tr>
<tr>
<td>11/26(月)〜12/2(日)</td>
<td>Las Vegas＋Seattle</td>
<td>AWS re:Invent 2012＋Amazon本社訪問</td>
</tr>
<tr>
<td>12/11(火)〜12/14(金)</td>
<td>San Francisco</td>
<td>UP 2012 Cloud Computing Conference</td>
</tr>
<tr>
<td>12/15(土)〜12/17(月)</td>
<td>大阪</td>
<td>JAWS-UG大阪＋クライアント訪問</td>
</tr>
</tbody>
</table>

<p>
計32回、83日間！！
</p>

<p>
cloudpackは日本の小さいなサービスブランドでしかない、また日本におけるAWS市場は潜在的な規模に比べてまだまだ小さすぎるため一体となって拡大していく必要があり、そのためには裾野を広げていく努力が必要であると感じてます。これはcloudpackをはじめて3年以上経ってますがずっと変わってません。そのための開発者および利用者むけのコミュニティ活動は重要な位置づけとなっていて過去一年も変わらず多くの時間を割いてます。
</p>

<p>
おかげさまで一昨年につづき2度目のAWS SAMURAIの称号を頂きました。時間的・体力に厳しいのでそろそろエヴァンジェリスト二号を立てたいと感じながらも、全国各地行った先々でさまざまな交流があり毎回仕事＋楽しみとして続けて行きたいと感じているので、できる限り続けて行きたい思ってます。
</p>

<p>
さて今年ですが、cloudpackとしては市場内での立ち位置よりもクオリティを上げることに努力したいと思ってます。そのための内部的なポイントは多々ありますが、まずすべてクリアを前提として瞬発力のある筋肉質な体制を完成させ、その次のステップとして飛躍できるような素地を作ってから暴れまくる流れを思い描いてます。
</p>

<p>
具体的には、技術一番、運用経験一番、新しいエリアへの対応力一番を目指したいですね。
</p>

<p>
個人的には、同質なタイプの人材育成、最前線に立ちながらもワークライフバランスを重視できる仕組み、を実現したいと考えてます。そして、変化が多く、勉強（吸収）できて、今成功が実感できる、クラウド関連業界やcloudpackに関わる人が増えてくれるのを願ってます。楽しすぎるのでｗ
</p>

<p>
協力してくれる方がいればぜひお声がけくださいませ！
</p>]]>
    </content>
</entry>

<entry>
    <title>EC2/RDSインスタンス名・日本語名・英語名・cloudpackプラン名対応表</title>
    <link rel="alternate" type="text/html" href="http://5net.com/blog/2012/12/ec2-rds-instance-name-matrix.html" />
    <id>tag:5net.com,2012:/blog//1.85241</id>

    <published>2012-12-30T14:22:59Z</published>
    <updated>2012-12-30T14:50:43Z</updated>

    <summary><![CDATA[ つい先日も以下のように発言したのですが、 インスタンスタイプ、日本語名と英語名（タイプID？）とスペックがいまいち頭で一致してない問題勃発... #jawsug&mdash; Kazutaka Go...]]></summary>
    <author>
        <name>kaz</name>
        
    </author>
    
        <category term="technology" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="amazonec2" label="amazon-ec2" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="amazonwebservices" label="amazon-web-services" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="cloudpack" label="cloudpack" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://5net.com/blog/">
        <![CDATA[<p><img src="http://media.amazonwebservices.com/logo_aws.gif" alt="amazon web services logo" align="right"></p>
つい先日も以下のように発言したのですが、

<blockquote class="twitter-tweet tw-align-center"><p>インスタンスタイプ、日本語名と英語名（タイプID？）とスペックがいまいち頭で一致してない問題勃発... <a href="https://twitter.com/search/%23jawsug">#jawsug</a></p>&mdash; Kazutaka Goto ☁ 後藤和貴 (@kaz_goto) <a href="https://twitter.com/kaz_goto/status/280935131030646785" data-datetime="2012-12-18T07:18:49+00:00">December 18, 2012</a></blockquote>
<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>

<p>
EC2を起動したり見積もりしたりするときに紹介ページやManagement Consoleなどを行き来しているとインスタンス名／日本語名／英語名＋cloudpackでのプラン名間の対応が難しくてイライラすることが何度もありました。<br />

</p>]]>
        <![CDATA[<p>
年末最終日納会直前だというのにイラッと来てしまったのでついカッとなってEC2/RDSの一覧表を作成してしました。誰かの役に立てばと思い公開します。全体像を見る場合は<a href="https://docs.google.com/spreadsheet/pub?key=0ArTGXWbzuNpudEwzZHp2N3J4RzZNSWZCbmNJellqUEE&single=true&gid=0&output=html">こちら</a>へ。（ついでにcloudpackのプラン名も入ってますｗ）
</p>

<p>
<iframe width='100%' height='550' frameborder='0' src='https://docs.google.com/spreadsheet/pub?key=0ArTGXWbzuNpudEwzZHp2N3J4RzZNSWZCbmNJellqUEE&single=true&gid=0&output=html&widget=true'></iframe><br />

</p>]]>
    </content>
</entry>

<entry>
    <title>AWS CLIを使ってみる</title>
    <link rel="alternate" type="text/html" href="http://5net.com/blog/2012/12/using-aws-cli.html" />
    <id>tag:5net.com,2012:/blog//1.85240</id>

    <published>2012-12-25T07:18:35Z</published>
    <updated>2012-12-25T14:16:15Z</updated>

    <summary>先日AWS Command Line Interfaceなるものが発表されました。Python向けコマンドラインインターフェースとのことですが、別にたいした発表でも...と思ったのですが面白そうなので...</summary>
    <author>
        <name>kaz</name>
        
    </author>
    
        <category term="technology" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="amazonwebservices" label="amazon-web-services" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="python" label="python" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://5net.com/blog/">
        <![CDATA[<p><img src="http://media.amazonwebservices.com/logo_aws.gif" alt="amazon web services logo" align="right"></p>先日<a href="https://aws.amazon.com/jp/cli/">AWS Command Line Interface</a>なるものが発表されました。Python向けコマンドラインインターフェースとのことですが、別にたいした発表でも...と思ったのですが面白そうなので試してみました。

<p>自分の場合はMacにPythonがセットアップ済みなので、あとの導入は簡単です。</p>

<pre class="brush:bash">
$ sudo easy_install pip
$ sudo pip install awscli
</pre>

<p>あとは.bash_profileに設定ファイルパスの環境変数追加。</p>

<pre class="brush:bash">
AWS_CONFIG_FILE=/path/to/awscli.conf
export AWS_CONFIG_FILE
</pre>

<p>加えて設定ファイル設置。</p>

<pre class="brush:bash">
$ cat /path/to/awscli.conf 
[default]
aws_access_key_id=&lt;Access Key Id&gt;
aws_secret_access_key=&lt;Secret Access Key&gt;
region=ap-northeast-1
</pre>]]>
        <![CDATA[<p>これでコマンドが実行できるようになります。</p>

<pre class="brush:bash">
$ aws help
 
aws
    The AWS Command Line Interface is a unified tool that provides a consistent interface for
    interacting with all parts of AWS.
 
    aws [options] service operation [parameters]
 
    Use 'aws service help' for information on a specific service.
 
    Available services:
      * iam
      * ses
      * rds
      * elb
      * autoscaling
      * cloudwatch
      * sqs
      * cloudformation
      * elasticbeanstalk
      * sns
      * sts
      * directconnect
      * emr
      * ec2
 
    Options
        --output &lt;output_format&gt;
          * json
          * text
        --region &lt;region_name&gt;
          * us-east-1
          * ap-northeast-1
          * sa-east-1
          * ap-southeast-1
          * ap-southeast-2
          * us-west-2
          * us-west-1
          * eu-west-1
        --version
            Display the version of this tool
        --debug
            Turn on debug logging
        --profile &lt;profile_name&gt;
            Use a specific profile from your credential file
        --endpoint-url &lt;endpoint_url&gt;
            Override service's default URL with the given URL
</pre>

<p>bashユーザーにはウレシイ仕掛けがあります。</p>

<pre class="brush:bash">
$ complete -C aws_completer aws
$ aws [TAB]
autoscaling       directconnect     elb               rds               sqs
cloudformation    ec2               emr               ses               sts
cloudwatch        elasticbeanstalk  iam               sns               
$ aws 
</pre>

<p>そうです。<em>complete -C aws_completer aws</em>とするとサブコマンドのオートコンプリートが効くのです！なんかイイ感じ♫</p>

<p>ところでコマンドの出力結果はJSONみたいですねぇ。簡易的な変更管理に使えそうなのでやってみました。セキュリティグループの設定を一部削除した前後を保存して、gitでバージョン管理してみる例です。</p>

<pre class="brush:bash">
$ aws ec2 describe-security-groups &gt; security-groups.json
$ git add security-groups.json 
$ git commit -m "First version"
[master 26376c0] First version
 1 file changed, 721 insertions(+)
 create mode 100644 security-groups.json
$ git push
Username for 'https://github.com': kazgoto
Password for 'https://kazgoto@github.com': 
Counting objects: 4, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 1.81 KiB, done.
Total 3 (delta 0), reused 0 (delta 0)
To https://github.com/kazgoto/awscli-test.git
   1c15bed..26376c0  master -&gt; master
 
$ aws ec2 describe-security-groups &gt; security-groups.json
$ git diff
diff --git a/security-groups.json b/security-groups.json
index b625310..3674ffe 100644
--- a/security-groups.json
+++ b/security-groups.json
@@ -64,6 +64,17 @@
                     ], 
                     "groups": [], 
                     "fromPort": 80
+                }, 
+                {
+                    "toPort": 8080, 
+                    "ipProtocol": "tcp", 
+                    "ipRanges": [
+                        {
+                            "cidrIp": "0.0.0.0/0"
+                        }
+                    ], 
+                    "groups": [], 
+                    "fromPort": 8080
                 }
             ], 
             "groupName": "default", 
@@ -717,5 +728,5 @@
             "groupDescription": "op-ec2"
         }
     ], 
-    "requestId": "05b37412-4c1b-443c-aa0e-e8e1c405dfe8"
+    "requestId": "104a76f5-3134-4da1-8b2b-5185b1d565f2"
 }
$ git commit -a -m "Second version"
[master 04730be] Second version
 1 file changed, 12 insertions(+), 1 deletion(-)
$ git push
Username for 'https://github.com': kazgoto
Password for 'https://kazgoto@github.com': 
Counting objects: 5, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 404 bytes, done.
Total 3 (delta 1), reused 0 (delta 0)
To https://github.com/kazgoto/awscli-test.git
   26376c0..04730be  master -&gt; master
</pre>

<p>githubでみるとこんな状態で変更点が見やすい。</p>

<p><a href="http://www.flickr.com/photos/kaz_goto/8306644104/" title="Diff of security groups by kazgoto, on Flickr"><img src="http://farm9.staticflickr.com/8357/8306644104_12a6b4f1bc_z.jpg" width="640" height="336" alt="Diff of security groups"></a></p>

<p>githubでみるほどでもないですが、何か重要な変更を行うときにパッと見で確認できるのがいいなぁと、思いました。<br />
</p>]]>
    </content>
</entry>

<entry>
    <title>【CDP Advent Calendar 2012】Self Server Registrationパターン(仮称)</title>
    <link rel="alternate" type="text/html" href="http://5net.com/blog/2012/12/cdp-advent-calendar-2012-self-server-registration.html" />
    <id>tag:5net.com,2012:/blog//1.85239</id>

    <published>2012-12-17T12:35:31Z</published>
    <updated>2012-12-17T16:20:52Z</updated>

    <summary> 17日目担当のゴトウです。当初は勢い余って「こんなCDPはいやだ」というタイトルで参戦しようとしたCDP Advent Calendarですが、みなさんマジメにやられているようなのでひよってしまい、...</summary>
    <author>
        <name>kaz</name>
        
    </author>
    
        <category term="technology" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="amazonsimpledb" label="amazon-simpledb" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="amazonwebservices" label="amazon-web-services" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="clouddesignpattern" label="cloud-design-pattern" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://5net.com/blog/">
        <![CDATA[<p><img src="http://farm9.staticflickr.com/8503/8281303806_e3968f907d_o.png" align="right" width="220" height="220" alt="CDP logo" /><br />
17日目担当のゴトウです。当初は勢い余って「こんなCDPはいやだ」というタイトルで参戦しようとした<a href="http://www.zusaar.com/event/451061">CDP Advent Calendar</a>ですが、みなさんマジメにやられているようなのでひよってしまい、まぁまぁ使える感じや〜つに変更することにしました。</p>

<p>さてAWS環境を有効に活用している多くのシステムでは、インスタンスの自動起動やオートスケールなど、予めサーバー台数や名前が決まってないことが多いです。そんなときでも現状起動中のインスタンス一覧を参照できないといけないケースが多々あります。</p>

<p>たとえばオートスケールする環境でも監視ツールによるモニタリングが必要な場合。または同様にオートスケールする環境でELBではないロードバランサーを利用して負荷分散しているケース。いずれのケースも設定ファイルに現在稼働しているインスタンスのホスト名ないしはIPアドレス一覧を更新する必要があります。</p>

<p>そのための元ネタとしてSimpleDBを使って起動中のインスタンスメタデータを保管する方法を実装したのでPHPのサンプルコードと共にご紹介します。いまいちいい名前が思いつかないのですが、名付けて <strong>Self Server Registrationパターン</strong>。（気に入ってないので名前は募集します！）</p>]]>
        <![CDATA[<p>以下のようなファイルを用意します。</p>

<p><strong>■config.php - 各種スクリプト用AWS設定ファイル</strong></p>

<pre class="brush: php">&lt;?php
define('AWSAccessKeyId', '&lt;your Access Key Id HERE!&gt;');
define('AWSSecretKey', '&lt;your Security Key HERE!&gt;');
define('REGION', AmazonSDB::REGION_TOKYO);
define('DOMAIN', 'server-list');
?&gt;</pre>

<p><strong>■add-server.php - 自身のメタデータを登録するスクリプト</strong></p>

<pre class="brush: bash">#!/usr/bin/php
&lt;?php
require_once(&quot;sdk/sdk.class.php&quot;);
require_once(&quot;config.php&quot;);
 
if ($argc &lt; 6) { print(&quot;Usage: $argv[0] &lt;instance-id&gt; &lt;instance-type&gt; &lt;availability-zone&gt; &lt;public-hostname&gt; &lt;local-ipv4&gt; &lt;status&gt;\n&quot;); exit(1); }
 
$sdb = new AmazonSDB(array(
    &quot;key&quot; =&gt; AWSAccessKeyId,
    &quot;secret&quot; =&gt; AWSSecretKey
));
$sdb-&gt;set_region(REGION);
 
$res = $sdb-&gt;put_attributes(DOMAIN, $argv[1], array(
    'instance-type' =&gt; $argv[2],
    'availability-zone' =&gt; $argv[3],
    'public-hostname' =&gt; $argv[4],
    'local-ipv4' =&gt; $argv[5],
    'status' =&gt; $argv[6]
), true);
 
if($res-&gt;isOK()){
# print_r($res);
}
else{
# print_r($res);
    print(&quot;Failed.\n&quot;);
    exit(1);
}
?&gt;
</pre>

<p><strong>■delete-server.php - 自身のメタデータを削除するスクリプト</strong></p>

<pre class="brush: php">#!/usr/bin/php
&lt;?php
require_once(&quot;sdk/sdk.class.php&quot;);
require_once(&quot;config.php&quot;);
if ($argc &lt;= 1) { print(&quot;Usage: $argv[0] &lt;instance-id&gt;\n&quot;); exit(1); }
 
$sdb = new AmazonSDB(array(
    &quot;key&quot; =&gt; AWSAccessKeyId,
    &quot;secret&quot; =&gt; AWSSecretKey
));
$sdb-&gt;set_region(REGION);
 
$res = $sdb-&gt;delete_attributes(DOMAIN, $argv[1]); 
if($res-&gt;isOK()){
# print_r($res);
}
else{
# print_r($res);
    print(&quot;Failed.\n&quot;);
    exit(1);
}
?&gt;
</pre>

<p><strong>■/etc/init.d/self-server-registration - インスタンス起動・停止時用スクリプト</strong></p>

<pre class="brush: bash">#!/bin/bash
#
# EC2 instance metadata self server regitration
#
# chkconfig: 2345 60 60
# description: self server registration script to manage &amp; list current running EC2 instances
#
 
# source function library
. /etc/rc.d/init.d/functions
 
RETVAL=0
lockfile=/var/lock/subsys/self-server-registration
srcdir=/opt/self-server-registration
endpoint=http://169.254.169.254/latest/meta-data
 
get_meta_data() {
    ID=`curl -s ${endpoint}/instance-id`
    TYPE=`curl -s ${endpoint}/instance-type`
    AZ=`curl -s ${endpoint}/placement/availability-zone`
    DNSNAME=`curl -s ${endpoint}/public-hostname`
    IP=`curl -s ${endpoint}/local-ipv4`
}
 
start() {
    if [ ! -f ${srcdir}/config.php ]; then
        echo &quot;${srcdir}/config.php does NOT exist.&quot;
        failure
    fi
    echo
 
    if [ -x ${srcdir}/add-server.php ]; then
        echo -n $&quot;Running: add-server.php &quot;
        ${srcdir}/add-server.php $ID $TYPE $AZ $DNSNAME $IP 'running' &amp;&amp; success || failure
        echo
    fi
    touch ${lockfile}
}
 
stop () {
    if [ ! -f ${srcdir}/config.php ]; then
        echo &quot;${srcdir}/config.php does NOT exist.&quot;
        failure
    fi
 
    echo
    if [ -x ${srcdir}/delete-server.php ]; then
        echo -n $&quot;Running: delete-server.php &quot;
        ${srcdir}/delete-server.php $ID &amp;&amp; success
        echo
    fi
    rm -f ${lockfile}
}
 
case &quot;$1&quot; in
    start)
        get_meta_data
        start
        ;;
    stop)
        get_meta_data
        stop
        ;;
    restart)
        get_meta_data
        stop
        start
        ;;
    *)
        echo $&quot;Usage: $0 {start|stop|restart}&quot;
        RETVAL=1
esac
exit $RETVAL
</pre>

<p>以下を前提としていますのでご注意を。</p>

<p>・config.php中のAWSAccessKeyIdとAWSSecretKeyを自身のものへ書き換え必須<br />
・config.php中のDOMAINは好きなものに変更<br />
・add-server.phpとdelete-server.phpは実行権限付きで/opt/self-server-registrationに設置されている<br />
・self-server-registrationは実行権限付きで/etc/init.dに設置されている</p>

<p>テスト実行をするのであればドメインを作成してから、以下のようにコマンド実行してください。<br />
（ドメイン作成スクリプトはサンプルが<a href="https://github.com/kazgoto/ec2-self-server-registration">github</a>においてあります）</p>

<pre class="brush: bash">$ sudo /etc/init.d/self-server-registration start
 
Running: add-server.php [ OK ]
</pre>

<p>SimpleDBで指定してドメインの中をみてましょう。<a href="http://www.razorsql.com/">RazorSQL</a>を使って確認してみるとこうなってます。</p>

<p><a href="http://www.flickr.com/photos/kaz_goto/8280194169/" title="RazorSQL - 1台分のデータ登録完了 by kazgoto, on Flickr"><img src="http://farm9.staticflickr.com/8073/8280194169_9c4d4f0d96_z.jpg" width="640" height="331" alt="RazorSQL - 1台分のデータ登録完了"></a></p>

<p>同様に、削除してみましょう。</p>

<pre class="brush: bash">$ sudo /etc/init.d/self-server-registration stop
 
Running: delete-server.php [ OK ]
</pre>

<p><a href="http://www.flickr.com/photos/kaz_goto/8281250082/" title="RazorSQL - 無事消えます by kazgoto, on Flickr"><img src="http://farm9.staticflickr.com/8362/8281250082_12e934f3b7_z.jpg" width="640" height="331" alt="RazorSQL - 無事消えます"></a></p>

<p>当然消えてますね。ここまでくれば設定はほぼ完了。最後に以下のようなコマンドを実行して起動・停止スクリプトとして登録します。</p>

<pre class="brush: bash">$ sudo chkconfig --add self-server-registration 
$ sudo chkconfig --list | grep self-server-registration 
self-server-registration0:off1:off2:on3:on4:on5:on6:off
$ ls -al /etc/rc3.d/ | grep self-server-registration 
lrwxrwxrwx 1 root root 34 12月 17 11:15 2012 S60self-server-registration -&gt; ../init.d/self-server-registration</pre>

<p>あとはRebootしても、Stop→Startしても正確な情報が保存されることが確認できると思います。特にStop→Startの場合はIPが変わるので情報がよくわかると思います。</p>

<p>さてそれでは複数台起動してみましょう。自前で作成したAMIを元にして...</p>

<p><a href="http://www.flickr.com/photos/kaz_goto/8280195583/" title="自前AMIを起動 by kazgoto, on Flickr"><img src="http://farm9.staticflickr.com/8504/8280195583_48d27b0771_z.jpg" width="640" height="428" alt="自前AMIを起動"></a></p>

<p>10台起動します。</p>

<p><a href="http://www.flickr.com/photos/kaz_goto/8281251554/" title="10台同時起動します by kazgoto, on Flickr"><img src="http://farm9.staticflickr.com/8080/8281251554_c139d1c7ef_z.jpg" width="640" height="446" alt="10台同時起動します"></a></p>

<p>無事10台起動しました。</p>

<p><a href="http://www.flickr.com/photos/kaz_goto/8281253084/" title="無事10台起動されました by kazgoto, on Flickr"><img src="http://farm9.staticflickr.com/8070/8281253084_384f12079c_z.jpg" width="640" height="354" alt="無事10台起動されました"></a></p>

<p>一方RazorSQLで確認してみると...</p>

<p><a href="http://www.flickr.com/photos/kaz_goto/8281254130/" title="RazorSQL - 当然10台分のデータが登録されてます by kazgoto, on Flickr"><img src="http://farm9.staticflickr.com/8500/8281254130_57711590df_z.jpg" width="640" height="331" alt="RazorSQL - 当然10台分のデータが登録されてます"></a></p>

<p>無事10件あることが確認できました。</p>

<p>今度は停止してみましょう。5台停止してみると</p>

<p><a href="http://www.flickr.com/photos/kaz_goto/8281254588/" title="5台停止してみます by kazgoto, on Flickr"><img src="http://farm9.staticflickr.com/8496/8281254588_26b5e2c4c3_z.jpg" width="640" height="467" alt="5台停止してみます"></a></p>

<p>無事に5件になっていることが確認できます。</p>

<p><a href="http://www.flickr.com/photos/kaz_goto/8280199269/" title="RazorSQL - データも5台に減りました by kazgoto, on Flickr"><img src="http://farm9.staticflickr.com/8074/8280199269_765d6024d6_z.jpg" width="640" height="331" alt="RazorSQL - データも5台に減りました"></a></p>

<p>あとはこの状態から必要なフォーマットにあわせて出力して使うことになります。<br />
とりあえずダンプでよければ...</p>

<pre class="brush: bash">$ ./list-servers.php 
sql = SELECT * FROM `server-list`
CFSimpleXML Object
(
    [Item] =&gt; Array
        (
            [0] =&gt; CFSimpleXML Object
                (
                    [Name] =&gt; i-06157105
                    [Attribute] =&gt; Array
                        (
                            [0] =&gt; CFSimpleXML Object
                                (
                                    [Name] =&gt; availability-zone
                                    [Value] =&gt; ap-northeast-1a
                                )
 
                            [1] =&gt; CFSimpleXML Object
                                (
                                    [Name] =&gt; public-hostname
                                    [Value] =&gt; ec2-54-248-189-143.ap-northeast-1.compute.amazonaws.com
                                )
 
                            [2] =&gt; CFSimpleXML Object
                                (
                                    [Name] =&gt; status
                                    [Value] =&gt; running
                                )
 
                            [3] =&gt; CFSimpleXML Object
                                (
                                    [Name] =&gt; local-ipv4
                                    [Value] =&gt; 10.128.21.18
                                )
 
                            [4] =&gt; CFSimpleXML Object
                                (
                                    [Name] =&gt; instance-type
                                    [Value] =&gt; t1.micro
                                )
 
                        )
 
                )
 
            [1] =&gt; CFSimpleXML Object
                (
                    [Name] =&gt; i-0a157109
                    [Attribute] =&gt; Array
                        (
                            [0] =&gt; CFSimpleXML Object
                                (
                                    [Name] =&gt; availability-zone
                                    [Value] =&gt; ap-northeast-1a
                                )
 
                            [1] =&gt; CFSimpleXML Object
                                (
                                    [Name] =&gt; public-hostname
                                    [Value] =&gt; ec2-54-248-199-208.ap-northeast-1.compute.amazonaws.com
                                )
 
                            [2] =&gt; CFSimpleXML Object
                                (
                                    [Name] =&gt; status
                                    [Value] =&gt; running
                                )
 
                            [3] =&gt; CFSimpleXML Object
                                (
                                    [Name] =&gt; local-ipv4
                                    [Value] =&gt; 10.128.29.151
                                )
 
                            [4] =&gt; CFSimpleXML Object
                                (
                                    [Name] =&gt; instance-type
                                    [Value] =&gt; t1.micro
                                )
 
                        )
 
                )
 
            [2] =&gt; CFSimpleXML Object
                (
                    [Name] =&gt; i-0815710b
                    [Attribute] =&gt; Array
                        (
                            [0] =&gt; CFSimpleXML Object
                                (
                                    [Name] =&gt; availability-zone
                                    [Value] =&gt; ap-northeast-1a
                                )
 
                            [1] =&gt; CFSimpleXML Object
                                (
                                    [Name] =&gt; public-hostname
                                    [Value] =&gt; ec2-54-248-183-207.ap-northeast-1.compute.amazonaws.com
                                )
 
                            [2] =&gt; CFSimpleXML Object
                                (
                                    [Name] =&gt; status
                                    [Value] =&gt; running
                                )
 
                            [3] =&gt; CFSimpleXML Object
                                (
                                    [Name] =&gt; local-ipv4
                                    [Value] =&gt; 10.128.20.135
                                )
 
                            [4] =&gt; CFSimpleXML Object
                                (
                                    [Name] =&gt; instance-type
                                    [Value] =&gt; t1.micro
                                )
 
                        )
 
                )
 
            [3] =&gt; CFSimpleXML Object
                (
                    [Name] =&gt; i-0e15710d
                    [Attribute] =&gt; Array
                        (
                            [0] =&gt; CFSimpleXML Object
                                (
                                    [Name] =&gt; availability-zone
                                    [Value] =&gt; ap-northeast-1a
                                )
 
                            [1] =&gt; CFSimpleXML Object
                                (
                                    [Name] =&gt; public-hostname
                                    [Value] =&gt; ec2-54-248-25-102.ap-northeast-1.compute.amazonaws.com
                                )
 
                            [2] =&gt; CFSimpleXML Object
                                (
                                    [Name] =&gt; status
                                    [Value] =&gt; running
                                )
 
                            [3] =&gt; CFSimpleXML Object
                                (
                                    [Name] =&gt; local-ipv4
                                    [Value] =&gt; 10.128.19.95
                                )
 
                            [4] =&gt; CFSimpleXML Object
                                (
                                    [Name] =&gt; instance-type
                                    [Value] =&gt; t1.micro
                                )
 
                        )
 
                )
 
            [4] =&gt; CFSimpleXML Object
                (
                    [Name] =&gt; i-04157107
                    [Attribute] =&gt; Array
                        (
                            [0] =&gt; CFSimpleXML Object
                                (
                                    [Name] =&gt; availability-zone
                                    [Value] =&gt; ap-northeast-1a
                                )
 
                            [1] =&gt; CFSimpleXML Object
                                (
                                    [Name] =&gt; public-hostname
                                    [Value] =&gt; ec2-54-248-26-190.ap-northeast-1.compute.amazonaws.com
                                )
 
                            [2] =&gt; CFSimpleXML Object
                                (
                                    [Name] =&gt; status
                                    [Value] =&gt; running
                                )
 
                            [3] =&gt; CFSimpleXML Object
                                (
                                    [Name] =&gt; local-ipv4
                                    [Value] =&gt; 10.128.19.111
                                )
 
                            [4] =&gt; CFSimpleXML Object
                                (
                                    [Name] =&gt; instance-type
                                    [Value] =&gt; t1.micro
                                )
 
                        )
 
                )
 
        )
 
)</pre>

<p>こんな感じですね。ちなみにcloudpackではこいつを整形してNagiosやHAProxyなんかへ利用しています。</p>

<p>サンプルソースは<a href="https://github.com/kazgoto/ec2-self-server-registration">github</a>においてありますので、適当にカスタマイズして使ってみてください。（環境はAmazon Linuxを前提としています。PHPのAWS SDKは各種PHPスクリプトと同一ディレクトリ内に sdk/ でアクセス可能な状態で設置してください。）</p>

<p>明日は <a href="https://twitter.com/k_yokokura">@k_yokokura</a> さんですね。<br />
それでは！</p>]]>
    </content>
</entry>

<entry>
    <title>「cloudpack」が生まれたときのこと</title>
    <link rel="alternate" type="text/html" href="http://5net.com/blog/2012/12/birth-of-name-cloudpack.html" />
    <id>tag:5net.com,2012:/blog//1.85238</id>

    <published>2012-12-06T09:44:52Z</published>
    <updated>2012-12-17T16:10:28Z</updated>

    <summary> こんにちは。エバンジェリスト職をするものとして外で講演することは多いのになんだかとってもブログが苦手になってしまったゴトウです。 今回cloudpack Advent Calendar 2012に参...</summary>
    <author>
        <name>kaz</name>
        
    </author>
    
    <category term="amazonwebservices" label="amazon-web-services" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="aws" label="aws+" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="cloudpack" label="cloudpack" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://5net.com/blog/">
        <![CDATA[<p>
<img src="http://farm8.staticflickr.com/7016/6588505077_cea321ab54_o.png" width="250" align="right" alt="cloudpack logo" />
</p>

<p>
こんにちは。エバンジェリスト職をするものとして外で講演することは多いのになんだかとってもブログが苦手になってしまったゴトウです。
</p>

<p>
今回<a href="http://www.zusaar.com/event/457006">cloudpack Advent Calendar 2012</a>に参加することになり、移行して動かなくなっていたMovableTypeをあわてて直してみたりして。ブログを書く感覚が思い出せず戸惑っていますが、良い機会なのでサービス名称「cloudpack」が生まれたときのことを振り返ってみようと思います。
</p>

<p>
cloudpackビジネスを始めたのは2010年3月。<a href="http://5net.com/blog/2010/03/awsplus-just-begin.html">この記事</a>で紹介してます。
</p>

<blockquote>
アイレットと共同で Amazon EC2 の導入から運用までを引き受ける AWS+ というサービスを開始することになりました
</blockquote>

<p>
記事中に「cloudpack」は一切ありません。あるのは「AWS+」という名称。
</p>

<p>
そうです。開始当初はAmazon Web Servicesの略した「AWS」に「＋」をつけて、<strong>「AWS+」</strong>（エーダブリューエス プラス）という名前でスタートしました。ドメインも aws-plus.com を使っていましたね。
</p>

<p>
AWSを日本市場に広げていこう！という目標もあり、サービス開始当初は勝手にコ・マーケティングのつもりで「AWS」を使って、名称としての親和性をだすつもりで「AWS+」としていました。
</p>

<p>
当時のプレゼン資料はこんな↓感じｗ
</p>

<iframe src="http://www.slideshare.net/slideshow/embed_code/5472619" width="427" height="356" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC;border-width:1px 1px 0;margin-bottom:5px" allowfullscreen webkitallowfullscreen mozallowfullscreen> </iframe> <div style="margin-bottom:5px"> <strong> <a href="http://www.slideshare.net/kaz.goto/aws-amazon-web-services" title="AWS+で楽して Amazon Web Services を使いこなせ！" target="_blank">AWS+で楽して Amazon Web Services を使いこなせ！</a> </strong> from <strong><a href="http://www.slideshare.net/kaz.goto" target="_blank">Kazutaka Goto</a></strong> </div>

<p>
名前のおかげかｗ、営業開始後から順調に仕事は伸びていき2010年の年末を迎えるまでには多くのお客様のインフラをお預かりするようになってました。ちょうどそのときにAWSのオフィシャルパートナー制度が開始されることを知りアプライをし、無事<a href="https://aws.amazon.com/solution-providers/si/cloudpack-1318351543">Solution Provider</a>認定を受ける運びとなったのでした。
</p>

<p>
今まで完全にブログやウェブサイトのみのマーケティングスタイルで認知活動をしているだけで、特に自分たちのやっていることに何の後ろ盾もなく第三者から認められることなかったので、AWSによるSolution Provider認定を受けられるのは非常にうれしかったことを覚えてます。
</p>

<p>
一方で、2011年以降のAWS関連市場の伸びと自分達の成長ステージを考慮して以前から「AWS+」という名称についてどうするか内部ではずっと議論してました。Solution Providerになったのをきっかけに、<strong>「オフィシャルなパートナーとして自社とAWSブランドとの混同が起こらないようにすべきだ、ここで名称変更をしよう！」</strong>と決断したのでした。
</p>

<p>
そこからがつらかった...<br />

</p>]]>
        <![CDATA[<p>
一番初めに集めた名前候補は記録に残ってなかったのですがそれはひどかった。他は全く覚えてないのに唯一覚えてるのは「海老蔵」。よくもまぁサービス名に使おうと思ったな、とｗ
</p>

<p>
その後も生みの苦しみの苦しみを味わうことになるのですが、最終選考に残っていたのはこんな名称です。
</p>

<blockquote>
クラウド名人<br />
クラウド職人<br />
みんなのクラウド<br />
クラウド・ラボ<br />
iret+<br />
Cloud Gate<br />
Cloud Force<br />
Cloud Agent<br />
4Cloud<br />
ic+(iret クラウド　プラス)<br />
Cloud Pro<br />
ダンボーズ<br />
IWS+ （iret web service+）<br />
IWS A+ （iret web service A+）<br />
Cloud Factory<br />
Clooooooud<br />
Cloud Services
</blockquote>

<p>
いまいちコレ！ってのに出会えず、結局カッコイイウェブサービス名ツクール！的なものを利用して追加で出した案が以下の5つ（どのサイトか覚えてないのですがこんなやつです→ <a href="http://wordoid.com/">http://wordoid.com/</a> ）。
</p>

<blockquote>
cloudful - クラウドをフルマネジド(full-managed)で提供<br />
cloudpack - クラウドをパッケージ化している<br />
cloudize - クラウド化<br />
cloudible - クラウドの価値/有効性<br />
cloudive - クラウド的？
</blockquote>

個人的には、
<ul>
<li>日本人も発音しやすいが海外でも通用する</li>
<li>フルパッケージ（マネジド）サービスの印象</li>
<li>ハイフンとか使わずにドメイン取得可能</li>
</ul>
を重視して選考した結果「<strong>cloudpack</strong>」になりました。

<p>
そこからはスピード勝負で、ロゴ作成（<a href="http://www.archetyp.jp/">ARCHETYP</a>によるデザイン）→ウェブサイトリニューアル→名刺やグッズ作成、わずか1〜2週間の間にすべてをすませて、なんとか年を越える前ギリギリの2010年12月22日に無事プレスリリースを出す事ができました。
</p>

<p>
■<a href="http://www.cloudpack.jp/press/20101222.html">サービス名称変更のお知らせ　～『AWS+』から『cloudpack』へ～ - cloudpack（クラウドパック）Amazon EC2などクラウドの導入設計、運用・保守サービス</a>
</p>

<p>
とっても懐かしいのだけど、プレスリリースの文章をあらためて読むとこんなことが。
</p>

<p>
「新サービスのロゴは、今後ますます進歩していくクラウドコンピューティングと弊<strong>社が今までに培った芯のある確固たる技術をコンセプトとし、シンボルマークにはcloudの持つ雲と包み込むパックの意味合いを掛け合わせたもの</strong>を表現しています。」
</p>

<p>
ほほー、そんな意味が！知らなかったｗ 年末に振り返ってみて初心を思い出す良いきっかけになりました。来年も頑張っていきまっする！<br />

</p>]]>
    </content>
</entry>

<entry>
    <title>CloudFrontでキャッシュ時間を長くしながらも運用作業量を下げる方法</title>
    <link rel="alternate" type="text/html" href="http://5net.com/blog/2012/03/reducing-operational-task-by-revving-filenames-in-cloudfront-with-ec2.html" />
    <id>tag:5net.com,2012:/blog//1.85235</id>

    <published>2012-03-27T07:06:45Z</published>
    <updated>2012-12-06T04:36:27Z</updated>

    <summary> CDNを使うのはキャッシュ目的であることがほとんどですが、スムースなアクセスを実現するにはキャッシュする時間を長くすべきです。もし無期限に設定したら1度オリジナルファイルを読めば後はCDNのサーバー...</summary>
    <author>
        <name>kaz</name>
        
    </author>
    
        <category term="technology" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="amazoncloudfront" label="amazon-cloudfront" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="amazonec2" label="amazon-ec2" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="amazonwebservices" label="amazon-web-services" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="apache" label="apache" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://5net.com/blog/">
        <![CDATA[<p>
<img src="http://media.amazonwebservices.com/logo_aws.gif" align="right" alt="amazon web services logo" /><br />
CDNを使うのはキャッシュ目的であることがほとんどですが、スムースなアクセスを実現するにはキャッシュする時間を長くすべきです。もし無期限に設定したら1度オリジナルファイルを読めば後はCDNのサーバーまかせにできるので非常に効果的ですね。
</p>

<p>
しかし実際のサイトを運営していくのは必ずファイル更新作業があり、この同じファイルの更新の場面でCDNが入っていることで問題なります。キャッシュ時間を長くすることと更新を反映させることはCDN使う上では相反する行為だからですね。
</p>

<p>
世の中ではこうした問題を軽減するための手法がいくつか存在します。その一つがファイル名にバージョンを入れる<a href="http://my.safaribooksonline.com/book/web-development/9780596529307/rule-3-add-an-expires-header/revving_filenames">Revving Filenames</a>という手法です。
</p>

<p>
要するに更新があったら「test.1.0.1.jpg」のようにファイル名にバージョン番号などを入れることで違うリソースとして認識させる手法のこと。これ完全に自動化されたデプロイ環境ならいいけど、手動でこれをするのは手間が多すぎしミスも発生しそう。
</p>

<p>
今回は、仮にHTML生成がアプリだとしてHTML中のパスを変えるのは簡単で、静的ファイルのファイル名を更新管理するのが難しいケースにしぼって、この問題を少しでも軽減すべくCloudFrontとEC2で試してみました。
</p>]]>
        <![CDATA[<p>
前提としては、以下の通り。<br />
・ファイル更新者はバージョン番号など入れずにいつもの通りファイル更新できる<br />
・アプリでは画像のなどのパスを簡単に変更可能
</p>

<p>
まずEC2上のApacheの設定はこんな感じです。Expireヘッダー追加。1ヶ月キャッシュする設定。加えて <strong>/vXXX/</strong>（Xは数字）というパスを無視する設定。ドキュメントルート直下の「v」付のパスを無視するので「<strong>/v2/img/test.jpg</strong>」のようなアクセスには「<strong>/img/test.jpg</strong>」と内部で理解して画像を返すだけになります。
</p>

<pre class="brush:bash">
ExpiresActive On
ExpiresDefault "access plus 1 month"

RewriteEngine  on
RewriteRule    ^/v[0-9]*/(.*)  /$1  [PT]
</pre>

<p>
このEC2へ向けたCloudFrontではパスを変えなければ1度アクセスしたファイルは1ヶ月間再アクセスしません。ファイル更新があったら「/vXXX/」を付け加えれるか数字を変更するだけ。
</p>

<p>
CloudFront経由で1度目のリクエストをしてみます。
</p>

<pre class="brush:bash;highlight:[12]">
$ curl -I http://d2tm6aw44wcrbw.cloudfront.net/img/test.jpg
HTTP/1.0 200 OK
Date: Tue, 27 Mar 2012 07:12:13 GMT
Server: Apache/2.2.22 (Amazon)
Last-Modified: Tue, 27 Mar 2012 07:11:54 GMT
ETag: "202de-1bf50-4bc3434a08760"
Accept-Ranges: bytes
Content-Length: 114512
Cache-Control: max-age=2592000
Expires: Thu, 26 Apr 2012 07:12:13 GMT
Content-Type: image/jpeg
X-Cache: Miss from cloudfront
X-Amz-Cf-Id: EOrigK-aBfRHo4KPpp7CgAZUT0pb07l8Tzy5DYoadCemegctIIkCVg==,An6PZuCBnIBjuY7FJNPa_tSvRvPkLbutAoqwp-QDxTY148bwU2PEkA==,7JJ6bolg3h3mQKAWBLlOIHgvcRj-Xb1zCQ-OPTTQ0wp5Ct7-WZMC7w==
Via: 1.0 ad24b1fd4aff5951d51e7e0f2f730c0b.cloudfront.net (CloudFront)
Connection: close
</pre>

<p>
するとEC2上のApacheログではアクセスされた記録が残ります。<br />
（上記のX-Cacheヘッダーにも「Miss from cloudfront」とありますね）
</p>

<pre class="brush:bash">
216.137.52.64 - - [27/Mar/2012:07:12:13 +0000] "HEAD /img/test.jpg HTTP/1.0" 200 - "-" "Amazon CloudFront"
</pre>

<p>
2度目に同じURLへアクセスをしてもログには何もでません。当然アクセスしてないため出ません。<br />
（X-Cacheは「Hit from cloudfront」となっていてキャッシュヒットしたことを表してます）
</p>

<pre class="brush:bash;highlight:[13]">
$ curl -I http://d2tm6aw44wcrbw.cloudfront.net/img/test.jpg
HTTP/1.0 200 OK
Date: Tue, 27 Mar 2012 07:12:13 GMT
Server: Apache/2.2.22 (Amazon)
Last-Modified: Tue, 27 Mar 2012 07:11:54 GMT
ETag: "202de-1bf50-4bc3434a08760"
Accept-Ranges: bytes
Content-Length: 114512
Cache-Control: max-age=2592000
Expires: Thu, 26 Apr 2012 07:12:13 GMT
Content-Type: image/jpeg
Age: 226
X-Cache: Hit from cloudfront
X-Amz-Cf-Id: l0LBQIqIxcu2nDo1iKI4LlqUXM11OdWKidnVNc39kOV4ou-YH6eiMg==,HX6LoFlUcESJUhfb81X0RiZBpgiD-Of_y9CqPoiqKdnRTgvvWsLGfw==
Via: 1.0 23ebd0f161b523c5675721fc89f813b9.cloudfront.net (CloudFront)
Connection: close
</pre>

<p>
ここで同じファイルを同じ場所で更新した前提でURLに /v2/ を追加してみます。
</p>

<pre class="brush:bash;highlight:[12]">
$ curl -I http://d2tm6aw44wcrbw.cloudfront.net/v2/img/test.jpg
HTTP/1.0 200 OK
Date: Tue, 27 Mar 2012 07:15:40 GMT
Server: Apache/2.2.22 (Amazon)
Last-Modified: Tue, 27 Mar 2012 07:11:54 GMT
ETag: "202de-1bf50-4bc3434a08760"
Accept-Ranges: bytes
Content-Length: 114512
Cache-Control: max-age=2592000
Expires: Thu, 26 Apr 2012 07:15:40 GMT
Content-Type: image/jpeg
X-Cache: Miss from cloudfront
X-Amz-Cf-Id: B6YTDO3U3Y0Bwmxk3oWEWgXrSrhZ5ZM7-F4MhwyP_afZ8jxnVfdiHw==,6Us2F8ffb1KX7ISKXx8ir_x9frYfKdww5r10Aec9fgeU6BVsHgceqg==,PxaKaYsuAkjzxbBg34Ho0qicahSuY2XtG2iN7POjD-uN_9xr0nqbTA==
Via: 1.0 23ebd0f161b523c5675721fc89f813b9.cloudfront.net (CloudFront)
Connection: close
</pre>

<p>
するとまたキャッシュがヒットしました。EC2のアクセスログにも記録がでました。
</p>

<pre class="brush:bash;highlight:[2]">
216.137.52.64 - - [27/Mar/2012:07:12:13 +0000] "HEAD /img/test.jpg HTTP/1.0" 200 - "-" "Amazon CloudFront"
216.137.52.64 - - [27/Mar/2012:07:15:40 +0000] "HEAD /v2/img/test.jpg HTTP/1.0" 200 - "-" "Amazon CloudFront"
</pre>

<p>
このようにファイルの置き場所やファイル名は一切変えずにパスだけを変えてファイル更新を実現することができました。おしまい。
</p>

<p>
ふぅ、ながながしく書いた割りにはたいしたことやってないけど、人に感心されたので他の人にも役に立つかもしれないのでポストしとく。
</p>]]>
    </content>
</entry>

<entry>
    <title>今年一年振り返り（個人＋cloudpack）</title>
    <link rel="alternate" type="text/html" href="http://5net.com/blog/2011/12/summarize-2011.html" />
    <id>tag:5net.com,2011:/blog//1.85234</id>

    <published>2011-12-28T16:08:45Z</published>
    <updated>2012-12-06T05:03:43Z</updated>

    <summary> 今年は本当に恵まれた年だった。本来3月の大地震、そして身内に不幸が続いたりして、本来ならばネガティブな流れだったはず。 ところが驚くほど多くの出会いに恵まれて、公私問わず喜怒哀楽を出し切れる仲間に出...</summary>
    <author>
        <name>kaz</name>
        
    </author>
    
        <category term="diary" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="amazonwebservices" label="amazon-web-services" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="cloudpack" label="cloudpack" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://5net.com/blog/">
        <![CDATA[<p>
<img src="http://farm8.staticflickr.com/7016/6588505077_cea321ab54_o.png" width="250" align="right" alt="cloudpack logo" />
</p>

<p>
今年は本当に恵まれた年だった。本来3月の大地震、そして身内に不幸が続いたりして、本来ならばネガティブな流れだったはず。
</p>

<p>
ところが驚くほど多くの出会いに恵まれて、公私問わず喜怒哀楽を出し切れる仲間に出会えたことでこの一年がんばれた気がする。公私を分けずにいる状態、それが逆に心地良くて、おかげですべてが充足感のある一年だった気がする。
</p>

<p>
特に地震の際は、仲間とともにAWSの協力のもとボランティアで各種ウェブサイトの復興を手伝ったわけだが、これが思いの外楽しかった。緊急時の対応なのだから真剣にやっているのはもちろんだが、本来の仕事そっちのけでこういう判断をして取り組む、そうした思いに全くブレがなく一致してたことや、それぞれが持つ能力を出し切りつつ「あ・うん」の呼吸で役割分担する。こうした経験を通じて、より信頼感が高まったのだと思う。
</p>

<p>
さてさてハードだった今年をカレンダーを見て振り返ってみようと思う。
</p>

<p>
---<br />

</p>]]>
        <![CDATA[<p>
▼2月9日(水) GlobalSign パートナー会議 講演<br />
　■<a href="http://www.slideshare.net/kaz.goto/20110209-awsssl">20110209 awsと第二世代ワンクリックssl連携ツール</a><br />
　<br />
▼2月19日(土) JAWS-UG大阪 第1回勉強会 講演<br />
　■<a href="http://www.slideshare.net/kaz.goto/jawsug-osaka-1">JAWSUG Osaka 第1回 ウェブサイト構築事例紹介</a><br />
　<br />
▼3月2日(水)〜3日(木) 日経 Cloud Days Tokyo 出展<br />
　<a href="http://www.cloudpack.jp/event/clouddaystokyo2011.html">http://www.cloudpack.jp/event/clouddaystokyo2011.html</a><br />
　<a href="http://blog.cloudpack.jp/2011/03/news-event-cloud-days-tokyo-report.html">http://blog.cloudpack.jp/2011/03/news-event-cloud-days-tokyo-report.html</a>
</p>

<p>
▼3月3日(木) 日経 Cloud Days Tokyo AWSセッション パネルディスカッション 登壇<br />
　<a href="http://itpro.nikkeibp.co.jp/article/NEWS/20110303/357925/">http://itpro.nikkeibp.co.jp/article/NEWS/20110303/357925/</a>
</p>

<p>
▼3月11日(金) 東北地方太平洋沖地震
</p>

<p>
▼3月11日(金)〜18日(金) タイガーチームとしてボランティア活動(ほぼ100%稼働)<br />
　〜4月中旬 タイガーチームとしてボランティア活動(通常業務とあわせて対応)
</p>

<p>
▼3月15日(火) AWS × cloudpack 共同開催セミナー （キャンセル）<br />
　<a href="http://www.cloudpack.jp/event/seminar20110315.html">http://www.cloudpack.jp/event/seminar20110315.html</a>
</p>

<p>
▼4月6日(水) AWSクラウドアドバンテージセミナー 講演<br />
　■<a href="http://www.slideshare.net/kaz.goto/ss-7531689">キャンペーンサイトでのクラウド活用事例 ＋ 災害時対応での事例</a><br />
　　<br />
▼4月23日(土) JAWS-UG大阪 第2回勉強会 講演<br />
　■<a href="http://www.slideshare.net/kaz.goto/jawsug-osaka-2">JAWS-UG Osaka勉強会 第2回 「災害後 活動報告」</a><br />
　　<br />
▼5月4日(水)〜5日(木) AWS Partner Advisory Summit 参加（シアトル Amazon本社）
</p>

<p>
▼5月11日(水)〜13日(金) クラウドコンピューティングEXPO 出展＋講演<br />
　<a href="http://www.cloudpack.jp/event/2ndcloudcomputingexpo-spring.html">http://www.cloudpack.jp/event/2ndcloudcomputingexpo-spring.html</a><br />
　■<a href="http://www.slideshare.net/kaz.goto/cloudpack-7961616">cloudpackでホンモノのクラウドを乗りこなそう</a><br />
　■<a href="http://www.slideshare.net/kaz.goto/ss-7961622">災害時対応とクラウド</a><br />
　　<br />
▼6月6日(月)〜10日(金) Cloud Computing Expo 2011 + AWS Summit + RigthScale User Conference in San Jose/Santa Clara （キャンセル）
</p>

<p>
▼6月18日(土) JAWS-UG大阪 第3回勉強会 講演<br />
　■<a href="http://www.slideshare.net/kaz.goto/jawsug-osaka-3-rds-for-oracle">JAWS-UG Osaka勉強会 第3回 RDS for Oracle実践導入 その前に</a><br />
　　<br />
▼6月21日(火) JAWS−UG九州 第3回勉強会 講演<br />
　■<a href="http://www.slideshare.net/kaz.goto/jawsug-fukuoka-3-aws">JAWS-UG Fukuoka勉強会 第3回 災害時の対応とAWSの力</a><br />
　　<br />
▼7月14日(木) JAWS-UG東京 第9回勉強会 講演<br />
　<a href="http://blog.cloudpack.jp/2011/07/news-event-jawsug20110714.html">http://blog.cloudpack.jp/2011/07/news-event-jawsug20110714.html</a><br />
　■<a href="http://www.slideshare.net/kaz.goto/jawsug-tokyo-9-rds-for-oracle">JAWS-UG Tokyo 第9回勉強会 RDS for Oracle使ってみた</a><br />
　　<br />
▼7月20日(水) 株式会社大塚商会 BP Platinum Type-S セミナー 出展<br />
　<a href="http://blog.cloudpack.jp/2011/07/news-event-type-s.html">http://blog.cloudpack.jp/2011/07/news-event-type-s.html</a>
</p>

<p>
▼7月21日(木) 第3回Backlogチャネル 講演<br />
　<a href="http://www.cloudpack.jp/event/backlogchannel20110721.html">http://www.cloudpack.jp/event/backlogchannel20110721.html</a><br />
　<a href="http://blog.cloudpack.jp/2011/07/news-event-backlogchannel20110721.html">http://blog.cloudpack.jp/2011/07/news-event-backlogchannel20110721.html</a><br />
　■<a href="http://www.slideshare.net/kaz.goto/201107213backlog">第3回backlogチャンネル IaaS型クラウドサービス利⽤とDR対策</a>
</p>

<p>
▼7月27日(水) Direction 2011 出展＋講演<br />
　<a href="http://direction.jpn.com/">http://direction.jpn.com/</a><br />
　■<a href="http://www.slideshare.net/kaz.goto/cloudpackaws-8700073">cloudpackが提供するAWSセキュリティソリューション - cloudpackセキュリティ+</a><br />
　<br />
▼8月3日(水) 株式会社ハイパー向けcloudpack説明会 講演
</p>

<p>
▼8月31日(水)〜9月1日(木) Cloud Computing World Tokyo 2011 出展<br />
　<a href="http://blog.cloudpack.jp/2011/08/news-event-cloud-computing-world-tokyo.html">http://blog.cloudpack.jp/2011/08/news-event-cloud-computing-world-tokyo.html</a><br />
　<a href="http://blog.cloudpack.jp/2011/09/news-event-cloud-computing-world-tokyo.html">http://blog.cloudpack.jp/2011/09/news-event-cloud-computing-world-tokyo.html</a>
</p>

<p>
▼9月2日(金) JAWS−UG女子会〜クラウドセキュリティ徹底入門〜 講演<br />
　<a href="http://cloudgirls.blogspot.com/2011/08/jaws-ug.html">http://cloudgirls.blogspot.com/2011/08/jaws-ug.html</a><br />
　<a href="http://blog.cloudpack.jp/2011/09/news-event-jawsug20110902.html">http://blog.cloudpack.jp/2011/09/news-event-jawsug20110902.html</a><br />
　<a href="http://www.cloudpack.jp/event/jawsug20110902.html">http://www.cloudpack.jp/event/jawsug20110902.html</a><br />
　■<a href="http://www.slideshare.net/kaz.goto/jawsug-cloudpack">第二回JAWS-UGクラウド女子会 cloudpack紹介</a><br />
　　<br />
【9/13〜9/18 九州ツアー】<br />
▼9月13日(火) JAWS-UG福岡 第4回勉強会 講演<br />
　<a href="http://kokucheese.com/event/index/16141/">http://kokucheese.com/event/index/16141/</a><br />
　<a href="http://blog.cloudpack.jp/2011/09/news-doc-jawsug-fukuoka-04.html">http://blog.cloudpack.jp/2011/09/news-doc-jawsug-fukuoka-04.html</a><br />
　■<a href="http://www.slideshare.net/kaz.goto/jawsug-4-ebs">JAWS-UG福岡 第4回勉強会 EBSの話と普通のディスク障害の話</a>
</p>

<p>
▼9月14日(水) 福岡県情報サービス産業協会 臨時総会 講演
</p>

<p>
▼9月16日(金) JAWS-UG宮崎 第2回勉強会 参加<br />
　<a href="http://kokucheese.com/event/index/15918/">http://kokucheese.com/event/index/15918/</a>
</p>

<p>
▼9月17日(土) JAWS-UG鹿児島 第1回勉強会 講演<br />
　<a href="http://www.zusaar.com/event/104151">http://www.zusaar.com/event/104151</a><br />
　■<a href="http://www.slideshare.net/kaz.goto/jawsug-1-cloudpack">JAWS-UG鹿児島 第1回勉強会 cloudpack紹介</a>
</p>

<p>
▼9月22日(木) 東洋経済クラウド特集 取材<br />
　<a href="http://lib.toyokeizai.net/ad/special/111024cloud/iret.html">http://lib.toyokeizai.net/ad/special/111024cloud/iret.html</a>
</p>

<p>
【9/24〜9/27 静岡→沖縄ツアー】<br />
▼9月24日(土) クラウド・カンファレンス in 静岡 講演<br />
　<a href="http://atnd.org/events/19129">http://atnd.org/events/19129</a><br />
　<a href="http://blog.cloudpack.jp/2011/09/news-doc-cloud-conference-shizuoka.html">http://blog.cloudpack.jp/2011/09/news-doc-cloud-conference-shizuoka.html</a><br />
　■<a href="http://www.slideshare.net/kaz.goto/awscloudpack-9400829">AWSフルマネージドホスティングサービスcloudpack</a><br />
　　<br />
▼9月26日(月) JAWS-UG沖縄 第1回勉強会<br />
　<a href="http://atnd.org/events/21873">http://atnd.org/events/21873</a><br />
　■<a href="http://www.slideshare.net/kaz.goto/jawsug-9422558">JAWS-UG沖縄 キックオフ勉強会 cloudpack紹介</a><br />
　　<br />
【10/5〜10/9 LA出張】<br />
▼10月6日(木) AWS Media and Entertainment Cloud Summit 参加
</p>

<p>
▼10月12日(水)〜14日(金) ITpro EXPO 2011 出展<br />
　■<a href="http://www.slideshare.net/kaz.goto/cloudpackaws-9726443">cloudpackが提供するAWSセキュリティソリューション</a>
</p>

<p>
▼10月12日(水) JAWS-UG東京 第10回勉強会 参加<br />
　<a href="http://atnd.org/events/20312">http://atnd.org/events/20312</a>
</p>

<p>
【10/28〜11/12 名古屋→シアトル→大阪→東京→San Jose】<br />
▼10月29日(土) JAWS-UG名古屋 第2回勉強会 講演<br />
　<a href="http://atnd.org/events/20799">http://atnd.org/events/20799</a><br />
　■<a href="http://www.slideshare.net/kaz.goto/jawsug-nagoya2-cloudpack">JAWS-UG Nagoya勉強会第2回 cloudpack 紹介</a><br />
　　<br />
▼10月31日(月)〜11月2日(水) Architecting with AWS 参加（Amazon本社トレーニング）<br />
　<a href="http://aws.amazon.com/jp/aws-training/architect/">http://aws.amazon.com/jp/aws-training/architect/</a>
</p>

<p>
▼11月5日(土) JAWS-UG大阪 第4回勉強会 参加<br />
　<a href="http://osaka.jaws-ug.jp/2011/11/19/jawsug_osaka_4_workshop_report/">http://osaka.jaws-ug.jp/2011/11/19/jawsug_osaka_4_workshop_report/</a>
</p>

<p>
▼11月7日(月)〜10日(木) Cloud Computing Expo 2011 in Santa Clara 参加
</p>

<p>
▼11月9日(水) RightScale Conference in Santa Clara 参加<br />
　<a href="http://www.rightscale.com/conference/">http://www.rightscale.com/conference/</a>
</p>

<p>
▼11月10日(木) AWS Start-Up Challenge Finale 2011 in San Jose 参加<br />
　<a href="http://aws.amazon.com/jp/startupchallenge-finale2011/">http://aws.amazon.com/jp/startupchallenge-finale2011/</a>
</p>

<p>
【11/17〜11/20 札幌】<br />
▼11月19日(金) JAWS−UG札幌 第4回勉強会<br />
　<a href="http://www.affordance.co.jp/seminar/111119.html">http://www.affordance.co.jp/seminar/111119.html</a><br />
　■<a href="http://www.slideshare.net/kaz.goto/4-jawsugsapporo-cloudpack">第4回 JAWS-UG-Sapporo 勉強会 cloudpack 紹介</a><br />
　　<br />
▼11月21日(月) 代理店・制作会社向けAWS/cloudpackセミナー 講演<br />
　<a href="http://blog.cloudpack.jp/2011/11/news-event-aws-cloudpack-seminar_16.html">http://blog.cloudpack.jp/2011/11/news-event-aws-cloudpack-seminar_16.html</a>
</p>

<p>
▼11月24日(木) JAWS-UG東京 ビギナー編第1回勉強会 開催<br />
　<a href="http://atnd.org/events/21989">http://atnd.org/events/21989</a>
</p>

<p>
【11/25〜11/28 浜松→静岡】<br />
▼11月26日(土) JAWS-UG浜松 勉強会キックオフ 講演<br />
　<a href="http://atnd.org/events/21291">http://atnd.org/events/21291</a><br />
　■<a href="http://www.slideshare.net/kaz.goto/1-jawsug-awsawsec2">第1回 JAWS-UG浜松 勉強会 AWSハンズオン 「AWSアカウント作成〜EC2ログイン」</a><br />
　　<br />
▼11月27日(日) JAWS-UG静岡 勉強会キックオフ 講演<br />
　<a href="http://atnd.org/events/21462">http://atnd.org/events/21462</a><br />
　■<a href="http://www.slideshare.net/kaz.goto/1-jawsug-awsawsec2-10346882">第1回 JAWS-UG静岡 勉強会 AWSハンズオン 「AWSアカウント作成〜EC2ログイン」</a><br />
　　<br />
▼12月2日(金) JAWS-UG沖縄 第1回勉強会 参加<br />
　<a href="http://atnd.org/events/21873">http://atnd.org/events/21873</a>
</p>

<p>
【12/8〜12/10 札幌】<br />
▼12月9日(金) Open Cloud Conference 2011 in Sapporo 講演<br />
　<a href="http://www.pcsn43.com/2011/">http://www.pcsn43.com/2011/</a><br />
　■<a href="http://www.slideshare.net/kaz.goto/aws-cloudpack">AWSフルマネージドホスティングサービス cloudpack</a><br />
　　<br />
▼12月10日(土) はじめてのAWSワークショップ 参加<br />
　<a href="http://www.affordance.co.jp/seminar/111210.html">http://www.affordance.co.jp/seminar/111210.html</a>
</p>

<p>
▼12月11日(日) 第6回 八子クラウド座談会 年末スペシャル 参加<br />
　<a href="http://atnd.org/events/23010">http://atnd.org/events/23010</a><br />
　■<a href="http://www.slideshare.net/kaz.goto/cloudpack-in">cloudpack紹介 in 八子クラウド</a><br />
　　<br />
▼12月19日(月) バンダイナムコゲームズ社内向けAWSセミナー 講演
</p>

<p>
---
</p>

<p>
ここまで書いてはきそうになったｗ<br />
23講演、12地域（内海外2）、公開したスライド23。
</p>

<p>
一番きつかったのは 10/28からの出張コンボ（名古屋→シアトル→大阪→東京→San Jose）がきつかった。ホントに家に帰りたいと思った。なので福岡で開催されていた明星和楽もあきらめた。
</p>

<p>
一番面白かったのは11/5の大阪勉強会。なぜかフィーバーが発生してcloudpack無双状態になった。何度も足を運んで仲良くさせてもらっていたご褒美かとｗ
</p>

<p>
はじめはイヤなところもあったが、これだけ出張してると次第に出張準備手順は固まってきてほとんどムダな手間はなくなり、さらにはどの都市に行ってもなんとなく土地土地のものをみたり食べたりして、今では案外楽しめていると思う。
</p>

<p>
出張の数と比例するかわからないが今年はcloudpackと共にがんばった。そのかいあってか外部からも認められ、二つほど賞を頂いた。
</p>

<p>
・AWS Partner Award 特別賞<br />
・AWS Samurai 2012
</p>

<p>
前者はサーバーワークスと共に、震災後のボランティア活動を評価されAWSから頂いたもの。特段見返りも求めて活動したわけではないが、果たしてあの対応が正しかったのか個人的にはまだ迷うところもあったので、賞を頂いたときは第三者から「よかったのだよ」と言ってもらえたように聞こえ、うれしさと共に安堵の気持ちも大きかった。
</p>

<p>
後者は今年一年AWSコミュニティ（主にJAWS-UG）へ貢献した人4名に与えられた称号。JAWS-UG代表の竹下さん(@DynaKou)、JAWS-UG東京副代表/gumiの堀内さん(@horiuchi)、JAWS-UG東京で活躍後、札幌へ引っ越されたAWSグルかつUst職人の田名辺さん(@dateofrock)、共に私が頂きました。
</p>

<p>
自分の場合は、玉川さんを除いて、もっとも地方へ足を運んでコミュニティ活動に参加し貢献したのが評価された。これは個人として素直をにうれしいのだけど、これは戦略的にやっていることあり、その意味ではcloudpackがもらったと思ってもいいでしょう。2冠おめでとう。$5000の使い方はみんなで考えましょｗ
</p>

<p>
<br />
最後に。
</p>

<p>
日本でAWS/クラウドを盛り上げるには会社間の契約や商売ありきで進むわけない、コミュニティと共に盛り上がって行けるモデルでないと本当の意味で日本人のDNAに定着しないと思ったし、そもそも会社としてのAWSがまだ小さかったこともあり、会社の垣根で区別して役割分担していたら弱すぎるし手も足りないだろうという意識が先行して、皆が勝手同じ会社かのように動いた、そんな印象の残る一年だったと思う。
</p>

<p>
cloudpackとしては今年は認知・定着・ブランド化がテーマだったとはずだけど、AWSの定着なくしては達成できないことも感覚としてわかってたこともあり、ビジネス面でのコミットはもちろんのこと、今年後半はどんな地方でもイベントには出ることにしたり、コミュニティへの協力も強くなっていた。
</p>

<p>
加えて我々だけでなく多くの人や会社がコミットして来ていて、その中で人と会社とごちゃまぜ、それでも構わずAWS/クラウドを盛り上げるのにコミットしたから楽しめたのだなぁとしみじみ思った。
</p>

<p>
来年がどういう年になるかまだわからないけど、ずっと笑いながら忙しく、でもある瞬間は緊張を感じれる状態でありたいと思う。本来自分は楽天的かつ怠惰なので...
</p>

<p>
<br />
（この一年の写真は別にまとめる予定。お休み中にできるかは不明。）
</p>]]>
    </content>
</entry>

<entry>
    <title>SSL証明書不正発行の影響で AWS SDK for PHP 1.4.1以前はアップデート必須 </title>
    <link rel="alternate" type="text/html" href="http://5net.com/blog/2011/09/updated-aws-sdk-for-php-for-potential-sll-security-vulnerability.html" />
    <id>tag:5net.com,2011:/blog//1.85232</id>

    <published>2011-09-08T02:01:58Z</published>
    <updated>2011-09-08T02:07:36Z</updated>

    <summary> オランダの認証局DigiNotarが不正にシステム進入を受け、さらには不正なSSL証明書が発行されていたことがわかり、業界内が騒然としていますが、認証局情報は身近にも存在するので注意が必要です。 ブ...</summary>
    <author>
        <name>kaz</name>
        
    </author>
    
        <category term="technology" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="amazonwebservices" label="amazon-web-services" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="php" label="php" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="security" label="security" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://5net.com/blog/">
        <![CDATA[<p>
<img src="http://media.amazonwebservices.com/logo_aws.gif" align="right" alt="amazon web services logo" /><br />
オランダの認証局DigiNotarが不正にシステム進入を受け、さらには不正なSSL証明書が発行されていたことが<a href="http://www.google.co.jp/search?hl=ja&gl=jp&tbm=nws&btnmeta_news_search=1&q=DigiNotar">わかり</a>、業界内が騒然としていますが、認証局情報は身近にも存在するので注意が必要です。
</p>

<p>
ブラウザなどもベンダーによる対処が進んでますが、AWSにおいても一部影響があるため対応が必要になります。
</p>

<p>
その一つが認証局証明書 cacert.pem のアップデート。全範囲での調査が終わっているか定かではないですが、とりあえず AWS SDK for PHP 内にある cacert.pem はアップデートが必要とのこと。
</p>

<p>
■<a href="https://forums.aws.amazon.com/ann.jspa?annID=1164">Announcement: [UPDATED] Potential SSL security vulnerability. Please read.</a>
</p>

<p>
9月8日時点で 1.4.2.1 がリリースされているので古いバージョンを利用中の方はアップデートしてくださいませ。
</p>

<p>
なお、どうしても古いバージョンを利用したい方は cacert.pem ファイルを手動で更新しろとあります。該当する方は対応をお早めに。
</p>

<blockquote>If you are still using an older version of the AWS SDK for PHP for one reason or another (versions 1.3.2 through 1.4.1), we strongly recommend that you update the cacert.pem file located at <sdk>/lib/requestcore/cacert.pem with the latest version from <a href="http://curl.haxx.se/ca/cacert.pem">http://curl.haxx.se/ca/cacert.pem</a>.
</blockquote>]]>
        
    </content>
</entry>

<entry>
    <title>MySQLバイナリログ保存期間をオンラインのまま変更</title>
    <link rel="alternate" type="text/html" href="http://5net.com/blog/2011/09/change-mysql-binlog-expire-days.html" />
    <id>tag:5net.com,2011:/blog//1.85231</id>

    <published>2011-09-07T01:50:31Z</published>
    <updated>2011-09-07T02:18:26Z</updated>

    <summary> 今回はMySQLの超小ネタ。 バイナリログ出力を 設定していると日々変更ログがたまっていくわけですが、一定期間分だけ保存するよう設定しないと無尽蔵に増えていってしまいます。その制御をするパラメータが...</summary>
    <author>
        <name>kaz</name>
        
    </author>
    
        <category term="technology" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="admin" label="admin" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="mysql" label="mysql" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://5net.com/blog/">
        <![CDATA[<p>
<a href="http://www.mysql.com"><img src="http://farm7.static.flickr.com/6074/6122579974_37d2169b68_o.png" width="170" height="115" alt="logo-mysql-170x115" align="right"></a><br />
今回はMySQLの超小ネタ。
</p>

<p>
バイナリログ出力を 設定していると日々変更ログがたまっていくわけですが、一定期間分だけ保存するよう設定しないと無尽蔵に増えていってしまいます。その制御をするパラメータが expire_logs_days です。
</p>

<p>
何も指定してないとデフォルト値 0 になっていて永久に保存になってますが、整数値を指定すればその日数の分だけ保管され、それ以上過去のものは自動的に削除されるようになります。
</p>

<p>
例: expire_logs_days が 7 だと7日間分のバイナリログだけ保存される
</p>

<p>
expire_logs_days は<a href="http://dev.mysql.com/doc/refman/5.5/en/server-system-variables.html#sysvar_expire_logs_days">マニュアル</a>を見ると「Dynamic Variable: Yes」とあるのでオンライン（起動中）で変更可能です。やってみましょう。
</p>]]>
        <![CDATA[<pre class="brush:shell;highlight:[12,20,23]">
# mysql 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.1.46-log MySQL Community Server (GPL) by Remi

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> SHOW GLOBAL VARIABLES like 'expire_logs_days';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| expire_logs_days | 14    |
+------------------+-------+
1 row in set (0.00 sec)

mysql> SET GLOBAL expire_logs_days = 7;
Query OK, 0 rows affected (0.00 sec)

mysql> SHOW GLOBAL VARIABLES like 'expire_logs_days';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| expire_logs_days | 7     |
+------------------+-------+
1 row in set (0.00 sec)

mysql> 
</pre>

<p>
ということで、保存期間を14日から7日に変更できました。
</p>

<p>
バイナリログのローテーションタイミングは再起動時かログ最大サイズ（<a href="http://dev.mysql.com/doc/refman/5.5/en/replication-options-binary-log.html#sysvar_max_binlog_size">max_binlog_size</a>）超えたときのどちらかに限定されるため、すぐにログファイル削除はされませんが時間をおいて確認しておきましょう。
</p>

<p>
ちなみに再起動時にも反映されるよう my.cnf ファイルの変更も忘れずに。<br />

</p>]]>
    </content>
</entry>

<entry>
    <title>EC2起動不能からの復旧記録</title>
    <link rel="alternate" type="text/html" href="http://5net.com/blog/2011/08/ec2-recovery-from-disk-trouble.html" />
    <id>tag:5net.com,2011:/blog//1.85230</id>

    <published>2011-08-26T12:56:00Z</published>
    <updated>2012-12-17T14:23:22Z</updated>

    <summary> 先日サーバーメンテナンス時にちょっとした不具合が発生しEC2の起動ができなくなりました。一瞬気が遠くなったのですが(笑)、原因がわかったので無理やり対処した記録です。 他のメンバーからの報告で、再起...</summary>
    <author>
        <name>kaz</name>
        
    </author>
    
        <category term="technology" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="amazonec2" label="amazon-ec2" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="amazonwebservices" label="amazon-web-services" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://5net.com/blog/">
        <![CDATA[<p>
<img src="http://media.amazonwebservices.com/logo_aws.gif" align="right" alt="amazon web services logo" /><br />
先日サーバーメンテナンス時にちょっとした不具合が発生しEC2の起動ができなくなりました。一瞬気が遠くなったのですが(笑)、原因がわかったので無理やり対処した記録です。
</p>

<p>
他のメンバーからの報告で、再起動しても、AMIから復旧しようとしても起動しない、というか起動しても接続できないとのことだったので、Management Consoleから System Log を確認すると以下のメッセージが。
</p>

<pre class="brush: shell">
*** ファイルシステム検査中にエラー
*** シェルに移行します、システムは再起動します。
*** シェルから抜ける時。
Give root password for maintenance
(or type Control-D to continue):
</pre>

<p>
エラー発生しているのはrootボリュームではなくデータ専用ボリュームだったのですが、入力待ち状態のため正常起動せず /etc/fstab すら書き換えられない状態だったのです。
</p>

<p>
ということで、手順をまとめるとこんな感じ。<br />

</p>]]>
        <![CDATA[<ol>
	<li>該当インスタンス停止</li>
	<li>rootボリュームを detach（デバイス名をメモ、たぶん /dev/sda1）</li>
	<li>rootボリュームを同じAZ内の他のインスタンスへ attach</li>
	<li>他のインスタンス、適当な位置に mount</li>
	<li>vi で fstab を編集し不具合のあるボリュームの行をコメントアウト（起動時に mount/fsck 対象としないようにする）
<pre class="brush:shell; highlight:[7]">
/dev/sda1 / ext3 defaults 1 1
none /dev/pts devpts gid=5,mode=620 0 0
none /dev/shm tmpfs defaults 0 0
none /proc proc defaults 0 0
none /sys sysfs defaults 0 0
/dev/sda3 swap swap defaults 0 0
# /dev/sdf1 /home ext3 defaults 1 1
</pre>
</li>
	<li>rootボリュームを umount</li>
	<li>rootボリュームを detach</li>
	<li>該当インスタンスに attach（デバイス名に注意）</li>
	<li>インスタンス起動</li>
	<li>起動できたら不具合のあるボリュームを調査＆修復</li>
</ol>

<p>
ボリュームの不具合は結局スーパーブロックがぶっ飛んでたようで、データそのものは安全でした。よかったよかった。（もしかしてAmazon純正のAMIだったらこんなに苦労しないのかなぁ？）
</p>

<p>
AWS便利すぎて気が抜けていたのがバレたかのように発生した不具合。再度姿勢を正すきっかけになりました。ありがとうございました...
</p>

<p>
参考: <a href="http://www.atmarkit.co.jp/flinux/rensai/linuxtips/728fixpartition.html">＠IT: 壊れたパーティションを修復するには</a><br />

</p>]]>
    </content>
</entry>

<entry>
    <title>aiCacheのユニークな機能</title>
    <link rel="alternate" type="text/html" href="http://5net.com/blog/2011/08/aicache-unique-functions.html" />
    <id>tag:5net.com,2011:/blog//1.85229</id>

    <published>2011-08-11T02:57:14Z</published>
    <updated>2011-08-11T04:14:45Z</updated>

    <summary> aiCacheのユニークな機能をまとめます。 ・HTTPSターミネーション ・モバイル端末対応（リダイレクト、リクエスト書き換え・TTL変更など） ・GSLB対応（Dyn.com連携） ・レスポンス...</summary>
    <author>
        <name>kaz</name>
        
    </author>
    
        <category term="technology" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="aicache" label="aicache," scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="amazoncloudfront" label="amazon-cloudfront," scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="cache" label="cache" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://5net.com/blog/">
        <![CDATA[<p>
<img src="http://farm7.static.flickr.com/6142/5973410656_b563e5aaab_o.png" width="200" height="89" alt="aiCache: Web Application Acceleration" align="right"><br />
aiCacheのユニークな機能をまとめます。
</p>

<p>
・HTTPSターミネーション<br />
・モバイル端末対応（リダイレクト、リクエスト書き換え・TTL変更など）<br />
・GSLB対応（Dyn.com連携）<br />
・レスポンスによるキャッシュ削除<br />
・セッション毎のキャッシュ管理（ログイン中もキャッシュ管理可能）<br />
・POSTリクエストのキャッシング<br />
・指定URLのプリフェッチ
</p>

<p>
特に「レスポンスによるキャッシュ削除」と「セッション毎のキャッシュ管理」は良いですね。
</p>]]>
        <![CDATA[<p>
<strong>■レスポンスによるキャッシュ削除</strong>
</p>

<p>
掲示板のようなウェブサイトがあった場合に、各ページはできるだけパフォーマンスをあげるためにキャッシュする設定にしてしまうけれども、コメント投稿があったりした場合にすぐには反映されず待つ必要があります。コメント投稿者が混乱する可能性もあり、できればすぐに反映させたいところ。
</p>

<p>
aiCacheでは、ある処理をしたときに指定ページのキャッシュを削除することができます。しかも簡単に。
</p>

アプリケーションのレスポンスヘッダーに
<pre class="brush:shell">
X-ExpireURL: /path/to/expire/page
</pre>

<p>
を入れるだけ。これで aiCache がキャッシュを削除してくれるので、これ以降 /path/to/expire/page へアクセスすると最新のページが表示されキャッシュされることになります。さらに複数のヘッダーを返せば、まとめてキャッシュ削除もできます。
</p>

<p>
アプリケーションのわずかな変更で動的なサイトも簡単にパフォーマンスをあげることができるのはすばらしい。
</p>

<p>
<br />
<strong>■セッション毎のキャッシュ管理</strong>
</p>

<p>
ログインするようなサイトの場合、ユーザー毎にページ内容が違うためページ全体をキャッシュさせることは通常しません。しかしaiCacheではセッションIDを判断するCookieを設定しておくことで個別セッションのキャッシュ管理が可能になります。
</p>

<p>
もちろんCookieに加えて指定URLからのセッション対応開始・終了などの設定も可能なので、細かなキャッシュコントロールを実現できます。ユーザー毎のページを1分間だけキャッシュするとか、そういうこともできるわけですね。
</p>

<p>
<br />
最後にCloudFrontと簡単な比較をするとこんな感じです（キャッシュ管理の機能を中心にまとめてます）。
</p>

<p>
<iframe width='500' height='620' frameborder='0' src='https://spreadsheets.google.com/spreadsheet/pub?hl=en_US&hl=en_US&key=0ArTGXWbzuNpudFFVQ2ljajkzVkVMVXgtM1R4NENCUnc&single=true&gid=0&range=A1%3AD7&output=html&widget=true'></iframe>
</p>

価格詳細は以下のページを参照してください。
<ul>
	<li><a href="http://aws.amazon.com/jp/cloudfront/pricing/">Amazon CloudFront Pricing</a></li>
	<li><a href="http://aicache.com/cloud/amazon/1102-2">Pricing | aiCache</a></li>
</ul>]]>
    </content>
</entry>

</feed>
