<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;DUENQ38zfyp7ImA9WhRaF0Q.&quot;"><id>tag:blogger.com,1999:blog-6373299112985466176</id><updated>2012-02-21T13:14:52.187+09:00</updated><category term="OVal" /><category term="自己啓発" /><category term="Windows" /><category term="SQLite" /><category term="cryptsetup" /><category term="Skype" /><category term="VPN" /><category term="Rsync" /><category term="PECL" /><category term="Trac" /><category term="git" /><category term="Durian" /><category term="FTP" /><category term="Cacti" /><category term="GIMP" /><category term="Flex" /><category term="Hudson" /><category term="Apache" /><category term="iOS" /><category term="WorkerManager" /><category term="文字化け" /><category term="SAStruts" /><category term="EC2" /><category term="Jiemamy" /><category term="Struts" /><category term="JMeter" /><category term="SSH" /><category term="CSS" /><category term="Subversion" /><category term="suz-env-server" /><category term="Javascript" /><category term="AWS、PHP" /><category term="Mailman" /><category term="OpenOffice" /><category term="Design" /><category term="Perl" /><category term="OpenLDAP" /><category term="Pound" /><category term="Maxim" /><category term="Mistral" /><category term="Tomcat" /><category term="NFS" /><category term="Firefox" /><category term="iPhone" /><category term="VMware" /><category term="Eclipse" /><category term="KompoZer" /><category term="Bluetooth" /><category term="suz-example-teeda" /><category term="Puppet" /><category term="Teeda" /><category term="Event" /><category term="Unbound" /><category term="全文検索" /><category term="Python" /><category term="HyperEstraier" /><category term="Max" /><category term="Aptana" /><category term="Vista" /><category term="Program" /><category term="English" /><category term="Postfix" /><category term="Review" /><category term="Selenium" /><category term="suz-env-local" /><category term="Chinese" /><category term="Papervision3D" /><category term="Portable" /><category term="Oracle" /><category term="Shell" /><category term="Chrome" /><category term="PowerDNS" /><category term="stunnel" /><category term="BlazeDS" /><category term="携帯" /><category term="S2Mai" /><category term="skipfish" /><category term="CGI" /><category term="JSON" /><category term="Webmin" /><category term="Facebook" /><category term="IrfanView" /><category term="Tsunami" /><category term="Network" /><category term="FlashDevelop" /><category term="JSONIC" /><category term="デジハリ" /><category term="Debian" /><category term="SoX" /><category term="MyDNS" /><category term="T2" /><category term="Google" /><category term="Dovecot" /><category term="JDBC" /><category term="AWS" /><category term="Squid" /><category term="Business" /><category term="PHP" /><category term="AWStats" /><category term="VirtualPC" /><category term="Texture" /><category term="Ruby" /><category term="Javadoc" /><category term="Database" /><category term="Linux" /><category term="DRBD" /><category term="FFmpeg" /><category term="GStreamer" /><category term="Box2D" /><category term="Weblogic" /><category term="BunBackup" /><category term="Futsal" /><category term="Putty" /><category term="Log4J" /><category term="正規表現" /><category term="Ant" /><category term="AMF" /><category term="Silverlight" /><category term="GIS" /><category term="X02HT" /><category term="Yum" /><category term="DNS" /><category term="SQL" /><category term="XOOPS" /><category term="HTTPS" /><category term="Release" /><category term="PDO" /><category term="HAProxy" /><category term="PL/SQL" /><category term="画像処理" /><category term="Maya" /><category term="Winstone" /><category term="XAMPP" /><category term="OpenVPN" /><category term="HTTP" /><category term="APR" /><category term="suz-s2-validator" /><category term="Flash" /><category term="RSS" /><category term="Mac" /><category term="Varnish" /><category term="Monit" /><category term="Lifehack" /><category term="MacPorts" /><category term="suz-s2-uploader" /><category term="X02NK" /><category term="Lighttpd" /><category term="ProFTPD" /><category term="jQuery" /><category term="MySQL" /><category term="Rails" /><category term="AIR" /><category term="CentOS" /><category term="ActiveMQ" /><category term="XML" /><category term="FreeBSD" /><category term="Blogger" /><category term="YLunch" /><category term="Rome" /><category term="JAI" /><category term="JSONP" /><category term="PostgreSQL" /><category term="ImageMagick" /><category term="Creditcard" /><category term="HTML" /><category term="FLARToolKit" /><category term="suz-example-s2" /><category term="TheSchwartz" /><category term="OpenSSH" /><category term="Redmine" /><category term="Atom" /><category term="Twitter" /><category term="Commons" /><category term="SUZ-LAB" /><category term="Velocity" /><category term="Openssl" /><category term="E4X" /><category term="Security" /><category term="Ajax" /><category term="Seasar2" /><category term="JNDI" /><category term="SMTP" /><category term="Memcache" /><category term="Blender" /><category term="TestLink" /><category term="Dbmail" /><category term="Hadoop" /><category term="Objective-C" /><category term="Derby" /><category term="Bookmark" /><category term="Book" /><category term="Android" /><category term="Heartbeat" /><category term="Mahout" /><category term="mobylet" /><category term="Guice" /><category term="Sample" /><category term="ZFS" /><category term="HTML5" /><category term="Mail" /><category term="Mobile" /><category term="Zabbix" /><category term="Redhat" /><category term="Perdition" /><category term="aiCache" /><category term="mixi" /><category term="AS3" /><category term="GAE" /><category term="WebDAV" /><category term="Openswan" /><category term="YouTube" /><category term="suz-s2-converter" /><category term="Nagios" /><category term="Bazaar" /><category term="Java" /><category term="API" /><category term="C#" /><category term="Algorithm" /><category term="Data" /><category term="Maven" /><category term="IE" /><category term="Red5" /><title>suz-lab - blog</title><subtitle type="html">IT技術無差別ブログ</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://blog.suz-lab.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://blog.suz-lab.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/6373299112985466176/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>suz-lab</name><uri>http://www.blogger.com/profile/01435551125452800565</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>1926</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/suz-lab-blog" /><feedburner:info uri="suz-lab-blog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;CEUGQXw5fyp7ImA9WhRaF04.&quot;"><id>tag:blogger.com,1999:blog-6373299112985466176.post-7764802169632169693</id><published>2012-02-20T19:00:00.002+09:00</published><updated>2012-02-20T19:03:40.227+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-20T19:03:40.227+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="PostgreSQL" /><title>CentOS(6.2) &amp; PostgreSQL(9.1) &amp; PostGIS(1.5)</title><content type="html">スズキです。&lt;br /&gt;
&lt;br /&gt;
CentOS(6.2)にPostgreSQL(9.1.2)をインストールし、&lt;br /&gt;
PostGIS(1.5.3)も利用できるようにしてみました。&lt;br /&gt;
&lt;br /&gt;
CentOS(6.2)はもちろん「&lt;a href="http://blog.suz-lab.com/2011/12/suz-lab-centos-ami-605-64bit-ap.html"&gt;SUZ-LAB謹製 CentOS AMI&lt;/a&gt;」です。&lt;br /&gt;
&lt;br /&gt;
【PostgreSQLのインストール】&lt;br /&gt;
&lt;br /&gt;
依存パッケージのインストール&lt;br /&gt;
&lt;pre class="brush:plain;"&gt;# yum -y install readline-devel
&lt;/pre&gt;&lt;br /&gt;
PostgreSQLのインストール&lt;br /&gt;
&lt;pre class="brush:plain;"&gt;# curl -OL ftp://ftp2.jp.postgresql.org/pub/postgresql/source/v9.1.2/postgresql-9.1.2.tar.gz
# tar xvzf postgresql-9.1.2.tar.gz
# cd postgresql-9.1.2
# ./configure
# make
# make install
&lt;/pre&gt;&lt;br /&gt;
postgresユーザーとデータディレクトリの作成&lt;br /&gt;
&lt;pre class="brush:plain;"&gt;# adduser postgres
# mkdir /usr/local/pgsql/data
# chown postgres.postgres /usr/local/pgsql/data
&lt;/pre&gt;&lt;br /&gt;
データベースクラスタの作成&lt;br /&gt;
&lt;pre class="brush:plain;"&gt;# su - postgres
$ /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
$ ls -1 /usr/local/pgsql/data/
PG_VERSION
base
global
pg_clog
pg_hba.conf
pg_ident.conf
pg_multixact
pg_notify
pg_serial
pg_stat_tmp
pg_subtrans
pg_tblspc
pg_twophase
pg_xlog
postgresql.conf
&lt;/pre&gt;&lt;br /&gt;
PostgreSQLの起動と確認&lt;br /&gt;
&lt;pre class="brush:plain;"&gt;$ /usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data start
server starting
$ /usr/local/pgsql/bin/psql 
psql (9.1.2)
&lt;/pre&gt;&lt;br /&gt;
【PROJ.4のインストール】&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush:plain;"&gt;# curl -OL http://download.osgeo.org/proj/proj-4.7.0.tar.gz
# tar xvzf proj-4.7.0.tar.gz
# cd proj-4.7.0
# make
# make install
&lt;/pre&gt;&lt;br /&gt;
【GEOSのインストール】&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush:plain;"&gt;# curl -OL http://download.osgeo.org/geos/geos-3.3.2.tar.bz2
# bunzip2 geos-3.3.2.tar.bz2
# tar xvf geos-3.3.2.tar 
# cd geos-3.3.2
# ./configure
# make
# make install
&lt;/pre&gt;&lt;br /&gt;
【PostGISのインストール】&lt;br /&gt;
&lt;br /&gt;
PostGISのインストール&lt;br /&gt;
&lt;pre class="brush:plain;"&gt;# curl -OL http://postgis.refractions.net/download/postgis-1.5.3.tar.gz
# tar xvzf postgis-1.5.3.tar.gz
# cd postgis-1.5.3
# ./configure --with-pgconfig=/usr/local/pgsql/bin/pg_config
# make
# make install
&lt;/pre&gt;&lt;br /&gt;
共有ライブラリの認識&lt;br /&gt;
&lt;pre class="brush:plain;"&gt;# /sbin/ldconfig
&lt;/pre&gt;&lt;br /&gt;
PostGISの利用&lt;br /&gt;
&lt;pre class="brush:plain;"&gt;$ /usr/local/pgsql/bin/createdb sample
$ /usr/local/pgsql/bin/psql -d sample -f /usr/local/src/postgis-1.5.3/postgis/postgis.sql
&lt;/pre&gt;&lt;br /&gt;
次はPostgreSQL(9.1)のレプリケーションを試す予定。(明日の朝までに...)&lt;br /&gt;
--------&lt;br /&gt;
&lt;a href="http://www.suz-lab.com"&gt;http://www.suz-lab.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6373299112985466176-7764802169632169693?l=blog.suz-lab.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/suz-lab-blog/~4/QOoirkmXQ8k" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.suz-lab.com/feeds/7764802169632169693/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6373299112985466176&amp;postID=7764802169632169693" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6373299112985466176/posts/default/7764802169632169693?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6373299112985466176/posts/default/7764802169632169693?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/suz-lab-blog/~3/QOoirkmXQ8k/centos6postgresql9.html" title="CentOS(6.2) &amp; PostgreSQL(9.1) &amp; PostGIS(1.5)" /><author><name>suz-lab</name><uri>http://www.blogger.com/profile/01435551125452800565</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://blog.suz-lab.com/2012/02/centos6postgresql9.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU4HRXw8eyp7ImA9WhRaEkQ.&quot;"><id>tag:blogger.com,1999:blog-6373299112985466176.post-1027507224409994450</id><published>2012-02-15T18:25:00.000+09:00</published><updated>2012-02-15T18:25:34.273+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-15T18:25:34.273+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="PHP" /><category scheme="http://www.blogger.com/atom/ns#" term="AWS" /><title>SimpleDBのドメイン内のデータを一覧表示(NextTokenに注意)</title><content type="html">スズキです。&lt;br /&gt;
&lt;br /&gt;
SimpleDBはRDBのSELECTのようなクエリーが発行でき、&lt;br /&gt;
条件に該当するデータを取得することができます。&lt;br /&gt;
&lt;br /&gt;
しかし、一回のAPIリクエストで取得できるデータ数は100件までで、&lt;br /&gt;
それ以降を取得するには、「NextToken」というものを利用して、&lt;br /&gt;
再度同様のクエリーをAPIでリクエストする必要があります。&lt;br /&gt;
&lt;br /&gt;
具体的には、100件以上該当データがある場合、レスポンスにNextTokenが含まれ、&lt;br /&gt;
そのNextTokenを指定して、再度同様のクエリーをリクエストする形になります。&lt;br /&gt;
当然、次の100件でもデータが取りきれない場合は、レスポンスに同様に&lt;br /&gt;
NextTokenが含まれるので、それを用いて再度リクエストすることになります。&lt;br /&gt;
&lt;br /&gt;
上記を考慮すると、すべてのデータを取得するには、NextTokenがあるかぎり、&lt;br /&gt;
複数のリクエストを行う必要があります。&lt;br /&gt;
&lt;br /&gt;
ということで、PHPで簡単に作ってみました。&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush:php;"&gt;&amp;lt;?php
require_once(AWS_SDK_PATH . "/sdk.class.php");
date_default_timezone_set("Asia/Tokyo");

$sdb = new AmazonSDB(
&amp;nbsp; &amp;nbsp; array("key" =&amp;gt; SDB_KEY_ACCESS, "secret" =&amp;gt; SDB_KEY_SECRET)
);
$sdb-&amp;gt;set_region(AmazonSDB::REGION_APAC_NE1);

$query = "SELECT * FROM log WHERE uid &amp;gt;= '0' ORDER BY uid DESC";
$option = array();
do {
&amp;nbsp; &amp;nbsp; $response = $sdb-&amp;gt;select($query, $option);
&amp;nbsp; &amp;nbsp; foreach($response-&amp;gt;body-&amp;gt;SelectResult-&amp;gt;Item as $item) {
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; print($item-&amp;gt;Name . "\t");
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; foreach($item-&amp;gt;Attribute as $attribute) {
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; print($attribute-&amp;gt;Name &amp;nbsp;. ":");
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; print($attribute-&amp;gt;Value . "\t");
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; print("\n");
&amp;nbsp; &amp;nbsp; }
&amp;nbsp; &amp;nbsp; if(isset($response-&amp;gt;body-&amp;gt;SelectResult-&amp;gt;NextToken)) {
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $option["NextToken"] = $response-&amp;gt;body-&amp;gt;SelectResult-&amp;gt;NextToken;
&amp;nbsp; &amp;nbsp; } else {
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $option["NextToken"] = null;
&amp;nbsp; &amp;nbsp; }
} while($option["NextToken"] != null);

exit(0);
?&amp;gt;
&lt;/pre&gt;&lt;br /&gt;
実行すると下記のようになります。&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush:plain;"&gt;# php list-data.php
4f3b67cf5396d8.04566676 uid:1 timestamp:1329293263 action:1 
4f3b65774e50c6.59284865 uid:1 timestamp:1329292663 action:1 
4f3b64ab8239a8.32909808 uid:1 timestamp:1329292459 action:1 
4f3b649b3a3cd1.62613728 uid:1 timestamp:1329292443 action:1 
4f3b625e9e17f1.40124430 uid:1 timestamp:1329291870 action:1 
4f3b58032f0737.20329909 uid:1 timestamp:1329289219 action:1
...
&lt;/pre&gt;&lt;br /&gt;
これ応用すれば、SipmleDBのバックアップも簡単に作れるかも。&lt;br /&gt;
--------&lt;br /&gt;
http://www.suz-lab.com&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6373299112985466176-1027507224409994450?l=blog.suz-lab.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/suz-lab-blog/~4/htpsgkUODHo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.suz-lab.com/feeds/1027507224409994450/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6373299112985466176&amp;postID=1027507224409994450" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6373299112985466176/posts/default/1027507224409994450?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6373299112985466176/posts/default/1027507224409994450?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/suz-lab-blog/~3/htpsgkUODHo/simpledbnexttoken.html" title="SimpleDBのドメイン内のデータを一覧表示(NextTokenに注意)" /><author><name>suz-lab</name><uri>http://www.blogger.com/profile/01435551125452800565</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://blog.suz-lab.com/2012/02/simpledbnexttoken.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkQNQX47cCp7ImA9WhRbEE0.&quot;"><id>tag:blogger.com,1999:blog-6373299112985466176.post-710061847183997521</id><published>2012-01-31T17:59:00.000+09:00</published><updated>2012-01-31T17:59:50.008+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-31T17:59:50.008+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="PHP" /><category scheme="http://www.blogger.com/atom/ns#" term="AWS" /><title>VPCのサブネット内で利用できるIPアドレスを取得(PHP)</title><content type="html">スズキです。&lt;br /&gt;
&lt;br /&gt;
VPCでELBを利用していると、ELBは負荷に応じてスケールして&lt;br /&gt;
サブネット内のIPアドレスを消費してしまいます。&lt;br /&gt;
&lt;br /&gt;
ですので、ELBが存在するサブネット内で十分は利用可能なIPアドレスがあるか、&lt;br /&gt;
逐次チェックしたいと思うはずです。&lt;br /&gt;
&lt;br /&gt;
ということでPHP(AWS SDK)でVPCのサブネットの利用可能なIPアドレスを取得してみました。&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush:php;"&gt;#!/usr/bin/php
&amp;lt;?php
require_once("/opt/aws/php/latest/sdk.class.php");
$ec2 = new AmazonEC2("ACCESS_KEY", "SECRET_KEY");
$ec2-&amp;gt;set_region("ap-northeast-1");
$response = $ec2-&amp;gt;describe_subnets(array("SubnetId" =&amp;gt; "subnet-xxxxxxxx"));
print((int)$response-&amp;gt;body-&amp;gt;subnetSet-&amp;gt;item-&amp;gt;availableIpAddressCount);
?&amp;gt;
&lt;/pre&gt;&lt;br /&gt;
実行すると下記のようになります。&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush:php;"&gt;# ./get-subnet-ip 
249
&lt;/pre&gt;&lt;br /&gt;
これも、また、Nagiosのプラグインにしよう。&lt;br /&gt;
--------&lt;br /&gt;
&lt;a href="http://www.suz-lab.com"&gt;http://www.suz-lab.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6373299112985466176-710061847183997521?l=blog.suz-lab.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/suz-lab-blog/~4/zjDEw5rIuJA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.suz-lab.com/feeds/710061847183997521/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6373299112985466176&amp;postID=710061847183997521" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6373299112985466176/posts/default/710061847183997521?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6373299112985466176/posts/default/710061847183997521?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/suz-lab-blog/~3/zjDEw5rIuJA/vpcipphp.html" title="VPCのサブネット内で利用できるIPアドレスを取得(PHP)" /><author><name>suz-lab</name><uri>http://www.blogger.com/profile/01435551125452800565</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://blog.suz-lab.com/2012/01/vpcipphp.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkAARHY_fCp7ImA9WhRUGU4.&quot;"><id>tag:blogger.com,1999:blog-6373299112985466176.post-1076002909688413801</id><published>2012-01-30T23:45:00.000+09:00</published><updated>2012-01-30T23:45:45.844+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-30T23:45:45.844+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Nagios" /><category scheme="http://www.blogger.com/atom/ns#" term="AWS" /><title>NagiosのCloudWatchプラグイン(PHP版)でRDSの監視</title><content type="html">スズキです。&lt;br /&gt;
&lt;br /&gt;
こちらでEC2のCPU使用率が監視できるようになったので、&lt;br /&gt;
&lt;blockquote&gt;&lt;a href="http://blog.suz-lab.com/2012/01/nagioscloudwatch-ec2cpu.html"&gt;NagiosのCloudWatchプラグイン(PHP版)を実際に利用&lt;/a&gt;&lt;/blockquote&gt;今回はRDSの監視をしてみます。&lt;br /&gt;
&lt;br /&gt;
RDSで監視する項目は、実装の都合上(後述)&lt;br /&gt;
CPUUtilization, DatabaseConnections, SwapUsage&lt;br /&gt;
としています。&lt;br /&gt;
&lt;br /&gt;
Nagiosのコマンドは、下記のように設定します。&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush:plain;"&gt;# RDS CPUUtilization
define command {
    command_name    check-cloudwatch-cpu_rds-cloudpack
    command_line    /opt/cloudpack/nagios/check_cloudwatch -f /opt/cloudpack/conf/$HOSTGROUPNAME$/credential.yml -n AWS/RDS -m CPUUtilization -s Average -u Percent -d DBInstanceIdentifier -r ap-northeast-1 -w $ARG1$ -c $ARG2$ -v $ARG3$
}

# RDS DatabaseConnections
define command {
    command_name    check-cloudwatch-connection_rds-cloudpack
    command_line    /opt/cloudpack/nagios/check_cloudwatch -f /opt/cloudpack/conf/$HOSTGROUPNAME$/credential.yml -n AWS/RDS -m DatabaseConnections -s Average -u Count -d DBInstanceIdentifier -r ap-northeast-1 -w $ARG1$ -c $ARG2$ -v $ARG3$
}

# RDS SwapUsage
define command {
    command_name    check-cloudwatch-swap_rds-cloudpack
    command_line    /opt/cloudpack/nagios/check_cloudwatch -f /opt/cloudpack/conf/$HOSTGROUPNAME$/credential.yml -n AWS/RDS -m SwapUsage -s Average -u Bytes -d DBInstanceIdentifier -r ap-northeast-1 -w $ARG1$ -c $ARG2$ -v $ARG3$
}
&lt;/pre&gt;&lt;br /&gt;
そのコマンドを利用して、下記のように監視設定します。&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush:plain;"&gt;# RDS CPUUtilization
define service {
    use                    suzlab_cloudpack.jp-service
    host_name              suzlab_cloudpack.jp_suzlab-rds
    service_description    cpu_rds
    service_groups         cpu_rds
    check_command          check-cloudwatch-cpu_rds-cloudpack!60!80!suzlab
}

# RDS DatabaseConnections
define service {
    use                    suzlab_cloudpack.jp-service
    host_name              suzlab_cloudpack.jp_suzlab-rds
    service_description    connection_rds
    service_groups         connection_rds
    check_command          check-cloudwatch-connection_rds-cloudpack!50!100!suzlab
}

# RDS SwapUsage
define service {
    use                    suzlab_cloudpack.jp-service
    host_name              suzlab_cloudpack.jp_suzlab-rds
    service_description    swap_rds
    service_groups         swap_rds
    check_command          check-cloudwatch-swap_rds-cloudpack!0!0!suzlab
}
&lt;/pre&gt;&lt;br /&gt;
問題なければ下記のようにWebの方でも表示されているはずです。&lt;br /&gt;
&lt;br /&gt;
RDS CPUUtilization&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-hwo99GOs9gk/TyaqxYWEDlI/AAAAAAAAAd0/vPgjSClk9OE/s1600/Screen+Shot+2012-01-30+at+11.23.53+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="215" src="http://4.bp.blogspot.com/-hwo99GOs9gk/TyaqxYWEDlI/AAAAAAAAAd0/vPgjSClk9OE/s400/Screen+Shot+2012-01-30+at+11.23.53+PM.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
RDS DatabaseConnections&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-vEYle1PAHgg/Tyaqxw_DSqI/AAAAAAAAAd4/J_I6hHnXFh8/s1600/Screen+Shot+2012-01-30+at+11.28.16+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="215" src="http://4.bp.blogspot.com/-vEYle1PAHgg/Tyaqxw_DSqI/AAAAAAAAAd4/J_I6hHnXFh8/s400/Screen+Shot+2012-01-30+at+11.28.16+PM.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
RDS SwapUsage&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-QPCApcIgrQ4/TyaqyH_VW_I/AAAAAAAAAd8/y6d05rN9M0s/s1600/Screen+Shot+2012-01-30+at+11.29.20+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="216" src="http://4.bp.blogspot.com/-QPCApcIgrQ4/TyaqyH_VW_I/AAAAAAAAAd8/y6d05rN9M0s/s400/Screen+Shot+2012-01-30+at+11.29.20+PM.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
ちなみに現状のNagiosのCloudWatchプラグインのコードは次のようになっています。&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush:php;"&gt;#!/usr/bin/php
&amp;lt;?php
require_once("/opt/aws/php/latest/sdk.class.php");

// define status
$ok &amp;nbsp; &amp;nbsp; &amp;nbsp; = array("code" =&amp;gt; 0, "name" =&amp;gt; "OK");
$warning &amp;nbsp;= array("code" =&amp;gt; 1, "name" =&amp;gt; "WARNING");
$critical = array("code" =&amp;gt; 2, "name" =&amp;gt; "CRITICAL");
$unknown &amp;nbsp;= array("code" =&amp;gt; 3, "name" =&amp;gt; "UNKNOWN");

// set option
$option = getopt("c:w:f:r:n:m:s:u:d:v:");
$critical_size = $option["c"];
$warning_size &amp;nbsp;= $option["w"];
$credential &amp;nbsp; &amp;nbsp;= yaml_parse_file($option["f"]);
$region &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;= $option["r"];
$namespace &amp;nbsp; &amp;nbsp; = $option["n"];
$metrics &amp;nbsp; &amp;nbsp; &amp;nbsp; = $option["m"];
$statistics &amp;nbsp; &amp;nbsp;= $option["s"];
$unit &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;= $option["u"];
$name &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;= $option["d"];
$value &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; = $option["v"];

// init cw
$cw = new AmazonCloudWatch($credential["accessKey"], $credential["secretKey"]);
$cw-&amp;gt;set_region($region);
date_default_timezone_set("Asia/Tokyo");

// get metric statistics
$response = $cw-&amp;gt;get_metric_statistics(
&amp;nbsp; &amp;nbsp; $namespace,
&amp;nbsp; &amp;nbsp; $metrics,
&amp;nbsp; &amp;nbsp; "-10 minutes",
&amp;nbsp; &amp;nbsp; "now",
&amp;nbsp; &amp;nbsp; 300,
&amp;nbsp; &amp;nbsp; $statistics,
&amp;nbsp; &amp;nbsp; $unit,
&amp;nbsp; &amp;nbsp; array(
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; "Dimensions" =&amp;gt; array(
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; array("Name" =&amp;gt; $name, "Value" =&amp;gt; $value)
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; )
&amp;nbsp; &amp;nbsp; )
);
$data = (float)$response-&amp;gt;body-&amp;gt;GetMetricStatisticsResult-&amp;gt;Datapoints-&amp;gt;member-&amp;gt;$statistics-&amp;gt;to_string();

// check status
if($data &amp;gt; $critical_size) {
&amp;nbsp; &amp;nbsp; $status = $critical["code"];
} elseif($data &amp;gt; $warning_size) {
&amp;nbsp; &amp;nbsp; $status = $warning["code"];
} elseif($data &amp;gt;= 0) {
&amp;nbsp; &amp;nbsp; $status = $ok["code"];
} else {
&amp;nbsp; &amp;nbsp; $status = $unknown["code"];
}

// output status
$output = " - ${namespace} ${metrics} ${statistics} ${name} ${value}: ${data} ${unit};| data=${data};${warning_size};${critical_size};0;";
switch($status) {
&amp;nbsp; &amp;nbsp; case $ok["code"]:
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; print("CloudWatch " . $ok["name"] &amp;nbsp; &amp;nbsp; &amp;nbsp; . $output);
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; exit($ok["code"]);
&amp;nbsp; &amp;nbsp; case $warning["code"]:
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; print("CloudWatch " . $warning["name"] &amp;nbsp;. $output);
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; exit($warning["code"]);
&amp;nbsp; &amp;nbsp; case $critical["code"]:
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; print("CloudWatch " . $critical["name"] . $output);
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; exit($critical["code"]);
&amp;nbsp; &amp;nbsp; case $unknown["code"]:
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; print("CloudWatch " . $unknown["name"] &amp;nbsp;. $output);
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; exit($unknown["code"]);
}
print("CloudWatch " . $unknown["name"] . $output);
exit($unknown["code"]);
?&amp;gt;
&lt;/pre&gt;&lt;br /&gt;
見てのとおり、WarningやCriticalは閾値「より大きい」の場合となっています...&lt;br /&gt;
RDSにはFreeableMemoryやFreeStorageSpaceと、閾値「より小さい」場合を&lt;br /&gt;
WarningやCriticalにする項目もあり、現状それには対応できていません...&lt;br /&gt;
&lt;br /&gt;
次回は「より小さい」にも対応してRDSの監視をもっと細かく出来るようにしよう！&lt;br /&gt;
--------&lt;br /&gt;
http://www.suz-lab.com&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6373299112985466176-1076002909688413801?l=blog.suz-lab.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/suz-lab-blog/~4/4vaahJY7MGs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.suz-lab.com/feeds/1076002909688413801/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6373299112985466176&amp;postID=1076002909688413801" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6373299112985466176/posts/default/1076002909688413801?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6373299112985466176/posts/default/1076002909688413801?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/suz-lab-blog/~3/4vaahJY7MGs/nagioscloudwatchphprds.html" title="NagiosのCloudWatchプラグイン(PHP版)でRDSの監視" /><author><name>suz-lab</name><uri>http://www.blogger.com/profile/01435551125452800565</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-hwo99GOs9gk/TyaqxYWEDlI/AAAAAAAAAd0/vPgjSClk9OE/s72-c/Screen+Shot+2012-01-30+at+11.23.53+PM.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://blog.suz-lab.com/2012/01/nagioscloudwatchphprds.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkMERHk6cCp7ImA9WhRUGU8.&quot;"><id>tag:blogger.com,1999:blog-6373299112985466176.post-4126037013858913468</id><published>2012-01-27T20:57:00.002+09:00</published><updated>2012-01-30T20:53:25.718+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-30T20:53:25.718+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Nagios" /><category scheme="http://www.blogger.com/atom/ns#" term="AWS" /><title>NagiosのCloudWatchプラグイン(PHP版)を実際に利用</title><content type="html">スズキです。&lt;br /&gt;
&lt;br /&gt;
少し時間がたってしまいましたが、下記で作成したNagiosのCloudWatchプラグインを&lt;br /&gt;
実際に利用して、EC2のCPU使用率を監視してみました。&lt;br /&gt;
&lt;blockquote&gt;&lt;a href="http://blog.suz-lab.com/2011/12/nagioscloudwatchphp.html"&gt;NagiosのCloudWatchプラグイン(PHP版)&lt;/a&gt;&lt;/blockquote&gt;まずは、下記のようにコマンドを定義します。&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush:plain;"&gt;define command {
    command_name    check-cloudwatch-cpu-cloudpack
    command_line    /opt/cloudpack/nagios/check_cloudwatch -f /opt/cloudpack/conf/$HOSTGROUPNAME$/credential.yml -n AWS/EC2 -m CPUUtilization -s Average -u Percent -d InstanceId -r ap-northeast-1 -w $ARG1$ -c $ARG2$ -v $ARG3$
}
&lt;/pre&gt;&lt;br /&gt;
次に、下記のように作成したコマンドを利用して、EC2を監視するようにします。&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush:plain;"&gt;define service {
    use                    admin_cloudpack.jp-service
    host_name              admin_cloudpack.jp_admin-a-ec2
    service_description    cloudwatch_cpu
    service_groups         cloudwatch_cpu
    check_command          check-cloudwatch-cpu-cloudpack!60!80!i-xxxxxxxx
}
&lt;/pre&gt;&lt;br /&gt;
今回はCPU使用率が60%でwarning、80%でcriticalになるようにしています。&lt;br /&gt;
&lt;br /&gt;
Nagiosを再起動すると、下記のように監視できていることが確認できます。&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-XIRpsCDwsXU/TyKNTGPv20I/AAAAAAAAAds/LiTwzv0HHq8/s1600/Screen+Shot+2012-01-27+at+8.33.12+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="http://4.bp.blogspot.com/-XIRpsCDwsXU/TyKNTGPv20I/AAAAAAAAAds/LiTwzv0HHq8/s400/Screen+Shot+2012-01-27+at+8.33.12+PM.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
次はRDSの監視も作ろう。&lt;br /&gt;
--------&lt;br /&gt;
&lt;a href="http://www.suz-lab.com/"&gt;http://www.suz-lab.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6373299112985466176-4126037013858913468?l=blog.suz-lab.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/suz-lab-blog/~4/OtQXAApfycs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.suz-lab.com/feeds/4126037013858913468/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6373299112985466176&amp;postID=4126037013858913468" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6373299112985466176/posts/default/4126037013858913468?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6373299112985466176/posts/default/4126037013858913468?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/suz-lab-blog/~3/OtQXAApfycs/nagioscloudwatch-ec2cpu.html" title="NagiosのCloudWatchプラグイン(PHP版)を実際に利用" /><author><name>suz-lab</name><uri>http://www.blogger.com/profile/01435551125452800565</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-XIRpsCDwsXU/TyKNTGPv20I/AAAAAAAAAds/LiTwzv0HHq8/s72-c/Screen+Shot+2012-01-27+at+8.33.12+PM.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://blog.suz-lab.com/2012/01/nagioscloudwatch-ec2cpu.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEEDSHkzcCp7ImA9WhRUE04.&quot;"><id>tag:blogger.com,1999:blog-6373299112985466176.post-7908298618530027300</id><published>2012-01-24T00:31:00.000+09:00</published><updated>2012-01-24T00:31:19.788+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-24T00:31:19.788+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="AWS" /><title>VPCのSubnetとELBの関係(Availability Zone編)</title><content type="html">スズキです。&lt;br /&gt;
&lt;br /&gt;
前回はVPC上で構築するELBと、ELBにアタッチするSubnetと、&lt;br /&gt;
そのSubnetで必要なIPアドレスについてまとめました。&lt;br /&gt;
&lt;blockquote&gt;&lt;a href="http://blog.suz-lab.com/2012/01/vpcsubnetelbavailable-ip.html"&gt;VPCのSubnetとELBの関係(Available IP編)&lt;/a&gt;&lt;br /&gt;
&lt;/blockquote&gt;そして、ELBにアタッチできるSubnetは複数アタッチすることができるので、&lt;br /&gt;
今回は、アタッチする複数のSubnetとAvailability Zoneの関係をまとめてみます。&lt;br /&gt;
&lt;br /&gt;
まずは下記のようにaゾーンに属する2つのSubnentとbゾーンに属する&lt;br /&gt;
1つのSubnetを容易します。&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-2HZiijqa8rs/Tx1zaOhV6HI/AAAAAAAAAdU/Qb2_wm7nt-I/s1600/Screen+Shot+2012-01-23+at+11.46.30+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;br class="Apple-interchange-newline" /&gt;&lt;img border="0" height="67" src="http://4.bp.blogspot.com/-2HZiijqa8rs/Tx1zaOhV6HI/AAAAAAAAAdU/Qb2_wm7nt-I/s400/Screen+Shot+2012-01-23+at+11.46.30+PM.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
あらかじめaゾーンのSubnet(10.0.0.0/24)をアタッチしておき、&lt;br /&gt;
さらに同じaゾーンのSubnet(10.0.4.0/25)をアタッチすると、&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-cK31VntnKc8/Tx1zZZ5TFRI/AAAAAAAAAdM/y0KrZ50Vrvw/s1600/Screen+Shot+2012-01-23+at+11.44.36+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="245" src="http://4.bp.blogspot.com/-cK31VntnKc8/Tx1zZZ5TFRI/AAAAAAAAAdM/y0KrZ50Vrvw/s400/Screen+Shot+2012-01-23+at+11.44.36+PM.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
下記のように後からアタッチしたSubnetに入れ替わってしまいます。&lt;br /&gt;
どうも、同じゾーンのSubnetは複数アタッチできないようです。&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-bXMkjjKAdR4/Tx1zZsJN3NI/AAAAAAAAAdQ/dgND3JpX8F4/s1600/Screen+Shot+2012-01-23+at+11.44.55+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="245" src="http://1.bp.blogspot.com/-bXMkjjKAdR4/Tx1zZsJN3NI/AAAAAAAAAdQ/dgND3JpX8F4/s400/Screen+Shot+2012-01-23+at+11.44.55+PM.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
このaゾーンのSubnet(10.0.4.0/25)がアタッチされた状態で、&lt;br /&gt;
bゾーンのSubnet(10.0.1.0/24)をアタッチすると、今度は追加される形で&lt;br /&gt;
アタッチされることがわかります。&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-vthAopw6Oko/Tx1zacr9r4I/AAAAAAAAAdc/h__wmh66_RE/s1600/Screen+Shot+2012-01-23+at+11.48.24+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="245" src="http://1.bp.blogspot.com/-vthAopw6Oko/Tx1zacr9r4I/AAAAAAAAAdc/h__wmh66_RE/s400/Screen+Shot+2012-01-23+at+11.48.24+PM.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
今度は複数ゾーンのSubnetをアタッチに関して、Subnetで必要なIPアドレス数を&lt;br /&gt;
確認してみます。&lt;br /&gt;
&lt;br /&gt;
まずは、aゾーン、bゾーン、それぞれの利用可能なIPアドレスの合計が&lt;br /&gt;
123未満の場合で試してみます。&lt;br /&gt;
(ELBを作成するにはSubnetに利用可能なIPアドレスが123必要です)&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-KcxqSod3yGw/Tx1wTaPTqUI/AAAAAAAAAbs/P5FwWmtKrFQ/s1600/Screen+Shot+2012-01-23+at+11.07.34+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="51" src="http://1.bp.blogspot.com/-KcxqSod3yGw/Tx1wTaPTqUI/AAAAAAAAAbs/P5FwWmtKrFQ/s400/Screen+Shot+2012-01-23+at+11.07.34+PM.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/--OteaZI7O-c/Tx1wT75up0I/AAAAAAAAAbw/UbSpIUcOQMc/s1600/Screen+Shot+2012-01-23+at+11.08.34+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="221" src="http://4.bp.blogspot.com/--OteaZI7O-c/Tx1wT75up0I/AAAAAAAAAbw/UbSpIUcOQMc/s400/Screen+Shot+2012-01-23+at+11.08.34+PM.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
やはり、IPアドレスが足りない旨のエラーが出力されます。&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-4t5msY03sc4/Tx1wURnk_mI/AAAAAAAAAb4/fKGd9Enwqwc/s1600/Screen+Shot+2012-01-23+at+11.10.43+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="88" src="http://2.bp.blogspot.com/-4t5msY03sc4/Tx1wURnk_mI/AAAAAAAAAb4/fKGd9Enwqwc/s400/Screen+Shot+2012-01-23+at+11.10.43+PM.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
次に、aゾーン、bゾーン、それぞれの利用可能なIPアドレスの合計が&lt;br /&gt;
123以上の場合で試してみます。&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-tsxAN09dxDc/Tx1wVvqbtCI/AAAAAAAAAcM/kUXoX7bvT-Y/s1600/Screen+Shot+2012-01-23+at+11.19.50+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;br class="Apple-interchange-newline" /&gt;&lt;img border="0" height="51" src="http://4.bp.blogspot.com/-tsxAN09dxDc/Tx1wVvqbtCI/AAAAAAAAAcM/kUXoX7bvT-Y/s400/Screen+Shot+2012-01-23+at+11.19.50+PM.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-fBKT8cc9lGU/Tx1wU1kkyII/AAAAAAAAAb8/XC7P7BLMZi8/s1600/Screen+Shot+2012-01-23+at+11.17.09+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="218" src="http://1.bp.blogspot.com/-fBKT8cc9lGU/Tx1wU1kkyII/AAAAAAAAAb8/XC7P7BLMZi8/s400/Screen+Shot+2012-01-23+at+11.17.09+PM.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
利用可能なIPアドレスの合計が123以上でも、まだ、&lt;br /&gt;
IPアドレスが足りない旨のエラーが出力されてしまいます。&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-tR9UOHZ8ig8/Tx1wVf_-BLI/AAAAAAAAAcE/bUXICXiXfyk/s1600/Screen+Shot+2012-01-23+at+11.18.16+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="78" src="http://2.bp.blogspot.com/-tR9UOHZ8ig8/Tx1wVf_-BLI/AAAAAAAAAcE/bUXICXiXfyk/s400/Screen+Shot+2012-01-23+at+11.18.16+PM.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
そして、aゾーン、bゾーンのどちらか一方の利用可能なIPアドレスが&lt;br /&gt;
123以上の場合で試してみます。&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-h0bchE2wMuI/Tx1wWLmR-jI/AAAAAAAAAcU/at613NULOqk/s1600/Screen+Shot+2012-01-23+at+11.27.54+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="51" src="http://3.bp.blogspot.com/-h0bchE2wMuI/Tx1wWLmR-jI/AAAAAAAAAcU/at613NULOqk/s400/Screen+Shot+2012-01-23+at+11.27.54+PM.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-Cvmjtp4LbH8/Tx1wW9ddwsI/AAAAAAAAAcc/G2yZ8Fzy4Mg/s1600/Screen+Shot+2012-01-23+at+11.28.46+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="243" src="http://1.bp.blogspot.com/-Cvmjtp4LbH8/Tx1wW9ddwsI/AAAAAAAAAcc/G2yZ8Fzy4Mg/s400/Screen+Shot+2012-01-23+at+11.28.46+PM.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
一方のゾーンの利用可能なIPアドレスの合計が123以上でも、やはり、&lt;br /&gt;
IPアドレスが足りない旨のエラーが出力されてしまいます。&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-ohyg6ptzHlY/Tx1wXYAbOZI/AAAAAAAAAcs/cmQiQniXBhA/s1600/Screen+Shot+2012-01-23+at+11.29.25+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="78" src="http://2.bp.blogspot.com/-ohyg6ptzHlY/Tx1wXYAbOZI/AAAAAAAAAcs/cmQiQniXBhA/s400/Screen+Shot+2012-01-23+at+11.29.25+PM.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
そして、aゾーン、bゾーンの両方の利用可能なIPアドレスが&lt;br /&gt;
123以上の場合で試してみます。&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-Y62JbcZyskE/Tx1wYS8m8LI/AAAAAAAAAc0/CkjiNdhYhOI/s1600/Screen+Shot+2012-01-23+at+11.30.54+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="51" src="http://1.bp.blogspot.com/-Y62JbcZyskE/Tx1wYS8m8LI/AAAAAAAAAc0/CkjiNdhYhOI/s400/Screen+Shot+2012-01-23+at+11.30.54+PM.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-JwUOQJ-qOLE/Tx1wZhYFVfI/AAAAAAAAAc4/7waD1rrP1xY/s1600/Screen+Shot+2012-01-23+at+11.31.39+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="245" src="http://3.bp.blogspot.com/-JwUOQJ-qOLE/Tx1wZhYFVfI/AAAAAAAAAc4/7waD1rrP1xY/s400/Screen+Shot+2012-01-23+at+11.31.39+PM.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
今度は無事、ELBを作成することができました。&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-it8OOiIavQ8/Tx1waG9myjI/AAAAAAAAAdA/JAdi2NiAneY/s1600/Screen+Shot+2012-01-23+at+11.33.55+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="36" src="http://3.bp.blogspot.com/-it8OOiIavQ8/Tx1waG9myjI/AAAAAAAAAdA/JAdi2NiAneY/s400/Screen+Shot+2012-01-23+at+11.33.55+PM.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
つまり、ELBに対して複数のゾーン(Subnet)をアタッチする場合は、&lt;br /&gt;
どちらのSubnetの利用可能なIPアドレスも123以上、必要となることになります。&lt;br /&gt;
&lt;br /&gt;
VPNとSubnetとELBの関係は、これである程度まとまったかな…&lt;br /&gt;
--------&lt;br /&gt;
&lt;a href="http://www.suz-lab.com/"&gt;http://www.suz-lab.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6373299112985466176-7908298618530027300?l=blog.suz-lab.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/suz-lab-blog/~4/ALuAlga6EEo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.suz-lab.com/feeds/7908298618530027300/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6373299112985466176&amp;postID=7908298618530027300" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6373299112985466176/posts/default/7908298618530027300?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6373299112985466176/posts/default/7908298618530027300?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/suz-lab-blog/~3/ALuAlga6EEo/vpcsubnetelbavailability-zone.html" title="VPCのSubnetとELBの関係(Availability Zone編)" /><author><name>suz-lab</name><uri>http://www.blogger.com/profile/01435551125452800565</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-2HZiijqa8rs/Tx1zaOhV6HI/AAAAAAAAAdU/Qb2_wm7nt-I/s72-c/Screen+Shot+2012-01-23+at+11.46.30+PM.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://blog.suz-lab.com/2012/01/vpcsubnetelbavailability-zone.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DE8CSX87fCp7ImA9WhRUEEs.&quot;"><id>tag:blogger.com,1999:blog-6373299112985466176.post-8656791099310185294</id><published>2012-01-20T22:17:00.002+09:00</published><updated>2012-01-20T22:41:08.104+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-20T22:41:08.104+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="AWS" /><title>VPCのSubnetとELBの関係(Available IP編)</title><content type="html">スズキです。&lt;br /&gt;
&lt;br /&gt;
以前、VPCでELBを作成するときに、所属するSubnetのCIDRブロックに関して紹介しました。&lt;br /&gt;
(少なくとも"/25"ということでしたが)&lt;br /&gt;
&lt;blockquote&gt;&lt;a href="http://blog.suz-lab.com/2011/12/vpcelbcidr.html"&gt;VPC上のELBに対するサブネットのCIDRブロックについて&lt;/a&gt;&lt;/blockquote&gt;&lt;br /&gt;
今回は、このELBとSubnetの関係を、もう少し掘り下げてみます。&lt;br /&gt;
&lt;br /&gt;
まずはSubnetを、どこまで細かく切れるか確認してみます。&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-JFw7f-yA6X8/TxljhQgiVZI/AAAAAAAAAaw/g5vXvaJu0TI/s1600/Screen+Shot+2012-01-20+at+9.23.15+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="245" src="http://3.bp.blogspot.com/-JFw7f-yA6X8/TxljhQgiVZI/AAAAAAAAAaw/g5vXvaJu0TI/s400/Screen+Shot+2012-01-20+at+9.23.15+PM.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Netmaskは最小28、最大16ということになります。&lt;br /&gt;
&lt;br /&gt;
では、最小の28でSubnet(10.0.2.0/28)を作ってみます。&lt;br /&gt;
ちなみに、この時に利用できるIP(Available IP)は11です。&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-lC46-IJCG18/TxljiL42mtI/AAAAAAAAAa4/mQUbE3ccsjs/s1600/Screen+Shot+2012-01-20+at+9.24.42+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="42" src="http://2.bp.blogspot.com/-lC46-IJCG18/TxljiL42mtI/AAAAAAAAAa4/mQUbE3ccsjs/s400/Screen+Shot+2012-01-20+at+9.24.42+PM.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
そして、このSubnetに対してELBを作成してみます。&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-qmuU355VOeg/Txlji0zGGqI/AAAAAAAAAbA/xYKLTn_F2Gk/s1600/Screen+Shot+2012-01-20+at+9.26.58+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="292" src="http://4.bp.blogspot.com/-qmuU355VOeg/Txlji0zGGqI/AAAAAAAAAbA/xYKLTn_F2Gk/s400/Screen+Shot+2012-01-20+at+9.26.58+PM.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
当然、Netmaskが25より小さいので作成できません。&lt;br /&gt;
エラーメッセージをみると、&lt;br /&gt;
&lt;blockquote&gt;ELBを作成するには少なくても123個の利用可能なIPアドレスが必要&lt;/blockquote&gt;ということになります。&lt;br /&gt;
&lt;br /&gt;
ということで、Netmaskを25にして作成してみます。&lt;br /&gt;
この時に利用できるIP(Available IP)は123です。&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-AVeoJvr9aBM/TxljjV5uGgI/AAAAAAAAAbI/u5GsIJSajcs/s1600/Screen+Shot+2012-01-20+at+9.28.46+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="42" src="http://3.bp.blogspot.com/-AVeoJvr9aBM/TxljjV5uGgI/AAAAAAAAAbI/u5GsIJSajcs/s400/Screen+Shot+2012-01-20+at+9.28.46+PM.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
当然、利用可能なIPアドレスが123個になるのでELBは作成できるのですが、&lt;br /&gt;
もう一つ同じSubnetにELBを作成しようとすると、今度は利用可能なIPアドレスが、&lt;br /&gt;
一つ減って122個なので、下記のように作成することができません。&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-i84aqJZtJYY/TxljkPVfUkI/AAAAAAAAAbU/r6or7VoyTHk/s1600/Screen+Shot+2012-01-20+at+9.31.23+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="291" src="http://2.bp.blogspot.com/-i84aqJZtJYY/TxljkPVfUkI/AAAAAAAAAbU/r6or7VoyTHk/s400/Screen+Shot+2012-01-20+at+9.31.23+PM.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
つまり、Netmaskが25のSubnetでは、ELBは一つしか作成できないことになります。&lt;br /&gt;
&lt;br /&gt;
今度は、Netmaskを24にして作成してみます。&lt;br /&gt;
この時に利用できるIP(Available IP)は251です。&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-LDKxVV9tko8/TxllcR60uvI/AAAAAAAAAbk/qCHenetmKQQ/s1600/Screen+Shot+2012-01-20+at+10.00.02+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="42" src="http://2.bp.blogspot.com/-LDKxVV9tko8/TxllcR60uvI/AAAAAAAAAbk/qCHenetmKQQ/s400/Screen+Shot+2012-01-20+at+10.00.02+PM.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
すると、当然といえば当然ですが、下記のように複数のELBを同一のSubnetに&lt;br /&gt;
作成することができます。&lt;br /&gt;
(おそらく残りの利用可能なIPが122個になるまで作成できると思います)&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-GwBFaWXujw8/Txljl8nGhyI/AAAAAAAAAbY/vQ-qV6zdfz0/s1600/Screen+Shot+2012-01-20+at+9.40.27+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="123" src="http://4.bp.blogspot.com/-GwBFaWXujw8/Txljl8nGhyI/AAAAAAAAAbY/vQ-qV6zdfz0/s400/Screen+Shot+2012-01-20+at+9.40.27+PM.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
そもそもELBが作成できるSubnetのNetmaskの最小が25になってるのは、&lt;br /&gt;
ELBが適切にスケールするためのはずです。&lt;br /&gt;
そうだと、ELB一つに対して、122個の利用可能なIPアドレスを用意しておく必要があると、&lt;br /&gt;
思ってしまうのですが、Netmaskが24の時は、おそらく残りのIPアドレスが122個になる、&lt;br /&gt;
129個のELBが作成できてしまうと思います。&lt;br /&gt;
この場合は、一つのELBに対して、平均１個弱のIPアドレスしかスケールのために&lt;br /&gt;
用意されてないことになります。&lt;br /&gt;
&lt;br /&gt;
このあたりは、少し不思議な感覚になってしまいますが、そういうものなのでしょう…&lt;br /&gt;
&lt;br /&gt;
とりあえず、整理できたぞ！&lt;br /&gt;
--------&lt;br /&gt;
http://www.suz-lab.com&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6373299112985466176-8656791099310185294?l=blog.suz-lab.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/suz-lab-blog/~4/c37bEOiQTI8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.suz-lab.com/feeds/8656791099310185294/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6373299112985466176&amp;postID=8656791099310185294" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6373299112985466176/posts/default/8656791099310185294?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6373299112985466176/posts/default/8656791099310185294?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/suz-lab-blog/~3/c37bEOiQTI8/vpcsubnetelbavailable-ip.html" title="VPCのSubnetとELBの関係(Available IP編)" /><author><name>suz-lab</name><uri>http://www.blogger.com/profile/01435551125452800565</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-JFw7f-yA6X8/TxljhQgiVZI/AAAAAAAAAaw/g5vXvaJu0TI/s72-c/Screen+Shot+2012-01-20+at+9.23.15+PM.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://blog.suz-lab.com/2012/01/vpcsubnetelbavailable-ip.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0MBRn48fip7ImA9WhRUEEg.&quot;"><id>tag:blogger.com,1999:blog-6373299112985466176.post-4164201029474366357</id><published>2012-01-20T20:36:00.001+09:00</published><updated>2012-01-20T20:37:37.076+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-20T20:37:37.076+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="skipfish" /><title>skipfishでログイン後のページのセキュリティ診断</title><content type="html">スズキです。&lt;br /&gt;
&lt;br /&gt;
下記でskipfishを現実的なスピードで実施できるようになったので、&lt;br /&gt;
&lt;blockquote&gt;&lt;a href="http://blog.suz-lab.com/2012/01/skipfish.html"&gt;skipfishを早く終了させるために&lt;/a&gt;&lt;/blockquote&gt;今回は、ログイン後のページに対してもセキュリティ診断してみます。&lt;br /&gt;
&lt;br /&gt;
といっても、ログイン後の埋めこまれているCookieをskipfish実行時に指定するだけです。&lt;br /&gt;
&lt;br /&gt;
Cookieの確認は下記のようにChromeなどのブラウザで行うことができます。&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-uc0XFr-sX-o/TxlNu36QyiI/AAAAAAAAAaU/KjSOKMiGGb8/s1600/Screen+Shot+2012-01-20+at+8.18.18+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="306" src="http://1.bp.blogspot.com/-uc0XFr-sX-o/TxlNu36QyiI/AAAAAAAAAaU/KjSOKMiGGb8/s400/Screen+Shot+2012-01-20+at+8.18.18+PM.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-uVOvKEakKhk/TxlPSGv4j7I/AAAAAAAAAac/PVzvZJ5f-Cw/s1600/Screen+Shot+2012-01-20+at+8.23.47+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="223" src="http://2.bp.blogspot.com/-uVOvKEakKhk/TxlPSGv4j7I/AAAAAAAAAac/PVzvZJ5f-Cw/s400/Screen+Shot+2012-01-20+at+8.23.47+PM.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
上記で確認した、ログイン維持に利用しているCookieを、&lt;br /&gt;
下記のようにskipfish実行時に指定(-C CAKEPHP=xxxxxxxxxxxxxxxxxxxxxxxxxx)します。&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush:plain;"&gt;# ./skipfish -LVY -W /dev/null -C CAKEPHP=xxxxxxxxxxxxxxxxxxxxxxxxxx \
&gt; -X /login -X /logout -o portal-auth http://www.suz-lab.com/
&lt;/pre&gt;&lt;br /&gt;
ここで、”-X”オプションは除外するパスを指定するもので、&lt;br /&gt;
今回はセッションがクリアされてしまう、ログイン(/login)とログアウト(/logout)を&lt;br /&gt;
除外するようにしています。&lt;br /&gt;
&lt;br /&gt;
セキュリティ診断対象のWebサーバのサクセスログで、&lt;br /&gt;
ちゃんとログインしていないとアクセスできないページが出力されていれば、成功です。&lt;br /&gt;
&lt;br /&gt;
セキュリティ診断職人、ブラッシュアップしよう。&lt;br /&gt;
--------&lt;br /&gt;
&lt;a href="http://www.suz-lab.com"&gt;http://www.suz-lab.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6373299112985466176-4164201029474366357?l=blog.suz-lab.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/suz-lab-blog/~4/6mfZpfyMKts" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.suz-lab.com/feeds/4164201029474366357/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6373299112985466176&amp;postID=4164201029474366357" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6373299112985466176/posts/default/4164201029474366357?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6373299112985466176/posts/default/4164201029474366357?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/suz-lab-blog/~3/6mfZpfyMKts/skipfish_20.html" title="skipfishでログイン後のページのセキュリティ診断" /><author><name>suz-lab</name><uri>http://www.blogger.com/profile/01435551125452800565</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-uc0XFr-sX-o/TxlNu36QyiI/AAAAAAAAAaU/KjSOKMiGGb8/s72-c/Screen+Shot+2012-01-20+at+8.18.18+PM.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://blog.suz-lab.com/2012/01/skipfish_20.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkIMRXgzfip7ImA9WhRVGEU.&quot;"><id>tag:blogger.com,1999:blog-6373299112985466176.post-6002460477889633868</id><published>2012-01-18T18:52:00.002+09:00</published><updated>2012-01-18T18:56:24.686+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-18T18:56:24.686+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="cryptsetup" /><category scheme="http://www.blogger.com/atom/ns#" term="DRBD" /><title>暗号化ファイルシステム(cryptsetup)を更にDRBDで冗長化(2)</title><content type="html">スズキです。&lt;br /&gt;
&lt;br /&gt;
こちらでDRBD上にcryptsetupで暗号化ファイルシステムを作成したので、&lt;br /&gt;
&lt;blockquote&gt;&lt;a href="http://blog.suz-lab.com/2012/01/drbd.html"&gt;暗号化ファイルシステム(cryptsetup)を更にDRBDで冗長化(1)&lt;/a&gt;&lt;/blockquote&gt;今回は、スタンバイ状態のマシンにフェイルオーバーしても、&lt;br /&gt;
問題なくファイルシステムが利用できるか確認してみます。&lt;br /&gt;
&lt;br /&gt;
まずは、アクティブマシンでの作業です。&lt;br /&gt;
&lt;br /&gt;
ファイルシステムの中身を確認し、&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush:plain;"&gt;# ls /mnt/encrypted/
lost+found  test.txt
&lt;/pre&gt;&lt;br /&gt;
アンマウントし、&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush:plain;"&gt;# umount /mnt/encrypted/
&lt;/pre&gt;&lt;br /&gt;
DRBDもセカンダリにし、&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush:plain;"&gt;# drbdsetup /dev/drbd0 secondary
&lt;/pre&gt;&lt;br /&gt;
DRBDの状態がセカンダリになっていることを確認しておきます。&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush:plain;"&gt;# /etc/init.d/drbd status
drbd driver loaded OK; device status:
version: 8.3.12 (api:88/proto:86-96)
GIT-hash: e2a8ef4656be026bbae540305fcb998a5991090f build by dag@Build32R6, 2011-11-20 10:55:07
m:res    cs         ro                   ds                 p  mounted  fstype
0:mysql  Connected  Secondary/Secondary  UpToDate/UpToDate  C
&lt;/pre&gt;&lt;br /&gt;
次に、スタンバイマシンでの作業です。&lt;br /&gt;
&lt;br /&gt;
まずは、DRBDをプライマリにします。&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush:plain;"&gt;# drbdsetup /dev/drbd0 primary
&lt;/pre&gt;&lt;br /&gt;
次に、ちゃんとプライマリになっていることを確認します。&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush:plain;"&gt;# /etc/init.d/drbd status
drbd driver loaded OK; device status:
version: 8.3.12 (api:88/proto:86-96)
GIT-hash: e2a8ef4656be026bbae540305fcb998a5991090f build by dag@Build32R6, 2011-11-20 10:55:07
m:res    cs         ro                 ds                 p  mounted  fstype
0:mysql  Connected  Primary/Secondary  UpToDate/UpToDate  C
&lt;/pre&gt;&lt;br /&gt;
そして、DRBDのデバイスをオープンします。オープン時に聞かれるパスフレーズは、&lt;br /&gt;
アクティブサーバで入力したものと同じ物を利用します。&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush:plain;"&gt;# cryptsetup luksOpen /dev/drbd0 encrypted
Enter passphrase for /dev/drbd0: 
&lt;/pre&gt;&lt;br /&gt;
最後に、マウントして、ファイルシステムとして利用できるようにします。&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush:plain;"&gt;# mount -t ext4 /dev/mapper/encrypted /mnt/encrypted
&lt;/pre&gt;&lt;br /&gt;
ファイルシステムの中身を確認すると、&lt;br /&gt;
アクティブサーバと同様の状態であることがわかります。&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush:plain;"&gt;# ls /mnt/encrypted/
lost+found  test.txt
&lt;/pre&gt;&lt;br /&gt;
Next Stepとしては、&lt;br /&gt;
&lt;blockquote&gt;(1)パスフレーズなしで利用できるよにする。&lt;br /&gt;
(2)Heartbeatと連動してフェイルオーバーするようにする。&lt;br /&gt;
(3)フェイルオーバー時に接続先も自動的に変更するよにする(EIP/VPCルーティング)&lt;br /&gt;
&lt;/blockquote&gt;といった感じでしょうか？(上記もブログ化できるように頑張ります)&lt;br /&gt;
&lt;br /&gt;
とりあえず、skipfishに戻るか...&lt;br /&gt;
--------&lt;br /&gt;
&lt;a href="http://www.suz-lab.com"&gt;http://www.suz-lab.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6373299112985466176-6002460477889633868?l=blog.suz-lab.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/suz-lab-blog/~4/8fVKKy1aqb0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.suz-lab.com/feeds/6002460477889633868/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6373299112985466176&amp;postID=6002460477889633868" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6373299112985466176/posts/default/6002460477889633868?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6373299112985466176/posts/default/6002460477889633868?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/suz-lab-blog/~3/8fVKKy1aqb0/drbdcryptsetup-cryptsetupdrbd1-ls.html" title="暗号化ファイルシステム(cryptsetup)を更にDRBDで冗長化(2)" /><author><name>suz-lab</name><uri>http://www.blogger.com/profile/01435551125452800565</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://blog.suz-lab.com/2012/01/drbdcryptsetup-cryptsetupdrbd1-ls.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkEHQ3s_cCp7ImA9WhRVGEo.&quot;"><id>tag:blogger.com,1999:blog-6373299112985466176.post-3359789400733956353</id><published>2012-01-18T17:37:00.002+09:00</published><updated>2012-01-18T18:23:52.548+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-18T18:23:52.548+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="cryptsetup" /><category scheme="http://www.blogger.com/atom/ns#" term="DRBD" /><title>暗号化ファイルシステム(cryptsetup)を更にDRBDで冗長化(1)</title><content type="html">スズキです。&lt;br /&gt;
&lt;br /&gt;
クラウド上だと、セキュリティを気にし、ディスクの暗号化が要件になることが&lt;br /&gt;
よくあります。このような場合は、下記で紹介されているようにcryptsetupと呼ばれる&lt;br /&gt;
オープンソースのツールを利用して実現することができます。&lt;br /&gt;
&lt;blockquote&gt;&lt;a href="http://lost-and-found-narihiro.blogspot.com/2010/05/cryptsetup.html"&gt;cryptsetupで暗号化ファイルシステムの作成 - lost and found ( for me ? )&lt;/a&gt;&lt;/blockquote&gt;今回は、この暗号化されたファイルシステム(ディスク)をさらに"DRBD"で&lt;br /&gt;
冗長化する方法を試してみます。&lt;br /&gt;
&lt;br /&gt;
その前に、DRBDの状態を確認して、作業するマシンがプライマリになるように&lt;br /&gt;
しておきます。&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush:plain;"&gt;# drbdsetup /dev/drbd0 primary
# /etc/init.d/drbd status
drbd driver loaded OK; device status:
version: 8.3.12 (api:88/proto:86-96)
GIT-hash: e2a8ef4656be026bbae540305fcb998a5991090f build by dag@Build32R6, 2011-11-20 10:55:07
m:res    cs         ro                 ds                 p  mounted  fstype
0:mysql  Connected  Primary/Secondary  UpToDate/UpToDate  C
&lt;/pre&gt;&lt;br /&gt;
まずは、cryptsetup(CentOS 6)をインストールします。&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush:plain;"&gt;# yum -y install cryptsetup
&lt;/pre&gt;&lt;br /&gt;
次に、DRBDのデバイス(/dev/drbd0)をフォーマットします。&lt;br /&gt;
フォーマット時にパスフレーズを入力する必要もおります。&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush:plain;"&gt;# cryptsetup -y luksFormat --cipher aes-cbc-essiv:sha256 --key-size 256 /dev/drbd0 

WARNING!
========
This will overwrite data on /dev/drbd0 irrevocably.

Are you sure? (Type uppercase yes): YES
Enter LUKS passphrase: 
Verify passphrase: 
&lt;/pre&gt;&lt;br /&gt;
そして、フォーマットしたデバイスをオープンします。オープン時にも同様の&lt;br /&gt;
パスフレーズを入力します。オープンされると、/dev/mapper/encryptedという&lt;br /&gt;
デバイス(デバイスマッパー)が作成され、以後、このデバイスを利用していきます。&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush:plain;"&gt;# cryptsetup luksOpen /dev/drbd0 encrypted
Enter passphrase for /dev/drbd0: 
&lt;/pre&gt;&lt;br /&gt;
その後、ファイルシステムをフォーマットします。&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush:plain;"&gt;# mkfs.ext4 /dev/mapper/encrypted 
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
65408 inodes, 261615 blocks
13080 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=268435456
8 block groups
32768 blocks per group, 32768 fragments per group
8176 inodes per group
Superblock backups stored on blocks: 
 32768, 98304, 163840, 229376

Writing inode tables: done                            
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 36 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
&lt;/pre&gt;&lt;br /&gt;
最後にマウントすることでdrbdで冗長化された暗号化ファイルシステムが&lt;br /&gt;
利用できるようになります。&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush:plain;"&gt;# mkdir /mnt/encrypted
# mount -t ext4 /dev/mapper/encrypted /mnt/encrypted
&lt;/pre&gt;&lt;br /&gt;
次は、フェイルオーバーしても(スタンバイマシンで)暗号化ファイルシステムが&lt;br /&gt;
利用できることを確認してみます。&lt;br /&gt;
&lt;br /&gt;
多分、大丈夫...&lt;br /&gt;
--------&lt;br /&gt;
&lt;a href="http://www.suz-lab.com"&gt;http://www.suz-lab.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6373299112985466176-3359789400733956353?l=blog.suz-lab.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/suz-lab-blog/~4/rJzXWyiaEKU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.suz-lab.com/feeds/3359789400733956353/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6373299112985466176&amp;postID=3359789400733956353" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6373299112985466176/posts/default/3359789400733956353?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6373299112985466176/posts/default/3359789400733956353?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/suz-lab-blog/~3/rJzXWyiaEKU/drbd.html" title="暗号化ファイルシステム(cryptsetup)を更にDRBDで冗長化(1)" /><author><name>suz-lab</name><uri>http://www.blogger.com/profile/01435551125452800565</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://blog.suz-lab.com/2012/01/drbd.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0IARX08fip7ImA9WhRVGE0.&quot;"><id>tag:blogger.com,1999:blog-6373299112985466176.post-4195272512312200812</id><published>2012-01-17T23:12:00.001+09:00</published><updated>2012-01-17T23:12:24.376+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-17T23:12:24.376+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Security" /><category scheme="http://www.blogger.com/atom/ns#" term="Google" /><title>skipfishを早く終了させるために</title><content type="html">スズキです。&lt;br /&gt;
&lt;br /&gt;
以前、下記よりskipfishを利用したセキュリティ診断を紹介しました。&lt;br /&gt;
&lt;blockquote&gt;&lt;a href="http://blog.suz-lab.com/2011/05/skipfishweb.html"&gt;"skipfish"でWebアプリのセキュリティ診断&lt;/a&gt;&lt;br /&gt;
&lt;/blockquote&gt;&lt;br /&gt;
しかしこのskipfish、実際に利用してみると診断が全然終わりません。&lt;br /&gt;
アクセスログなどでアクセス内容を確認してみると、延々と、膨大な辞書ファイル上の&lt;br /&gt;
キーワードに対して、それらをファイル名としたURLのチェックをしています。&lt;br /&gt;
&lt;br /&gt;
このURLチェックは実行時間を考えると現実的ではないので、下記のようなオプションで、&lt;br /&gt;
このチェックを行わないようにすることができます。&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush:plain;"&gt;./skipfish -LVY -W /dev/null -o admin http://www.suz-lab.com/
&lt;/pre&gt;&lt;br /&gt;
オプションは下記のとおりです。&lt;br /&gt;
&lt;blockquote&gt;-L: do not auto-learn new keywords for the site&lt;br /&gt;
-V: do not update wordlist based on scan results&lt;br /&gt;
-Y: do not fuzz extensions in directory brute-force&lt;br /&gt;
-W wordlist: load an alternative wordlist (skipfish.wl)&lt;br /&gt;
(今回は辞書ファイルを使わないように"/dev/null"を指定しています)&lt;br /&gt;
&lt;/blockquote&gt;&lt;br /&gt;
これで、キーワードによるURLチェックがスキップでき、&lt;br /&gt;
セキュリティ診断を短時間で実施することができます。&lt;br /&gt;
&lt;br /&gt;
ディレクトリ数が少ないサイトならいいんだけど...&lt;br /&gt;
--------&lt;br /&gt;
&lt;a href="http://www.suz-lab.com"&gt;http://www.suz-lab.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6373299112985466176-4195272512312200812?l=blog.suz-lab.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/suz-lab-blog/~4/BDQEAiyHyJQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.suz-lab.com/feeds/4195272512312200812/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6373299112985466176&amp;postID=4195272512312200812" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6373299112985466176/posts/default/4195272512312200812?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6373299112985466176/posts/default/4195272512312200812?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/suz-lab-blog/~3/BDQEAiyHyJQ/skipfish.html" title="skipfishを早く終了させるために" /><author><name>suz-lab</name><uri>http://www.blogger.com/profile/01435551125452800565</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://blog.suz-lab.com/2012/01/skipfish.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0ECQ3g5fip7ImA9WhRVF0Q.&quot;"><id>tag:blogger.com,1999:blog-6373299112985466176.post-3727606581649650639</id><published>2012-01-17T15:21:00.003+09:00</published><updated>2012-01-17T19:21:02.626+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-17T19:21:02.626+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="AWS" /><title>スナップショットからWindowsインスタンスを復元</title><content type="html">スズキです。&lt;br /&gt;
&lt;br /&gt;
よく、スナップショットからAMIを作成して昔の状態のEC2インスタンスを復元する&lt;br /&gt;
ってことをやっているのですが、スナップショットからWindowsのAMIを作成することは、&lt;br /&gt;
現時点でできないようです。&lt;br /&gt;
&lt;br /&gt;
なので、定期的にスナップショットはとっているものの、いざ復元するときは、&lt;br /&gt;
AMIにはできないので、Windows自体の復元はできず、Root Device(Cドライブ)を&lt;br /&gt;
適当にアタッチして、ファイルを取り出すことしかできないと思っていました。&lt;br /&gt;
&lt;br /&gt;
そしたら &lt;a href="http://atnd.org/events/23125"&gt;cloudpack Night #1&lt;/a&gt; で &lt;a href="https://twitter.com/#!/oko_chang"&gt;@oko_chang&lt;/a&gt; が、それに近い内容を発表してくれました。&lt;br /&gt;
(ありがとうございます！)&lt;br /&gt;
&lt;br /&gt;
発表内容は、Windows AMIのリージョン間移行だったのですが、&lt;br /&gt;
移行元リージョンのWindowsをスナップショットとって移行先リージョンのWindowsで&lt;br /&gt;
復元するって部分は、まさに上記の問題の解決方法となります。&lt;br /&gt;
&lt;br /&gt;
基本的な考え方は、インスタンスはストップするとRoot DeviceのEBSも交換できるので、&lt;br /&gt;
AMIを作るのではなく、スナップショットから作成したRoot DeviceのEBSを、&lt;br /&gt;
適当なWindowsのものと差し替えてしまうものです。&lt;br /&gt;
&lt;br /&gt;
具体的な手順は下記となります。&lt;br /&gt;
&lt;br /&gt;
まずはバックアップです。&lt;br /&gt;
&lt;br /&gt;
(1)スナップショットを取るインスタンス(バックアップ元)を停止します。&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-S7MwKDTAqJ4/TxT9wHrc76I/AAAAAAAAAYE/75dhLRK8604/s1600/Screen+Shot+2012-01-16+at+5.29.17+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="367" src="http://3.bp.blogspot.com/-S7MwKDTAqJ4/TxT9wHrc76I/AAAAAAAAAYE/75dhLRK8604/s400/Screen+Shot+2012-01-16+at+5.29.17+PM.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
(2)停止したインスタンスのEBS(Root Device)のスナップショットをとります。&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-EAHMJBBEXnk/TxT9xHtgWvI/AAAAAAAAAYQ/M43eWrDEHxU/s1600/Screen+Shot+2012-01-16+at+5.32.58+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="72" src="http://2.bp.blogspot.com/-EAHMJBBEXnk/TxT9xHtgWvI/AAAAAAAAAYQ/M43eWrDEHxU/s400/Screen+Shot+2012-01-16+at+5.32.58+PM.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
(3)スナップショットがとれたら、取得元のインスタンスをターミネートします。&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: center;"&gt;&amp;nbsp;&lt;a href="http://4.bp.blogspot.com/-hz7fNJ2CGYg/TxT9zD8eVkI/AAAAAAAAAYo/hhyvqYJbCuA/s1600/Screen+Shot+2012-01-16+at+5.40.04+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="363" src="http://4.bp.blogspot.com/-hz7fNJ2CGYg/TxT9zD8eVkI/AAAAAAAAAYo/hhyvqYJbCuA/s400/Screen+Shot+2012-01-16+at+5.40.04+PM.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
そして、復元です。&lt;br /&gt;
&lt;br /&gt;
(4)スナップショットからEBSを作成します。&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-uLlfot2yLzg/TxT9x0-oxWI/AAAAAAAAAYY/LemOTIhI9RI/s1600/Screen+Shot+2012-01-16+at+5.38.13+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="96" src="http://1.bp.blogspot.com/-uLlfot2yLzg/TxT9x0-oxWI/AAAAAAAAAYY/LemOTIhI9RI/s400/Screen+Shot+2012-01-16+at+5.38.13+PM.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
※サイズはスナップショットと同じ(30G)にします。&lt;br /&gt;
※ゾーン(AZ)は復元に使うインスタンスと同じ(a)にします。&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-vHmZ8_PX5H8/TxT9yoZbBxI/AAAAAAAAAYg/eSaSYEVrye0/s1600/Screen+Shot+2012-01-16+at+5.38.47+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="162" src="http://3.bp.blogspot.com/-vHmZ8_PX5H8/TxT9yoZbBxI/AAAAAAAAAYg/eSaSYEVrye0/s400/Screen+Shot+2012-01-16+at+5.38.47+PM.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
(5)予め起動していた復元用インスタンス(Windows)を停止します。&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-CXXAvUJIBV8/TxT9zsxaxkI/AAAAAAAAAYw/8t-haNqkuTE/s1600/Screen+Shot+2012-01-16+at+5.46.00+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="367" src="http://2.bp.blogspot.com/-CXXAvUJIBV8/TxT9zsxaxkI/AAAAAAAAAYw/8t-haNqkuTE/s400/Screen+Shot+2012-01-16+at+5.46.00+PM.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
(6)復元用インスタンスのEBS(Root Device)をデタッチします。&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-ONnJkY5fRKU/TxT92MlqyJI/AAAAAAAAAZM/yClx09z7kI0/s1600/Screen+Shot+2012-01-16+at+5.50.45+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="71" src="http://3.bp.blogspot.com/-ONnJkY5fRKU/TxT92MlqyJI/AAAAAAAAAZM/yClx09z7kI0/s400/Screen+Shot+2012-01-16+at+5.50.45+PM.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
(7)復元用インスタンスにスナップショット(バックアップ元)から作成した&lt;br /&gt;
EBS(Root Device)をアタッチします。&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-zk4jRA7_dUc/TxT92q3mIMI/AAAAAAAAAZU/8G9ajQScM6U/s1600/Screen+Shot+2012-01-16+at+5.51.20+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="62" src="http://3.bp.blogspot.com/-zk4jRA7_dUc/TxT92q3mIMI/AAAAAAAAAZU/8G9ajQScM6U/s400/Screen+Shot+2012-01-16+at+5.51.20+PM.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
※デバイスはRoot Deviceとしてアタッチするので"/dev/sda1"とします。&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: center;"&gt;&amp;nbsp;&lt;a href="http://2.bp.blogspot.com/-RRLX-RDFImY/TxT95wqq37I/AAAAAAAAAaA/haAaJXie3DY/s1600/Screen+Shot+2012-01-16+at+6.09.50+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"&gt;&lt;img border="0" height="173" src="http://2.bp.blogspot.com/-RRLX-RDFImY/TxT95wqq37I/AAAAAAAAAaA/haAaJXie3DY/s400/Screen+Shot+2012-01-16+at+6.09.50+PM.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
(8)復元用インスタンスをスタートします。&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-qGcEAcYmzmM/TxT9385K1MI/AAAAAAAAAZo/ngXr1lhqG8s/s1600/Screen+Shot+2012-01-16+at+5.57.57+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="382" src="http://1.bp.blogspot.com/-qGcEAcYmzmM/TxT9385K1MI/AAAAAAAAAZo/ngXr1lhqG8s/s400/Screen+Shot+2012-01-16+at+5.57.57+PM.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
リモートデスクトップでログインすると、ちゃんとスナップショットをとったWindowsが&lt;br /&gt;
復元されていることを確認することができます。&lt;br /&gt;
&lt;br /&gt;
今まで、できないと思って、再インストールしてた...&lt;br /&gt;
--------&lt;br /&gt;
&lt;a href="http://www.suz-lab.com/"&gt;http://www.suz-lab.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6373299112985466176-3727606581649650639?l=blog.suz-lab.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/suz-lab-blog/~4/B4vgq1XnwsY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.suz-lab.com/feeds/3727606581649650639/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6373299112985466176&amp;postID=3727606581649650639" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6373299112985466176/posts/default/3727606581649650639?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6373299112985466176/posts/default/3727606581649650639?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/suz-lab-blog/~3/B4vgq1XnwsY/windows.html" title="スナップショットからWindowsインスタンスを復元" /><author><name>suz-lab</name><uri>http://www.blogger.com/profile/01435551125452800565</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-S7MwKDTAqJ4/TxT9wHrc76I/AAAAAAAAAYE/75dhLRK8604/s72-c/Screen+Shot+2012-01-16+at+5.29.17+PM.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://blog.suz-lab.com/2012/01/windows.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEYMQHczcCp7ImA9WhRWEEs.&quot;"><id>tag:blogger.com,1999:blog-6373299112985466176.post-3455006913782223805</id><published>2011-12-28T18:56:00.000+09:00</published><updated>2011-12-28T18:56:21.988+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-28T18:56:21.988+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="AWS" /><title>S3オリジンのCloudFrontでインデックスドキュメントやエラードキュメントを利用できるようにする</title><content type="html">スズキです。&lt;br /&gt;
&lt;br /&gt;
CloudFrontには"Default Root Object"という設定項目があり&lt;br /&gt;
"http://cloudfront.suz-lab.com/"などでアクセスすると、&lt;br /&gt;
上記項目で指定したファイル(ページ)が表示されるようになります。&lt;br /&gt;
&lt;br /&gt;
しかし、"http://cloudfront.suz-lab.com/sub/"などの&lt;br /&gt;
サブディレクトリに対するアクセスには対応してません。&lt;br /&gt;
&lt;br /&gt;
また、ステータスコード404などに対するエラードキュメントに関しても、&lt;br /&gt;
独自のエラーページを表示させることはできません。&lt;br /&gt;
&lt;br /&gt;
CloudFrontのオリジンをS3にしている場合(S3オリジン)は、&lt;br /&gt;
まさに上記の制限が、そのままきいてしまいます。&lt;br /&gt;
&lt;br /&gt;
ちなみにカスタムオリジンの場合はオリジン次第なので、オリジンサーバが&lt;br /&gt;
インデックスドキュメントやエラードキュメントを指定できるようにしていれば、&lt;br /&gt;
独自のエラードキュメントやアブディレクトリに対するインデックスドキュメントも&lt;br /&gt;
可能となります。&lt;br /&gt;
&lt;br /&gt;
しかし、やはりコンテンツは、高い可用性と耐久性を誇るS3に置いておきたいところです。&lt;br /&gt;
&lt;br /&gt;
そもそも、S3には"Web Site Hosting"と呼ばれる機能があり、その機能を有効にすると&lt;br /&gt;
サブディレクトリを含めたインデックスドキュメントとエラードキュメントを&lt;br /&gt;
独自のファイルに指定することができます。ただし、"Web Site Hosting"用のURLから&lt;br /&gt;
アクセスしてはじめて上記の機能を利用することができます。&lt;br /&gt;
&lt;br /&gt;
ここでまた、CloudFrontに戻ります。&lt;br /&gt;
&lt;br /&gt;
CloudFrontを設定するときに、S3オリジンでバケットを指定するのではなく、&lt;br /&gt;
カスタムオリジンで上記の"Web Site Hosting"のURLを指定することも、実はできます。&lt;br /&gt;
&lt;br /&gt;
カスタムオリジンにすれば"Web Site Hosting"機能の結果がキャッシュされるため、&lt;br /&gt;
サブディレクトリを含めたインデックスドキュメントや独自のエラードキュメントも、&lt;br /&gt;
実質、利用できていることになります。&lt;br /&gt;
&lt;br /&gt;
キャッシュ期間には注意です！&lt;br /&gt;
--------&lt;br /&gt;
http://www.suz-lab.com&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6373299112985466176-3455006913782223805?l=blog.suz-lab.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/suz-lab-blog/~4/tg9JFqJpK5U" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.suz-lab.com/feeds/3455006913782223805/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6373299112985466176&amp;postID=3455006913782223805" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6373299112985466176/posts/default/3455006913782223805?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6373299112985466176/posts/default/3455006913782223805?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/suz-lab-blog/~3/tg9JFqJpK5U/s3cloudfront.html" title="S3オリジンのCloudFrontでインデックスドキュメントやエラードキュメントを利用できるようにする" /><author><name>suz-lab</name><uri>http://www.blogger.com/profile/01435551125452800565</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://blog.suz-lab.com/2011/12/s3cloudfront.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEYCSXw8fSp7ImA9WhRXGUs.&quot;"><id>tag:blogger.com,1999:blog-6373299112985466176.post-8616023257335921901</id><published>2011-12-27T14:02:00.000+09:00</published><updated>2011-12-27T14:02:48.275+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-27T14:02:48.275+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="AWS" /><title>VPC上のELBに対するサブネットのCIDRブロックについて</title><content type="html">スズキです。&lt;br /&gt;
&lt;br /&gt;
VPC上のELBはサブネットに所属しますが、そもそもELBはスケールするので、&lt;br /&gt;
サブネットのIPアドレスレンジはある程度確保しておかなければいけないはずです。&lt;br /&gt;
&lt;br /&gt;
じゃあ、いくつ確保しておけばいいのか？という話ですが、&lt;br /&gt;
下記に記載されていました。&lt;br /&gt;
&lt;blockquote&gt;&lt;a href="http://docs.amazonwebservices.com/ElasticLoadBalancing/latest/DeveloperGuide/UserScenariosForVPC.html"&gt;How Do I Use Elastic Load Balancing in Amazon VPC?&lt;/a&gt;&lt;br /&gt;
&lt;/blockquote&gt;&lt;br /&gt;
つまり、次の引用のとおりです。&lt;br /&gt;
&lt;blockquote&gt;In order to ensure that your load balancer can scale properly,&lt;br /&gt;
the subnet that you attach the load balancer to should be at least a /25 CIDR block&lt;br /&gt;
and should have enough free IP addresses to scale.&lt;br /&gt;
&lt;br /&gt;
ELBが適切にスケールできるように、ELBが所属するサブネットのCIDRブロックは&lt;br /&gt;
少なくとも"/25"にし、自由に利用できるIPアドレスを確保すべきです。&lt;br /&gt;
&lt;/blockquote&gt;&lt;br /&gt;
例えば、下記のようにサブネットを割り振る感じになると思います。&lt;br /&gt;
&lt;blockquote&gt;サブネット: 192.168.1.0/25&lt;br /&gt;
ネットマスク: 255.255.255.128&lt;br /&gt;
ネットワーク: 192.168.1.0&lt;br /&gt;
ホストのレンジ: 192.168.1.1 - 192.168.1.126&lt;br /&gt;
ブロードキャスト: 192.168.1.127&lt;br /&gt;
&lt;/blockquote&gt;&lt;br /&gt;
ちなみにVPCの場合、&lt;br /&gt;
&lt;blockquote&gt;192.168.1.1 192.168.1.2 192.168.1.3&lt;/blockquote&gt;の先頭３つのIPアドレスが予約されているので、実際にEC2に割り振れるIPアドレスは&lt;br /&gt;
&lt;blockquote&gt;192.168.1.4 - 192.168.1.126&lt;/blockquote&gt;となります。&lt;br /&gt;
&lt;br /&gt;
とりあえずELBのサブネットは"/25"ってことですね。&lt;br /&gt;
--------&lt;br /&gt;
&lt;a href="http://www.suz-lab.com"&gt;http://www.suz-lab.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6373299112985466176-8616023257335921901?l=blog.suz-lab.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/suz-lab-blog/~4/SVjLgeWfgUU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.suz-lab.com/feeds/8616023257335921901/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6373299112985466176&amp;postID=8616023257335921901" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6373299112985466176/posts/default/8616023257335921901?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6373299112985466176/posts/default/8616023257335921901?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/suz-lab-blog/~3/SVjLgeWfgUU/vpcelbcidr.html" title="VPC上のELBに対するサブネットのCIDRブロックについて" /><author><name>suz-lab</name><uri>http://www.blogger.com/profile/01435551125452800565</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://blog.suz-lab.com/2011/12/vpcelbcidr.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0ICR3o4eCp7ImA9WhRXGUg.&quot;"><id>tag:blogger.com,1999:blog-6373299112985466176.post-1361301526341281135</id><published>2011-12-26T13:28:00.001+09:00</published><updated>2011-12-27T13:19:26.430+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-27T13:19:26.430+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="PHP" /><category scheme="http://www.blogger.com/atom/ns#" term="Nagios" /><category scheme="http://www.blogger.com/atom/ns#" term="AWS" /><title>NagiosのCloudWatchプラグイン(PHP版)</title><content type="html">スズキです。&lt;br /&gt;
&lt;br /&gt;
以前、&lt;a href="http://twitter.com/#!/j3tm0t0"&gt;@j3tm0t0&lt;/a&gt;さんが公開してくれたNagiosのプラグイン、&lt;a href="https://github.com/j3tm0t0/check_cloudwatch"&gt;check_cloudwatch&lt;/a&gt;と&lt;br /&gt;
ほぼ同様のものをCloudWatchとの通信はPHPを使ったもので作ってみました。&lt;br /&gt;
(元祖check_cloudwatchはコマンドラインツールを利用しています)&lt;br /&gt;
&lt;br /&gt;
下記のように利用できます。&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush:plain;"&gt;# ./check_cloudwatch \
&gt; -c 20 \
&gt; -w 10 \
&gt; -f credential.yml \
&gt; -r ap-northeast-1 \
&gt; -n AWS/EC2 \
&gt; -m CPUUtilization \
&gt; -s Average \
&gt; -u Percent \
&gt; -d InstanceId \
&gt; -v i-xxxxxxxx \
CloudWatch CRITICAL - AWS/EC2 CPUUtilization Average InstanceId i-xxxxxxxx: 25.092 Percent;| data=25.092;10;20;0;
&lt;/pre&gt;&lt;br /&gt;
コードは下記のようになっています。(エラー処理が甘々ですが...)&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush:php;"&gt;require_once("/opt/aws/php/latest/sdk.class.php");

// define status
$ok       = array("code" =&amp;gt; 0, "name" =&amp;gt; "OK");
$warning  = array("code" =&amp;gt; 1, "name" =&amp;gt; "WARNING");
$critical = array("code" =&amp;gt; 2, "name" =&amp;gt; "CRITICAL");
$unknown  = array("code" =&amp;gt; 3, "name" =&amp;gt; "UNKNOWN");

// set option
$option = getopt("c:w:f:r:n:m:s:u:d:v:");
$critical_size = $option["c"];
$warning_size  = $option["w"];
$credential    = yaml_parse_file($option["f"]);
$region        = $option["r"];
$namespace     = $option["n"];
$metrics       = $option["m"];
$statistics    = $option["s"];
$unit          = $option["u"];
$name          = $option["d"];
$value         = $option["v"];

// init cw
$cw = new AmazonCloudWatch($credential["accessKey"], $credential["secretKey"]);
$cw-&amp;gt;set_region($region);
date_default_timezone_set("Asia/Tokyo");

// get metric statistics
$response = $cw-&amp;gt;get_metric_statistics(
    $namespace,
    $metrics,
    "-10 minutes",
    "now",
    300,
    $statistics,
    $unit,
    array(
        "Dimensions" =&amp;gt; array(
            array("Name" =&amp;gt; $name, "Value" =&amp;gt; $value)
        )
    )
);
$data = (float)$response-&amp;gt;body-&amp;gt;GetMetricStatisticsResult-&amp;gt;Datapoints-&amp;gt;member-&amp;gt;$statistics-&amp;gt;to_string();

// check status
if($data &amp;gt; $critical_size) {
    $status = $critical["code"];
} elseif($data &amp;gt; $warning_size) {
    $status = $warning["code"];
} elseif($data &amp;gt; 0) {
    $status = $ok["code"];
} else {
    $status = $unknown["code"];
}

// output status
$output = " - ${namespace} ${metrics} ${statistics} ${name} ${value}: ${data} ${unit};| data=${data};${warning_size};${critical_size};0;";
switch($status) {
    case $ok["code"]:
        print("CloudWatch " . $ok["name"]       . $output);
        exit($ok["code"]);
    case $warning["code"]:
        print("CloudWatch " . $warning["name"]  . $output);
        exit($warning["code"]);
    case $critical["code"]:
        print("CloudWatch " . $critical["name"] . $output);
        exit($critical["code"]);
    case $unknown["code"]:
        print("CloudWatch " . $unknown["name"]  . $output);
        exit($unknown["code"]);
}
print("CloudWatch " . $unknown["name"] . $output);
exit($unknown["code"]);
&lt;/pre&gt;&lt;br /&gt;
AccessKey、SecretKeyは下記のファイルにまとめています。&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush:plain;"&gt;accessKey: "XXXXXXXXXXXXXXXXXXXX"
secretKey: "ssssssssssssssssssssssssssssssssssssssss"
&lt;/pre&gt;&lt;br /&gt;
もう少しブラッシュアップしたら、また、ちゃんと紹介しようと思います。&lt;br /&gt;
--------&lt;br /&gt;
&lt;a href="http://www.suz-lab.com/"&gt;http://www.suz-lab.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6373299112985466176-1361301526341281135?l=blog.suz-lab.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/suz-lab-blog/~4/DN_oaHUz_fw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.suz-lab.com/feeds/1361301526341281135/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6373299112985466176&amp;postID=1361301526341281135" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6373299112985466176/posts/default/1361301526341281135?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6373299112985466176/posts/default/1361301526341281135?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/suz-lab-blog/~3/DN_oaHUz_fw/nagioscloudwatchphp.html" title="NagiosのCloudWatchプラグイン(PHP版)" /><author><name>suz-lab</name><uri>http://www.blogger.com/profile/01435551125452800565</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://blog.suz-lab.com/2011/12/nagioscloudwatchphp.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ck4ESH86fSp7ImA9WhRXE0U.&quot;"><id>tag:blogger.com,1999:blog-6373299112985466176.post-2623418725123460608</id><published>2011-12-20T20:34:00.001+09:00</published><updated>2011-12-20T20:35:09.115+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-20T20:35:09.115+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="stunnel" /><category scheme="http://www.blogger.com/atom/ns#" term="AWS" /><title>PostfixからSESにリレー(stunnel編)</title><content type="html">スズキです。&lt;br /&gt;
&lt;br /&gt;
と言っても、下記のAWSドキュメント通りですが...&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://docs.amazonwebservices.com/ses/latest/DeveloperGuide/SMTP.MTAs.SecureTunnel.html"&gt;Setting Up a Secure Tunnel&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://docs.amazonwebservices.com/ses/latest/DeveloperGuide/SMTP.MTAs.Postfix.html"&gt;Integrating Amazon SES with Postfix&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
とりあえず、SESのSMPTポート(465)をたたいてみると、&lt;br /&gt;
下記のように何も反応が返って来ません。&lt;br /&gt;
&lt;pre class="brush:plain;"&gt;# telnet email-smtp.us-east-1.amazonaws.com 465
Trying 107.22.229.233...
Connected to email-smtp.us-east-1.amazonaws.com.
Escape character is '^]'.
&lt;/pre&gt;&lt;br /&gt;
これは、SESへの(SMTP)接続はTLSでの暗号化を必要とするので、&lt;br /&gt;
当然、直接のtelnetでは接続できなくなります。&lt;br /&gt;
&lt;br /&gt;
ということで、下記のようにstunnelをインストールして、&lt;br /&gt;
SESに対するTLSの処理はstunnelでおこない、stunnnelにはTLS無しで&lt;br /&gt;
透過的にSESに接続できるようにしてみました。&lt;br /&gt;
&lt;pre class="brush:plain;"&gt;# yum -y install stunnel
&lt;/pre&gt;&lt;br /&gt;
stunnelの設定ファイルは下記のとおりです。&lt;br /&gt;
&lt;pre class="brush:plain;"&gt;# cat /etc/stunnel/stunnel.conf
[smtp-tls-wrapper]
accept  = 2525
client  = yes
connect = email-smtp.us-east-1.amazonaws.com:465
&lt;/pre&gt;&lt;br /&gt;
stunnelの起動は次のとおりですが、起動スクリプトも、&lt;br /&gt;
どこかで用意しておきたいところです。&lt;br /&gt;
&lt;pre class="brush:plain;"&gt;# /usr/bin/stunnel
&lt;/pre&gt;&lt;br /&gt;
そして、stunnelに対して接続すると、下記のように今度は無事、&lt;br /&gt;
SMTPのレスポンスが返ってくることがわかります。&lt;br /&gt;
&lt;pre class="brush:plain;"&gt;# telnet localhost 2525
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 email-smtp.amazonaws.com ESMTP SimpleEmailService-194655181
&lt;/pre&gt;&lt;br /&gt;
次は実際にPostfixからSESにリレーしてみます。&lt;br /&gt;
--------&lt;br /&gt;
&lt;a href="http://www.suz-lab.com/"&gt;http://www.suz-lab.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6373299112985466176-2623418725123460608?l=blog.suz-lab.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/suz-lab-blog/~4/l8pVA-Ae0hA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.suz-lab.com/feeds/2623418725123460608/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6373299112985466176&amp;postID=2623418725123460608" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6373299112985466176/posts/default/2623418725123460608?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6373299112985466176/posts/default/2623418725123460608?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/suz-lab-blog/~3/l8pVA-Ae0hA/postfixsesstunnnel.html" title="PostfixからSESにリレー(stunnel編)" /><author><name>suz-lab</name><uri>http://www.blogger.com/profile/01435551125452800565</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://blog.suz-lab.com/2011/12/postfixsesstunnnel.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkUCQ3cyfyp7ImA9WhRXE00.&quot;"><id>tag:blogger.com,1999:blog-6373299112985466176.post-95224669243188834</id><published>2011-12-19T23:14:00.001+09:00</published><updated>2011-12-19T23:17:42.997+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-19T23:17:42.997+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="AWS" /><title>そろそろCloudFormation(VpcCloudFormation編)</title><content type="html">スズキです。&lt;br /&gt;
&lt;br /&gt;
下記で簡単な(EC2一つ立ち上げるだけの)CloudFormationを試しましたが、&lt;br /&gt;
&lt;blockquote&gt;&lt;a href="http://blog.suz-lab.com/2011/12/cloudformationhellocloudformation.html"&gt;そろそろCloudFormation(HelloCloudFormation編)&lt;/a&gt;&lt;/blockquote&gt;今回は、これをVPC上で立ち上げてみました。&lt;br /&gt;
&lt;br /&gt;
テンプレートは下記のようになります。&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush:plain;"&gt;{
  "AWSTemplateFormatVersion" : "2010-09-09",

  "Description" : "Create an Amazon EC2 instance running the SUZ-LAB CentOS AMI.",

  "Parameters" : {
    "KeyName" : {
      "Description" : "Name of an existing EC2 KeyPair to enable SSH access to the instance",
      "Type"        : "String"
    }
  },

  "Mappings" : {
    "RegionMap" : {
      "ap-northeast-1" : { "AMI" : "ami-de9126df" }
    }
  },

  "Resources" : {
    "Ec2Instance" : {
      "Type"       : "AWS::EC2::Instance",
      "Properties" : {
        "KeyName"          : { "Ref" : "KeyName" },
        "ImageId"          : { "Fn::FindInMap" : [ "RegionMap", { "Ref" : "AWS::Region" }, "AMI" ]},
        "InstanceType"     : "m1.small",
        "SubnetId"         : "subnet-9bd939f2",
        "PrivateIpAddress" : "10.0.0.100"
      }
    }
  },

  "Outputs" : {
    "InstanceId" : {
      "Description" : "InstanceId of the newly created EC2 instance",
      "Value"       : { "Ref" : "Ec2Instance" }
    }
  }
}
&lt;/pre&gt;&lt;br /&gt;
前回同様、下記に示す上記のテンプレートURLを使って&lt;br /&gt;
AWS Management Consoleから起動すればOKです。&lt;br /&gt;
&lt;pre class="brush:plain;"&gt;https://s3-ap-northeast-1.amazonaws.com/www.suz-lab.com/formation/VpcCloudFormation.template
&lt;/pre&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-TudEopnpmRE/Tu86A2oru3I/AAAAAAAAAX0/NHLAWuBctWE/s1600/Screen+Shot+2011-12-19+at+9.54.12+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="311" src="http://3.bp.blogspot.com/-TudEopnpmRE/Tu86A2oru3I/AAAAAAAAAX0/NHLAWuBctWE/s400/Screen+Shot+2011-12-19+at+9.54.12+PM.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
ただし、サブネットやルーティング、Network ACLsなどの設定は、まだ、&lt;br /&gt;
できないようなので、VPC(サブネット/ルーティング/Network ACLs)の設定は&lt;br /&gt;
事前にしておく必要があるようです。&lt;br /&gt;
&lt;br /&gt;
また、最近VPC上で利用できるようになったELBですが、こちらも、まだ、&lt;br /&gt;
対応していないようです。ですので、お金はかかりますがVPC上のELBも、&lt;br /&gt;
予め作成しておく必要があるようです。&lt;br /&gt;
(そしてインスタンスのぶら下げるのは手動になってしまうと思います)&lt;br /&gt;
&lt;br /&gt;
次は何編にしよう？&lt;br /&gt;
--------&lt;br /&gt;
&lt;a href="http://www.suz-lab.com/"&gt;http://www.suz-lab.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6373299112985466176-95224669243188834?l=blog.suz-lab.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/suz-lab-blog/~4/3m8aD6CBfRY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.suz-lab.com/feeds/95224669243188834/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6373299112985466176&amp;postID=95224669243188834" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6373299112985466176/posts/default/95224669243188834?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6373299112985466176/posts/default/95224669243188834?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/suz-lab-blog/~3/3m8aD6CBfRY/cloudformationvpccloudformation.html" title="そろそろCloudFormation(VpcCloudFormation編)" /><author><name>suz-lab</name><uri>http://www.blogger.com/profile/01435551125452800565</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-TudEopnpmRE/Tu86A2oru3I/AAAAAAAAAX0/NHLAWuBctWE/s72-c/Screen+Shot+2011-12-19+at+9.54.12+PM.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://blog.suz-lab.com/2011/12/cloudformationvpccloudformation.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0MHQX8yeCp7ImA9WhRXEkQ.&quot;"><id>tag:blogger.com,1999:blog-6373299112985466176.post-1121889300282474751</id><published>2011-12-19T20:44:00.001+09:00</published><updated>2011-12-19T20:50:30.190+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-19T20:50:30.190+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="AWS" /><title>そろそろCloudFormation(HelloCloudFormation編)</title><content type="html">スズキです。&lt;br /&gt;
&lt;br /&gt;
CloudFormationの用途に、一時的に利用する開発環境や検証環境、バックアップ環境の&lt;br /&gt;
起動/停止を一気にまとめて行うというものがあると思います。&lt;br /&gt;
(というか、それしか思い浮かばないのですが...)&lt;br /&gt;
&lt;br /&gt;
ということで、そろそろ、そのような要件が出てきたので、&lt;br /&gt;
ちゃんと一から試すことにしました。(つまりHelloCloudFormationです)&lt;br /&gt;
&lt;br /&gt;
下記は一番簡単な、AMIからEC2を起動するHelloCloudFormationテンプレートです。&lt;br /&gt;
(シンプルなテンプレートなので意味合いは直感的にわかると思います)&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush:plain"&gt;{
  "AWSTemplateFormatVersion" : "2010-09-09",

  "Description" : "Create an Amazon EC2 instance running the SUZ-LAB CentOS AMI.",

  "Parameters" : {
    "KeyName" : {
      "Description" : "Name of an existing EC2 KeyPair to enable SSH access to the instance",
      "Type" : "String"
    }
  },

  "Mappings" : {
    "RegionMap" : {
      "ap-northeast-1" : { "AMI" : "ami-de9126df" }
    }
  },

  "Resources" : {
    "Ec2Instance" : {
      "Type" : "AWS::EC2::Instance",
      "Properties" : {
        "KeyName" : { "Ref" : "KeyName" },
        "ImageId" : { "Fn::FindInMap" : [ "RegionMap", { "Ref" : "AWS::Region" }, "AMI" ]}
      }
    }
  },

  "Outputs" : {
    "InstanceId" : {
      "Description" : "InstanceId of the newly created EC2 instance",
      "Value" : { "Ref" : "Ec2Instance" }
    }
  }
}
&lt;/pre&gt;&lt;br /&gt;
ということで、上記のテンプレートを実際にAWS Management Consoleから利用してみます。&lt;br /&gt;
&lt;br /&gt;
まずは、上記のテンプレートを下記のようにS3に配置します。&lt;br /&gt;
&lt;pre class="brush:plain;"&gt;https://s3-ap-northeast-1.amazonaws.com/www.suz-lab.com/formation/HelloCloudFormation.template
&lt;/pre&gt;&lt;br /&gt;
次に、下記のように"Provide a Template URL"を選択し、テンプレートのURLを入力します。&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-fFnbI5IJM9Y/Tu8aMqisB3I/AAAAAAAAAXQ/DuGyiA5HCJ4/s1600/Screen+Shot+2011-12-19+at+7.55.25+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="311" src="http://3.bp.blogspot.com/-fFnbI5IJM9Y/Tu8aMqisB3I/AAAAAAAAAXQ/DuGyiA5HCJ4/s400/Screen+Shot+2011-12-19+at+7.55.25+PM.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
そして、パラメータを入力します。ここで入力するパラメータは上記のテンプレートで&lt;br /&gt;
"Parameters"で定義されたもので、任意に指定することができます。&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-_6Jj3B6-1Gs/Tu8aNFp12DI/AAAAAAAAAXY/sFacvjjmYvw/s1600/Screen+Shot+2011-12-19+at+7.56.23+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="187" src="http://2.bp.blogspot.com/-_6Jj3B6-1Gs/Tu8aNFp12DI/AAAAAAAAAXY/sFacvjjmYvw/s400/Screen+Shot+2011-12-19+at+7.56.23+PM.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
最後に、情報の確認して問題なければ、構築を開始します。&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-kD4Q9wm-RFs/Tu8aNm_8B4I/AAAAAAAAAXg/GTKibEL0BGE/s1600/Screen+Shot+2011-12-19+at+7.56.58+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="330" src="http://3.bp.blogspot.com/-kD4Q9wm-RFs/Tu8aNm_8B4I/AAAAAAAAAXg/GTKibEL0BGE/s400/Screen+Shot+2011-12-19+at+7.56.58+PM.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
起動後、"Outputs"タグを確認すると、下記のようにテンプレートの"Outputs"で定義した情報が&lt;br /&gt;
出力されていることがわかります。&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-QZYFmgjfL-M/Tu8aOZOzuQI/AAAAAAAAAXk/d4GwCeSxGq4/s1600/Screen+Shot+2011-12-19+at+8.01.13+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="100" src="http://3.bp.blogspot.com/-QZYFmgjfL-M/Tu8aOZOzuQI/AAAAAAAAAXk/d4GwCeSxGq4/s400/Screen+Shot+2011-12-19+at+8.01.13+PM.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
次は、VPC！&lt;br /&gt;
--------&lt;br /&gt;
http://www.suz-lab.com&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6373299112985466176-1121889300282474751?l=blog.suz-lab.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/suz-lab-blog/~4/32B8QURafRc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.suz-lab.com/feeds/1121889300282474751/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6373299112985466176&amp;postID=1121889300282474751" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6373299112985466176/posts/default/1121889300282474751?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6373299112985466176/posts/default/1121889300282474751?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/suz-lab-blog/~3/32B8QURafRc/cloudformationhellocloudformation.html" title="そろそろCloudFormation(HelloCloudFormation編)" /><author><name>suz-lab</name><uri>http://www.blogger.com/profile/01435551125452800565</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-fFnbI5IJM9Y/Tu8aMqisB3I/AAAAAAAAAXQ/DuGyiA5HCJ4/s72-c/Screen+Shot+2011-12-19+at+7.55.25+PM.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://blog.suz-lab.com/2011/12/cloudformationhellocloudformation.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUMCR344cSp7ImA9WhRXEko.&quot;"><id>tag:blogger.com,1999:blog-6373299112985466176.post-7752902258907527591</id><published>2011-12-19T14:30:00.004+09:00</published><updated>2011-12-19T14:44:26.039+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-19T14:44:26.039+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="PHP" /><category scheme="http://www.blogger.com/atom/ns#" term="AWS" /><title>S3にブラウザから直接アップロードするフォーム(HTML)をPHPで生成</title><content type="html">スズキです。&lt;br /&gt;
&lt;br /&gt;
S3にブラウザから直接アップロードする方法を下記で紹介しましたが、&lt;br /&gt;
&lt;blockquote&gt;&lt;a href="http://blog.suz-lab.com/2011/12/jaws-ug3ltbrowser-uploads-to-s3-using.html"&gt;JAWS-UG宮崎第3回勉強会LT資料(Browser Uploads to S3 using HTML POST Forms)&lt;/a&gt;&lt;/blockquote&gt;そのときは、静的なHTMLフォームを前提として、Base64のpolicyやsignatureは&lt;br /&gt;
別プログラム(Ruby)で作成していました。&lt;br /&gt;
&lt;br /&gt;
今回は、そのHTMLフォームをPHPで生成し、有効期限やアップロードファイル名、&lt;br /&gt;
リダイレクト先などを動的に変更できるようにしてみました。&lt;br /&gt;
&lt;br /&gt;
コードは下記のとおりです。&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush:php;"&gt;&amp;lt;?php
$id &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; = "00000000";
$expiration = gmdate("Y-m-d\TH:i:s\Z",strtotime("1 minute"));
$redirect &amp;nbsp; = "http://www.suz-lab.com/index.html?id=$id";
$policy = &amp;lt;&amp;lt;&amp;lt;EOS
{
&amp;nbsp; &amp;nbsp; "expiration": "$expiration",
&amp;nbsp; &amp;nbsp; "conditions": [
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {"bucket": "www.suz-lab.com"},
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ["starts-with", "\$key", ""],
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {"acl": "private"},
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {"success_action_redirect": "$redirect"},
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ["starts-with", "\$Content-Type", ""],
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ["content-length-range", 0, 1048576]
&amp;nbsp; &amp;nbsp; ]
}
EOS;
$signature = hash_hmac("sha1", base64_encode($policy), "SECRET_KEY", true);
?&amp;gt;
&amp;lt;html&amp;gt;
&amp;nbsp; &amp;lt;head&amp;gt;
&amp;nbsp; &amp;nbsp; &amp;lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8"/&amp;gt;
&amp;nbsp; &amp;lt;/head&amp;gt;
&amp;nbsp; &amp;lt;body&amp;gt;
&amp;nbsp; &amp;nbsp; &amp;lt;form action="http://www.suz-lab.com.s3.amazonaws.com/"
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; method="post" enctype="multipart/form-data"&amp;gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="hidden" name="key"
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;value="&amp;lt;?php print("${id}.txt"); ?&amp;gt;"/&amp;gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="hidden" name="AWSAccessKeyId"
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;value="ACCESS_KEY"/&amp;gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="hidden" name="acl"
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;value="private"/&amp;gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="hidden" name="success_action_redirect"
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;value="&amp;lt;?php print($redirect); ?&amp;gt;"/&amp;gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="hidden" name="policy"
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;value="&amp;lt;?php print(base64_encode($policy)); ?&amp;gt;"/&amp;gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="hidden" name="signature"
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;value="&amp;lt;?php print(base64_encode($signature)); ?&amp;gt;"/&amp;gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="hidden" name="Content-Type"
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;value="text/plain"/&amp;gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="file" &amp;nbsp; name="file"/&amp;gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="submit" name="button" value="Upload"/&amp;gt;
&amp;nbsp; &amp;nbsp; &amp;lt;/form&amp;gt;
&amp;nbsp; &amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/pre&gt;&lt;br /&gt;
上記は有効期限をHTMLフォームが作成されてから1分以内とし、アップロードファイル名や&lt;br /&gt;
リダイレクトURLにid(ユーザーIDなど)が反映されるようにしています。&lt;br /&gt;
&lt;br /&gt;
S3へのアップロードが成功すると、下記にリダイレクトされ、リダイレクトURLに&lt;br /&gt;
事前につけておいたパラメータ(id=00000000)も引き継がれていることがわかります。&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush:plain;"&gt;http://www.suz-lab.com/index.html?id=00000000&amp;amp;bucket=www.suz-lab.com&amp;amp;key=00000000.txt&amp;amp;etag=%22...%22
&lt;/pre&gt;&lt;br /&gt;
さらに、HTMLフォームが生成された後、1分後にアップロードすると、&lt;br /&gt;
次のように、ちゃんとエラーになりました。&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-9ckULPnX45w/Tu7PBvY3bwI/AAAAAAAAAXE/QclgT4R-8qw/s1600/Screen+Shot+2011-12-19+at+1.57.21+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="135" src="http://2.bp.blogspot.com/-9ckULPnX45w/Tu7PBvY3bwI/AAAAAAAAAXE/QclgT4R-8qw/s400/Screen+Shot+2011-12-19+at+1.57.21+PM.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
これで、いつでも使えます！&lt;br /&gt;
--------&lt;br /&gt;
&lt;a href="http://www.suz-lab.com/"&gt;http://www.suz-lab.com/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6373299112985466176-7752902258907527591?l=blog.suz-lab.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/suz-lab-blog/~4/bQF4B6SgfGE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.suz-lab.com/feeds/7752902258907527591/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6373299112985466176&amp;postID=7752902258907527591" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6373299112985466176/posts/default/7752902258907527591?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6373299112985466176/posts/default/7752902258907527591?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/suz-lab-blog/~3/bQF4B6SgfGE/s3htmlphp.html" title="S3にブラウザから直接アップロードするフォーム(HTML)をPHPで生成" /><author><name>suz-lab</name><uri>http://www.blogger.com/profile/01435551125452800565</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-9ckULPnX45w/Tu7PBvY3bwI/AAAAAAAAAXE/QclgT4R-8qw/s72-c/Screen+Shot+2011-12-19+at+1.57.21+PM.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://blog.suz-lab.com/2011/12/s3htmlphp.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ck8MQnc7eip7ImA9WhRXEEU.&quot;"><id>tag:blogger.com,1999:blog-6373299112985466176.post-8526870275996657406</id><published>2011-12-17T09:14:00.001+09:00</published><updated>2011-12-17T09:14:43.902+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-17T09:14:43.902+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Event" /><category scheme="http://www.blogger.com/atom/ns#" term="AWS" /><title>JAWS-UG宮崎第3回勉強会LT資料(Browser Uploads to S3 using HTML POST Forms)</title><content type="html">スズキです。&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://atnd.org/events/22028"&gt;第3回 AWS User Group - Japan【宮崎】 勉強会&lt;/a&gt;&lt;br /&gt;
でLTします。&lt;br /&gt;
&lt;br /&gt;
LTの内容は下記の資料の通り、&lt;br /&gt;
HTMLフォームからS3に直接ファイルをアップロードする方法についてです。&lt;br /&gt;
&lt;br /&gt;
&lt;div style="width:510px" id="__ss_10619108"&gt;&lt;strong style="display:block;margin:12px 0 4px"&gt;&lt;a href="http://www.slideshare.net/suzlab/untitled-10619108" title="Browser Uploads to S3 using HTML POST Forms" target="_blank"&gt;Browser Uploads to S3 using HTML POST Forms&lt;/a&gt;&lt;/strong&gt; &lt;iframe src="http://www.slideshare.net/slideshow/embed_code/10619108" width="510" height="426" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"&gt;&lt;/iframe&gt; &lt;div style="padding:5px 0 12px"&gt;View more &lt;a href="http://www.slideshare.net/" target="_blank"&gt;presentations&lt;/a&gt; from &lt;a href="http://www.slideshare.net/suzlab" target="_blank"&gt;Hiroyasu Suzuki&lt;/a&gt; &lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
それでは、宮崎の皆さん、よろしくお願いします。&lt;br /&gt;
--------&lt;br /&gt;
http://www.suz-lab.com&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6373299112985466176-8526870275996657406?l=blog.suz-lab.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/suz-lab-blog/~4/2srQYcS1avk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.suz-lab.com/feeds/8526870275996657406/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6373299112985466176&amp;postID=8526870275996657406" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6373299112985466176/posts/default/8526870275996657406?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6373299112985466176/posts/default/8526870275996657406?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/suz-lab-blog/~3/2srQYcS1avk/jaws-ug3ltbrowser-uploads-to-s3-using.html" title="JAWS-UG宮崎第3回勉強会LT資料(Browser Uploads to S3 using HTML POST Forms)" /><author><name>suz-lab</name><uri>http://www.blogger.com/profile/01435551125452800565</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://blog.suz-lab.com/2011/12/jaws-ug3ltbrowser-uploads-to-s3-using.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEACRXYyeCp7ImA9WhRQFE8.&quot;"><id>tag:blogger.com,1999:blog-6373299112985466176.post-712309675501260714</id><published>2011-12-09T18:26:00.000+09:00</published><updated>2011-12-09T18:26:04.890+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-09T18:26:04.890+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Varnish" /><title>Varnishで"www.suz-lab.com"を"suz-lab.com"にリダイレクト</title><content type="html">スズキです。&lt;br /&gt;
&lt;br /&gt;
以前下記で、Varnishによる"suz-lab.com"を"www.suz-lab.com"に&lt;br /&gt;
リダイレクトする方法を紹介しましたが、&lt;br /&gt;
&lt;blockquote&gt;&lt;a href="http://blog.suz-lab.com/2011/03/varnishweb.html"&gt;Varnishでリダイレクト専用Webサーバの構築&lt;/a&gt;&lt;/blockquote&gt;今回は、その逆の"www.suz-lab.com"を"suz-lab.com"にリダイレクトする方法です。&lt;br /&gt;
&lt;br /&gt;
上記の設定は、設定ファイル"default.vcl"の"vcl_error"で行い、&lt;br /&gt;
具体的には下記のようになります。&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush:plain;"&gt;sub vcl_error {
    if(req.http.host == "www.suz-lab.com") {
      set obj.http.Location = "http://" regsub(req.http.host, "www\.(.*)", "\1") req.url;
      set obj.status = 301;
    }
    return(deliver);
}
&lt;/pre&gt;&lt;br /&gt;
近頃、S3への小細工は、全部Varnishでやってます...&lt;br /&gt;
--------&lt;br /&gt;
http://www.suz-lab.com&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6373299112985466176-712309675501260714?l=blog.suz-lab.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/suz-lab-blog/~4/pdlYPn46vSk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.suz-lab.com/feeds/712309675501260714/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6373299112985466176&amp;postID=712309675501260714" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6373299112985466176/posts/default/712309675501260714?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6373299112985466176/posts/default/712309675501260714?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/suz-lab-blog/~3/pdlYPn46vSk/varnishwwwsuz-labcomsuz-labcom.html" title="Varnishで&quot;www.suz-lab.com&quot;を&quot;suz-lab.com&quot;にリダイレクト" /><author><name>suz-lab</name><uri>http://www.blogger.com/profile/01435551125452800565</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://blog.suz-lab.com/2011/12/varnishwwwsuz-labcomsuz-labcom.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUAGSHo5fyp7ImA9WhRQEks.&quot;"><id>tag:blogger.com,1999:blog-6373299112985466176.post-2302555323649133540</id><published>2011-12-07T23:22:00.000+09:00</published><updated>2011-12-07T23:22:09.427+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-07T23:22:09.427+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="AWS" /><title>オレゴンリージョン(us-west-2)のAKI(pv-grub-hd0/00)</title><content type="html">スズキです。&lt;br /&gt;
&lt;br /&gt;
下記AMIの作成にて、&lt;br /&gt;
&lt;blockquote&gt;&lt;a href="http://blog.suz-lab.com/2011/12/suz-lab-centos-ami-605-64bit-us-west-2.html"&gt;SUZ-LAB謹製 CentOS AMI (6.0.5 64bit us-west-2)&lt;/a&gt;&lt;/blockquote&gt;"User Provided Kernel"で使うAKI(pv-grub-hd0/00)を調査したのでまとめておきます。&lt;br /&gt;
&lt;br /&gt;
▼aki-c2e26ff2&lt;br /&gt;
ec2-public-images-us-west-2/pv-grub-hd0_1.02-i386.gz.manifest.xml&lt;br /&gt;
&lt;br /&gt;
▼aki-c0e26ff0&lt;br /&gt;
ec2-public-images-us-west-2/pv-grub-hd00_1.02-i386.gz.manifest.xml&lt;br /&gt;
&lt;br /&gt;
▼aki-98e26fa8&lt;br /&gt;
ec2-public-images-us-west-2/pv-grub-hd0_1.02-x86_64.gz.manifest.xml&lt;br /&gt;
&lt;br /&gt;
▼aki-94e26fa4&lt;br /&gt;
ec2-public-images-us-west-2/pv-grub-hd00_1.02-x86_64.gz.manifest.xml&lt;br /&gt;
&lt;br /&gt;
他のリージョンに関しては、下記でまとめてあります。&lt;br /&gt;
&lt;blockquote&gt;&lt;a href="http://blog.suz-lab.com/2011/07/user-provided-kernelpv-grub-hd000102.html"&gt;"User Provided Kernel"で使う"pv-grub-hd0/00"が1.02になってた&lt;/a&gt;&lt;/blockquote&gt;&lt;br /&gt;
久しぶりにAMIのリージョン移行した...&lt;br /&gt;
--------&lt;br /&gt;
http://www.suz-lab.com&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6373299112985466176-2302555323649133540?l=blog.suz-lab.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/suz-lab-blog/~4/vgq-z6JuV5E" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.suz-lab.com/feeds/2302555323649133540/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6373299112985466176&amp;postID=2302555323649133540" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6373299112985466176/posts/default/2302555323649133540?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6373299112985466176/posts/default/2302555323649133540?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/suz-lab-blog/~3/vgq-z6JuV5E/us-west-2akipv-grub-hd000.html" title="オレゴンリージョン(us-west-2)のAKI(pv-grub-hd0/00)" /><author><name>suz-lab</name><uri>http://www.blogger.com/profile/01435551125452800565</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://blog.suz-lab.com/2011/12/us-west-2akipv-grub-hd000.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DE4MQ3w8fSp7ImA9WhRQEks.&quot;"><id>tag:blogger.com,1999:blog-6373299112985466176.post-1499345943841006616</id><published>2011-12-07T22:54:00.003+09:00</published><updated>2011-12-07T23:09:42.275+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-07T23:09:42.275+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="CentOS" /><category scheme="http://www.blogger.com/atom/ns#" term="Release" /><category scheme="http://www.blogger.com/atom/ns#" term="AWS" /><title>SUZ-LAB謹製 CentOS AMI (6.0.5 64bit us-west-2)</title><content type="html">スズキです。&lt;br /&gt;
&lt;br /&gt;
オレゴンリージョン(us-west-2)にリリースしました。&lt;br /&gt;
&lt;br /&gt;
AMIを「suz」で検索してもらえれば、&lt;br /&gt;
&lt;blockquote&gt;811118151095/suz-lab_ebs_centos-core-i386-6.0.5&lt;/blockquote&gt;として見つかるはずです。&lt;br /&gt;
&lt;br /&gt;
AMIの内容は、下記と同様となります。&lt;br /&gt;
&lt;a href="http://blog.suz-lab.com/2011/12/suz-lab-centos-ami-605-64bit-ap.html"&gt;SUZ-LAB謹製 CentOS AMI (6.0.5 64bit ap-northeast-1)&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
ただし利用しているAKIは下記となります。&lt;br /&gt;
&lt;blockquote&gt;▼aki-98e26fa8&lt;br /&gt;
ec2-public-images-us-west-2/pv-grub-hd0_1.02-x86_64.gz.manifest.xml&lt;br /&gt;
&lt;/blockquote&gt;Enjoy!&lt;br /&gt;
--------&lt;br /&gt;
&lt;a href="http://www.suz-lab.com"&gt;http://www.suz-lab.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6373299112985466176-1499345943841006616?l=blog.suz-lab.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/suz-lab-blog/~4/vBej8JvpmR4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.suz-lab.com/feeds/1499345943841006616/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6373299112985466176&amp;postID=1499345943841006616" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6373299112985466176/posts/default/1499345943841006616?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6373299112985466176/posts/default/1499345943841006616?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/suz-lab-blog/~3/vBej8JvpmR4/suz-lab-centos-ami-605-64bit-us-west-2.html" title="SUZ-LAB謹製 CentOS AMI (6.0.5 64bit us-west-2)" /><author><name>suz-lab</name><uri>http://www.blogger.com/profile/01435551125452800565</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://blog.suz-lab.com/2011/12/suz-lab-centos-ami-605-64bit-us-west-2.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkYHQ3gzeip7ImA9WhRQEUU.&quot;"><id>tag:blogger.com,1999:blog-6373299112985466176.post-3576729533447151577</id><published>2011-12-07T00:08:00.000+09:00</published><updated>2011-12-07T00:08:52.682+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-07T00:08:52.682+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="CentOS" /><category scheme="http://www.blogger.com/atom/ns#" term="Release" /><category scheme="http://www.blogger.com/atom/ns#" term="AWS" /><title>SUZ-LAB謹製 CentOS AMI (6.0.5 64bit ap-northeast-1)</title><content type="html">スズキです。&lt;br /&gt;
&lt;br /&gt;
下記をアップデートしました。&lt;br /&gt;
&lt;blockquote&gt;&lt;a href="http://blog.suz-lab.com/2011/08/suz-lab-centos-ami-602-64bit-ap.html"&gt;SUZ-LAB謹製 CentOS AMI (6.0.2 64bit ap-northeast-1)&lt;/a&gt;&lt;/blockquote&gt;AMIを「suz」で検索してもらえれば、&lt;br /&gt;
&lt;blockquote&gt;811118151095/suz-lab_ebs_centos-core-x86_64-6.0.5&lt;/blockquote&gt;として見つかるはずです。&lt;br /&gt;
&lt;br /&gt;
アップデート内容は下記の32bitのものと同じになります。&lt;br /&gt;
&lt;blockquote&gt;&lt;a href="http://blog.suz-lab.com/2011/10/suz-lab-centos-ami-603-32bit-ap.html"&gt;SUZ-LAB謹製 CentOS AMI (6.0.3 32bit ap-northeast-1)&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://blog.suz-lab.com/2011/11/suz-lab-centos-ami-604-32bit-ap.html"&gt;SUZ-LAB謹製 CentOS AMI (6.0.4 32bit ap-northeast-1)&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://blog.suz-lab.com/2011/12/suz-lab-centos-ami-605-32bit-ap.html"&gt;SUZ-LAB謹製 CentOS AMI (6.0.5 32bit ap-northeast-1)&lt;/a&gt;&lt;br /&gt;
&lt;/blockquote&gt;&lt;br /&gt;
Enjoy!&lt;br /&gt;
--------&lt;br /&gt;
&lt;a href="http://www.suz-lab.com"&gt;http://www.suz-lab.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6373299112985466176-3576729533447151577?l=blog.suz-lab.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/suz-lab-blog/~4/CP6ARpFkjnQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.suz-lab.com/feeds/3576729533447151577/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6373299112985466176&amp;postID=3576729533447151577" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6373299112985466176/posts/default/3576729533447151577?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6373299112985466176/posts/default/3576729533447151577?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/suz-lab-blog/~3/CP6ARpFkjnQ/suz-lab-centos-ami-605-64bit-ap.html" title="SUZ-LAB謹製 CentOS AMI (6.0.5 64bit ap-northeast-1)" /><author><name>suz-lab</name><uri>http://www.blogger.com/profile/01435551125452800565</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://blog.suz-lab.com/2011/12/suz-lab-centos-ami-605-64bit-ap.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0YCSXk8cSp7ImA9WhRQEUo.&quot;"><id>tag:blogger.com,1999:blog-6373299112985466176.post-29564741885116449</id><published>2011-12-06T22:46:00.000+09:00</published><updated>2011-12-06T22:46:08.779+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-06T22:46:08.779+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="CentOS" /><category scheme="http://www.blogger.com/atom/ns#" term="Release" /><category scheme="http://www.blogger.com/atom/ns#" term="AWS" /><title>SUZ-LAB謹製 CentOS AMI (6.0.5 32bit ap-northeast-1)</title><content type="html">スズキです。&lt;br /&gt;
&lt;br /&gt;
下記をアップデートしました。&lt;br /&gt;
&lt;blockquote&gt;&lt;a href="http://blog.suz-lab.com/2011/11/suz-lab-centos-ami-604-32bit-ap.html"&gt;SUZ-LAB謹製 CentOS AMI (6.0.4 32bit ap-northeast-1)&lt;/a&gt;&lt;/blockquote&gt;AMIを「suz」で検索してもらえれば、&lt;br /&gt;
&lt;blockquote&gt;811118151095/suz-lab_ebs_centos-core-i386-6.0.5&lt;/blockquote&gt;として見つかるはずです。&lt;br /&gt;
&lt;br /&gt;
アップデート内容は下記となります。&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;パッケージのアップデート&lt;/b&gt;&lt;br /&gt;
&lt;pre class="brush:plain;"&gt;# yum -y update
&lt;/pre&gt;&lt;br /&gt;
&lt;b&gt;よく要求されるセキュリティ要件を反映&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
まず、"/etc/pam.d/password-auth"を下記のように修正しています。&lt;br /&gt;
&lt;br /&gt;
▼6回以上の失敗アクセスがあった場合、システム管理者がリセットするまで無効とする。&lt;br /&gt;
&lt;pre class="brush:plain;"&gt;auth        required      pam_tally2.so deny=6
&lt;/pre&gt;&lt;br /&gt;
▼過去4回のパスワードを回転使用できないようにする。&lt;br /&gt;
&lt;pre class="brush:plain;"&gt;password    sufficient    pam_unix.so try_first_pass use_authtok nullok sha512 shadow remember=4
&lt;/pre&gt;&lt;br /&gt;
最終的に"/etc/pam.d/password-auth"は下記のようになっています。&lt;br /&gt;
&lt;pre class="brush:plain;"&gt;auth        required      pam_env.so
auth        required      pam_tally2.so deny=6
auth        sufficient    pam_unix.so try_first_pass nullok
auth        required      pam_deny.so

account     required      pam_unix.so

password    requisite     pam_cracklib.so try_first_pass retry=3 type=
password    sufficient    pam_unix.so try_first_pass use_authtok nullok sha512 shadow remember=4
password    required      pam_deny.so

session     optional      pam_keyinit.so revoke
session     required      pam_limits.so
session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session     required      pam_unix.so
&lt;/pre&gt;&lt;br /&gt;
次に、監査ログ(/var/log/audit/audit.log)へのアクセス情報も記録するように、&lt;br /&gt;
"/etc/audit/audit.rules"に下記を追加しておきます。&lt;br /&gt;
&lt;pre class="brush:plain;"&gt;-w /var/log/audit/audit.log
&lt;/pre&gt;&lt;br /&gt;
"audit.log"にアクセス(tail)すると、下記のように記録されます。&lt;br /&gt;
&lt;pre class="brush:plain;"&gt;type=SYSCALL msg=audit(1323176229.195:36): arch=40000003 syscall=5 success=yes exit=3 a0=bf9b27d8 a1=8000 a2=0 a3=bf9b1050 items=1 ppid=875 pid=902 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=1 comm="tail" exe="/usr/bin/tail" key=(null)
type=CWD msg=audit(1323176229.195:36):  cwd="/var/log/audit"
type=PATH msg=audit(1323176229.195:36): item=0 name="/var/log/audit/audit.log" inode=7132 dev=ca:01 mode=0100600 ouid=0 ogid=0 rdev=00:00
&lt;/pre&gt;&lt;br /&gt;
Enjoy!&lt;br /&gt;
--------&lt;br /&gt;
&lt;a href="http://www.suz-lab.com"&gt;http://www.suz-lab.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6373299112985466176-29564741885116449?l=blog.suz-lab.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/suz-lab-blog/~4/oPjuCBlWOSg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.suz-lab.com/feeds/29564741885116449/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6373299112985466176&amp;postID=29564741885116449" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6373299112985466176/posts/default/29564741885116449?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6373299112985466176/posts/default/29564741885116449?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/suz-lab-blog/~3/oPjuCBlWOSg/suz-lab-centos-ami-605-32bit-ap.html" title="SUZ-LAB謹製 CentOS AMI (6.0.5 32bit ap-northeast-1)" /><author><name>suz-lab</name><uri>http://www.blogger.com/profile/01435551125452800565</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://blog.suz-lab.com/2011/12/suz-lab-centos-ami-605-32bit-ap.html</feedburner:origLink></entry></feed>

