<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Sooey &#187; cloud</title>
	<atom:link href="http://old-journal.sooey.com/tag/cloud/feed/" rel="self" type="application/rss+xml" />
	<link>http://old-journal.sooey.com</link>
	<description></description>
	<lastBuildDate>Fri, 04 Dec 2009 08:44:05 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>EC2のEBSボリュームからインスタンスを起動できるようになりました</title>
		<link>http://old-journal.sooey.com/2009/12/04/1149/</link>
		<comments>http://old-journal.sooey.com/2009/12/04/1149/#comments</comments>
		<pubDate>Fri, 04 Dec 2009 08:44:05 +0000</pubDate>
		<dc:creator>juno</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[aws]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[ec2]]></category>

		<guid isPermaLink="false">http://old-journal.sooey.com/?p=1149</guid>
		<description><![CDATA[これは実に画期的なことですよ！具体的な話は週末にでもまとめようと思いますが、とりあえずのまとめを今回は業務としてのブログのほうに書かせていただいているので、よければご覧くださいませ。

EC2のEBSボリュームからインスタンスを起動できるようになりました « サーバーワークス技術ブログ
]]></description>
			<content:encoded><![CDATA[<p>これは実に画期的なことですよ！具体的な話は週末にでもまとめようと思いますが、とりあえずのまとめを今回は業務としてのブログのほうに書かせていただいているので、よければご覧くださいませ。</p>

<p><a href="http://blog.serverworks.co.jp/tech/2009/12/04/aws-ebs-images/">EC2のEBSボリュームからインスタンスを起動できるようになりました « サーバーワークス技術ブログ</a></p>
]]></content:encoded>
			<wfw:commentRss>http://old-journal.sooey.com/2009/12/04/1149/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Amazon RDSメモ</title>
		<link>http://old-journal.sooey.com/2009/10/27/1141/</link>
		<comments>http://old-journal.sooey.com/2009/10/27/1141/#comments</comments>
		<pubDate>Tue, 27 Oct 2009 14:42:11 +0000</pubDate>
		<dc:creator>juno</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[aws]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[database]]></category>

		<guid isPermaLink="false">http://old-journal.sooey.com/?p=1141</guid>
		<description><![CDATA[※この記事は、Amazon Relational Database Service Developer GuideのAPI Version 2009-10-16版をもとにしています。

Amazon Relational Database Service(以下RDS)は、MySQL 5.1が稼働するサーバーをEC2インスタンスライクに利用することができるサービス。Amazon Web Servicesのアカウントがあれば、Webから申し込みをするだけで、初期費用なしで利用を開始することが可能。

RDSにおける用語

データベースインスタンス (DB Instance)
クラウド内で稼働する個別のデータベース環境。通常のMySQLサーバーだと考えてよいが、SSHでのログインはできない。1つのデータベースインスタンス内には複数のデータベースを作成することができる。

データベースインスタンスの作成時には「マスターユーザー名」と「マスターユーザーのパスワード」を指定する必要がある（起動後も変更可能）。また、通常のMySQLと同様にユーザーの追加や権限の設定を行うこともできる。

データベースインスタンスにアクセスするには、MySQLクライアントライブラリやmysqlコマンドで、データベースインスタンスのDNS名(FQDN)およびポート番号を指定する。

また、EC2インスタンスと同様に、起動時にどのAvailability Zoneで稼働させるかを指定することもできる。

データベースエンジン (Database engine)
データベースインスタンスはMySQL5.1データベースエンジンで稼働する。

将来的には複数のデータベースエンジンをサポートするかもしれないが、現時点ではMySQL 5.1のみがサポートされている。

データベースセキュリティグループ (Database Security Groups)
データベースインスタンスへのネットワークアクセスを制御する。アクセスを許可するリモートホストをCIDRで指定する。

データベーススナップショット (Database Snapshots)
ユーザーにより作成される、いつでもリストア可能なデータベースインスタンスのバックアップ。

データベースパラメータグループ (Database Parameter Groups)
1つ以上のデータベースインスタンスに適用されるエンジンの設定値をまとめたもの。

データベースインスタンスモニタリング(Database Instance Monitoring)
CloudWatch APIを使ってCPU・ストレージ・データベース接続のメトリクスにアクセス可能。

バックアップ

データベースインスタンスのバックアップには、自動バックアップとデータベーススナップショットの2種類がある。自動バックアップはあらかじめ指定した時間帯に自動的にバックアップがとられ、バックアップデータが一定期間だけ保管される。バックアップデータが保管されている間はいつでもリカバリすることができる。データベーススナップショットは、ユーザーが自分で作成するもので、いつでもリストアすることができ、スナップショットはユーザーが削除するまで保管され続ける。

どちらの場合も、バックアップ時に数分間のI/Oフリーズが発生する（原文：A brief I/O freeze (typically lasting a few minutes) will occur during both automated and user-initiated backup operations.）。

自動バックアップ

自動バックアップは、毎日、あらかじめ指定された2時間のバックアップ時間帯（backup window）のどこかでバックアップを自動作成し、保持期限（retention period）の間だけバックアップを保管する。自動バックアップは、新しいデータベースインスタンスを起動した際はデフォルトで有効となる。

自動バックアップを有効にするには、データベースインスタンスのbackup-retention-periodパラメータをゼロ以外の値に設定する。データベースインスタンスの起動後もパラメータの変更は可能。パラメータの値がゼロ以外の値に変更されると、最初のバックアップはただちに行われる。パラメータをゼロに変更すると自動バックアップはオフになり、そのデータベースインスタンスのすべての自動バックアップされたデータは削除される。

自動バックアップを行うバックアップ時間帯はpreferred-backup-windowパラメータで設定する。バックアップ時間帯が設定されていない場合は、システムは自動的に時間帯を設定する（us-east-1リージョンで稼働している場合はUTCの午前3時〜午前5時となる）。バックアップ時間帯の変更はただちに反映されるが、最低でも現在時刻より10分先でなければならない。また、インスタンスの週次メンテナンス時間帯と重なることはできない。

日毎の自動バックアップに加えて、データベースチェンジログも保管される。これにより、最大で直近5分前までの状態に復元することができる。

データベースインスタンスのバックアップはすべて単一の場所（availability zone）に格納される。何らかの理由でデータベースインスタンスが利用不能になると、データベースインスタンスはfailed状態になる。そうなった場合、rds-restore-db-instance-to-point-in-timeコマンドを使い、直近のバックアップを使ってデータベースインスタンスを復元することができる。

データベーススナップショット

データベーススナップショットはユーザーの指示によって作成される。スナップショットはユーザーが削除しない限り残る。

データベーススナップショットを作成するにはrds-create-db-snapshotコマンドを使い、リストアにはrds-restore-db-instance-from-snapshotコマンドを使う。保管されているスナップショットの一覧はrds-describe-db-snapshotsコマンドで表示することができる。

セットアップ

RDSを利用するには、Java 1.5とAmazon RDS Command Line [...]
]]></description>
			<content:encoded><![CDATA[<p>※この記事は、<a href="http://docs.amazonwebservices.com/AmazonRDS/latest/DeveloperGuide/">Amazon Relational Database Service Developer Guide</a>のAPI Version 2009-10-16版をもとにしています。</p>

<p>Amazon Relational Database Service(以下RDS)は、MySQL 5.1が稼働するサーバーをEC2インスタンスライクに利用することができるサービス。Amazon Web Servicesのアカウントがあれば、Webから申し込みをするだけで、初期費用なしで利用を開始することが可能。</p>

<h2>RDSにおける用語</h2>

<dl>
<dt>データベースインスタンス (DB Instance)</dt>
<dd>クラウド内で稼働する個別のデータベース環境。通常のMySQLサーバーだと考えてよいが、SSHでのログインはできない。1つのデータベースインスタンス内には複数のデータベースを作成することができる。</dd>

<dd>データベースインスタンスの作成時には「マスターユーザー名」と「マスターユーザーのパスワード」を指定する必要がある（起動後も変更可能）。また、通常のMySQLと同様にユーザーの追加や権限の設定を行うこともできる。</dd>

<dd>データベースインスタンスにアクセスするには、MySQLクライアントライブラリや<code>mysql</code>コマンドで、データベースインスタンスのDNS名(FQDN)およびポート番号を指定する。</dd>

<dd>また、EC2インスタンスと同様に、起動時にどのAvailability Zoneで稼働させるかを指定することもできる。</dd>

<dt>データベースエンジン (Database engine)</dt>
<dd>データベースインスタンスはMySQL5.1データベースエンジンで稼働する。</dd>

<dd>将来的には複数のデータベースエンジンをサポートするかもしれないが、現時点ではMySQL 5.1のみがサポートされている。</dd>

<dt>データベースセキュリティグループ (Database Security Groups)</dt>
<dd>データベースインスタンスへのネットワークアクセスを制御する。アクセスを許可するリモートホストをCIDRで指定する。</dd>

<dt>データベーススナップショット (Database Snapshots)</dt>
<dd>ユーザーにより作成される、いつでもリストア可能なデータベースインスタンスのバックアップ。</dd>

<dt>データベースパラメータグループ (Database Parameter Groups)</dt>
<dd>1つ以上のデータベースインスタンスに適用されるエンジンの設定値をまとめたもの。</dd>

<dt>データベースインスタンスモニタリング(Database Instance Monitoring)</dt>
<dd>CloudWatch APIを使ってCPU・ストレージ・データベース接続のメトリクスにアクセス可能。</dd>
</dl>

<h2>バックアップ</h2>

<p>データベースインスタンスのバックアップには、自動バックアップとデータベーススナップショットの2種類がある。自動バックアップはあらかじめ指定した時間帯に自動的にバックアップがとられ、バックアップデータが一定期間だけ保管される。バックアップデータが保管されている間はいつでもリカバリすることができる。データベーススナップショットは、ユーザーが自分で作成するもので、いつでもリストアすることができ、スナップショットはユーザーが削除するまで保管され続ける。</p>

<p>どちらの場合も、バックアップ時に数分間のI/Oフリーズが発生する（原文：A brief I/O freeze (typically lasting a few minutes) will occur during both automated and user-initiated backup operations.）。</p>

<h3>自動バックアップ</h3>

<p>自動バックアップは、毎日、あらかじめ指定された2時間のバックアップ時間帯（backup window）のどこかでバックアップを自動作成し、保持期限（retention period）の間だけバックアップを保管する。自動バックアップは、新しいデータベースインスタンスを起動した際はデフォルトで有効となる。</p>

<p>自動バックアップを有効にするには、データベースインスタンスの<code>backup-retention-period</code>パラメータをゼロ以外の値に設定する。データベースインスタンスの起動後もパラメータの変更は可能。パラメータの値がゼロ以外の値に変更されると、最初のバックアップはただちに行われる。パラメータをゼロに変更すると自動バックアップはオフになり、そのデータベースインスタンスのすべての自動バックアップされたデータは削除される。</p>

<p>自動バックアップを行うバックアップ時間帯は<code>preferred-backup-window</code>パラメータで設定する。バックアップ時間帯が設定されていない場合は、システムは自動的に時間帯を設定する（<code>us-east-1</code>リージョンで稼働している場合はUTCの午前3時〜午前5時となる）。バックアップ時間帯の変更はただちに反映されるが、最低でも現在時刻より10分先でなければならない。また、インスタンスの週次メンテナンス時間帯と重なることはできない。</p>

<p>日毎の自動バックアップに加えて、データベースチェンジログも保管される。これにより、最大で直近5分前までの状態に復元することができる。</p>

<p>データベースインスタンスのバックアップはすべて単一の場所（availability zone）に格納される。何らかの理由でデータベースインスタンスが利用不能になると、データベースインスタンスは<code>failed</code>状態になる。そうなった場合、<code>rds-restore-db-instance-to-point-in-time</code>コマンドを使い、直近のバックアップを使ってデータベースインスタンスを復元することができる。</p>

<h3>データベーススナップショット</h3>

<p>データベーススナップショットはユーザーの指示によって作成される。スナップショットはユーザーが削除しない限り残る。</p>

<p>データベーススナップショットを作成するには<code>rds-create-db-snapshot</code>コマンドを使い、リストアには<code>rds-restore-db-instance-from-snapshot</code>コマンドを使う。保管されているスナップショットの一覧は<code>rds-describe-db-snapshots</code>コマンドで表示することができる。</p>

<h2>セットアップ</h2>

<p>RDSを利用するには、Java 1.5と<a href="http://developer.amazonwebservices.com/connect/entry.jspa?externalID=2928">Amazon RDS Command Line Toolkit</a>が必要。</p>

<p>ダウンロードしたAmazon RDS Command Line Toolkitのzipファイルを展開し、任意のディレクトリに配置する。</p>

<pre><code>$ mv RDSCli-1.0.001 ~/apps
</code></pre>

<p>環境変数<code>AWS_RDS_HOME</code>に、Amazon RDS Command Line Toolkitのディレクトリパスを設定する（必要に応じてシェルの設定ファイルにも記述する）。</p>

<pre><code>$ export AWS_RDS_HOME=$HOME/apps/RDSCli-1.0.001
</code></pre>

<p><code>AWS_RDS_HOME</code>以下の<code>bin</code>ディレクトリを環境変数<code>PATH</code>に加える。</p>

<pre><code>$ export PATH=$PATH:$AWS_RDS_HOME/bin
</code></pre>

<p>UNIXの場合は<code>bin</code>ディレクトリ内のスクリプトに実行権限を与える。</p>

<pre><code>$ chmod +x $AWS_RDS_HOME/bin/*
</code></pre>

<p>APIを利用するためにAmazon Web Servicesアカウントの情報を記述したファイルを作成する。雛形として<code>$AWS_RDS_HOME/credential-file-path.template</code>が用意されているので、これをコピーして使う。</p>

<pre><code>$ cp $AWS_RDS_HOME/credential-file-path.template $AWS_RDS_HOME/credential-file-path
</code></pre>

<p>ファイルには、以下のようにAWSアクセスキーIDとAWSシークレットアクセスキーを記述する。</p>

<pre><code>AWSAccessKeyId=アクセスキーID
AWSSecretKey=シークレットアクセスキー
</code></pre>

<p>編集したファイルの権限を変更し、他のユーザーに見られないようにする。</p>

<pre><code>$ chmod 600 $AWS_RDS_HOME/credential-file-path
</code></pre>

<p>環境変数<code>AWS_CREDENTIAL_FILE</code>に、ファイルのパスを設定する（必要に応じてシェルの設定ファイルにも記述する）。</p>

<pre><code>$ export AWS_CREDENTIAL_FILE=$AWS_RDS_HOME/credential-file-path
</code></pre>

<p>RDSにアクセスできるか確認するために、データベースインスタンスの一覧を表示する。</p>

<pre><code>$ rds-describe-db-instances --headers
</code></pre>

<p>最初はデータベースインスタンスが起動していないため、何も表示されない。この時、以下のように表示された場合は、AWSアカウントのほうでRDSの利用申請がされていないので、先にRDSにサインアップしておく。</p>

<pre><code>$ rds-describe-db-instances --headers
rds-describe-db-instances:  Refused: Subscription to Amazon RDS Service, ProductCode AmazonRDS, required. 
 AWSRequestId:95477738-c2c8-11de-807a-79c03c55f7d4
</code></pre>

<h2>データベースインスタンスの作成</h2>

<p>データベースインスタンスを作成するには、<code>rds-create-db-instance</code>コマンドを利用する。</p>

<pre><code>$ rds-create-db-instance --db-instance-identifier myinstance \
--allocated-storage 5 \
--db-instance-class db.m1.small \
--engine MySQL5.1 \
--master-username juno \
--master-user-password testtest \
--db-name MyDatabase \
--headers
</code></pre>

<ul>
<li><code>--db-instance-identifier</code>はデータベースインスタンス識別用の名前</li>
<li><code>--allocated-storage</code>は割り当てるストレージ容量(5〜1024GB)</li>
<li><code>--db-instance-class</code>は利用するマシン(db.m1.small, db.m1.large, db.m1.xlarge, db.m2.2xlarge, db.m2.4xlarge)</li>
<li><code>--engine</code> は利用するエンジン</li>
<li><code>--master-username</code>と<code>--master-user-password</code>はマスターユーザーのログイン情報</li>
<li><code>--db-name</code>は作成するデータベース名</li>
</ul>

<p>作成に成功すると、以下のように表示される。</p>

<pre><code>DBINSTANCE  DBInstanceId  Class        Engine    Storage  Master Username  Status    Backup Retention
DBINSTANCE  myinstance    db.m1.small  mysql5.1  5        juno             creating  1               
      SECGROUP  Name     Status
      SECGROUP  default  active
      PARAMGRP  Group Name        Apply Status
      PARAMGRP  default.mysql5.1  in-sync
</code></pre>

<h2>データベースインスタンスの状態を表示</h2>

<p>データベースインスタンスの状態を表示するには、<code>rds-describe-db-instances</code>コマンドを利用する。</p>

<pre><code>$ rds-describe-db-instances --headers
DBINSTANCE  DBInstanceId  Class        Engine    Storage  Master Username  Status    AZ          Backup Retention
DBINSTANCE  myinstance    db.m1.small  mysql5.1  5        juno             creating  us-east-1d  1
      SECGROUP  default  active
      PARAMGRP  default.mysql5.1  in-sync
</code></pre>

<p>上記の場合は<code>Status</code>が<code>creating</code>なので、データベースインスタンスはまだ利用可能にはなっていない。サービスイン直後でリクエストが殺到していたせいかもしれないが、インスタンスが利用可能になるまでに20分〜30分ほどかかった。</p>

<h2>ネットワークアクセス許可の設定</h2>

<p>データベースインスタンスへのアクセスを許可するネットワークを設定するには、<code>rds-authorize-db-security-group-ingress</code>コマンドを利用する。</p>

<p>ネットワークアクセス許可の設定はデータベースセキュリティグループに対して行う必要がある。データベースインスタンスの起動時に特に指定をしなかった場合は<code>default</code>というデータベースセキュリティグループが割り当てられているので、この<code>default</code>グループに対して<code>CIDR</code>でアクセス許可を設定する。</p>

<pre><code>$ rds-authorize-db-security-group-ingress default --cidr-ip xxx.xxx.xx.x/xx --headers
SECGROUP  Name     Description
SECGROUP  default  default    
      IP-RANGE  IP Range         Status
      IP-RANGE  xxx.xxx.xx.x/xx  authorized
</code></pre>

<h2>データベースインスタンスへのアクセス</h2>

<p>以下のようにデータベースインスタンスの状態が<code>available</code>となり、<code>FQDN</code>が表示されたら、データベースへの接続が可能となる。</p>

<pre><code>$ rds-describe-db-instances --headers
DBINSTANCE  DBInstanceId  Created                   Class        Engine    Storage  Master Username  Status     Endpoint Address                                     Port  AZ          Backup Retention
DBINSTANCE  myinstance    2009-10-27T08:25:08.887Z  db.m1.small  mysql5.1  5        juno             available  myinstance.cowx10gz0tao.us-east-1.rds.amazonaws.com  3306  us-east-1d  1               
      SECGROUP  Name     Status
      SECGROUP  default  active
      PARAMGRP  Group Name        Apply Status
      PARAMGRP  default.mysql5.1  in-sync
</code></pre>

<p>試しに、<code>mysql</code>コマンドを使ってローカルマシンから接続する。</p>

<pre><code>$ mysql -h myinstance.cowx10gz0tao.us-east-1.rds.amazonaws.com -P 3306 -u juno -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 65
Server version: 5.1.38-log MySQL Community Server (GPL)

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

mysql&gt; select version();
+------------+
| version()  |
+------------+
| 5.1.38-log |
+------------+
1 row in set (0.18 sec)

mysql&gt; show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| MyDatabase         |
| innodb             |
| mysql              |
| tmp                |
+--------------------+
5 rows in set (0.19 sec)
</code></pre>

<p>上記の通り、通常のMySQLサーバーと同様に操作することができる。</p>

<h2>データベースインスタンスの削除</h2>

<p>データベースインスタンスを削除する場合は、<code>rds-delete-db-instance</code>コマンドを利用する。</p>

<pre><code>$ rds-delete-db-instance myinstance --skip-final-snapshot true --headers
Once you begin deleting this database, it will no longer be able to accept
connections.
Are you sure you want to delete this database? [Ny]y
</code></pre>

<p>削除確認が行われ、<code>y</code>を入力するとデータベースインスタンスの削除が開始される。</p>
]]></content:encoded>
			<wfw:commentRss>http://old-journal.sooey.com/2009/10/27/1141/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Twenty Rules for Amazon Cloud Security</title>
		<link>http://old-journal.sooey.com/2008/12/01/853/</link>
		<comments>http://old-journal.sooey.com/2008/12/01/853/#comments</comments>
		<pubDate>Mon, 01 Dec 2008 04:02:41 +0000</pubDate>
		<dc:creator>juno</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[cloud]]></category>

		<guid isPermaLink="false">http://www.sooey.com/journal/?p=853</guid>
		<description><![CDATA[週末は楽天テクノロジーカンファレンス 2008で存分に飲み食いしてきました。プレゼンは「充分な声量」と「余計なものを削ぎ落とした構成」が何よりも大事なんだなとあらためて実感した次第。

Twenty Rules for Amazon Cloud Security &#8211; O&#8217;Reilly Broadcastに、Amazonのクラウドサービスを使う際に考慮すべきことがまとめられています。「とにかく何でも暗号化＆鍵認証を使う」というのが基本で、それに加えて何よりも「write secure web applications」だと。この記事のフォローアップも、Key Security Issues for the Amazon Cloud &#8211; O&#8217;Reilly Broadcastにあります。
]]></description>
			<content:encoded><![CDATA[<p>週末は楽天テクノロジーカンファレンス 2008で存分に飲み食いしてきました。プレゼンは「充分な声量」と「余計なものを削ぎ落とした構成」が何よりも大事なんだなとあらためて実感した次第。</p>

<p><a href="http://broadcast.oreilly.com/2008/11/20-rules-for-amazon-cloud-security.html">Twenty Rules for Amazon Cloud Security &#8211; O&#8217;Reilly Broadcast</a>に、Amazonのクラウドサービスを使う際に考慮すべきことがまとめられています。「とにかく何でも暗号化＆鍵認証を使う」というのが基本で、それに加えて何よりも「write secure web applications」だと。この記事のフォローアップも、<a href="http://broadcast.oreilly.com/2008/11/key-security-issues-for-the-am.html">Key Security Issues for the Amazon Cloud &#8211; O&#8217;Reilly Broadcast</a>にあります。</p>
]]></content:encoded>
			<wfw:commentRss>http://old-journal.sooey.com/2008/12/01/853/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
<!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->