2014年12月22日月曜日

AWS VPCを作る際に最低限必要なIP

VPCを作成する際、最低でも /28 のサブネットが必要。最大は /16。
VPC内のサブネットも、最低 /28 のサブネット。
但しサブネット一個につき、先頭 4IPアドレス、末尾 1IPアドレスの合計5つはAWS側が利用するので使えない。
つまり /28 で作ったら利用できるIPは11個。

但しVPC内にELBを立てる場合は、/27 でサブネットを作る必要があり、フリーのIPアドレスが8個ある必要がある。

 参考
* Amazon VPC のよくある質問
* Amazon VPC の Elastic Load Balancing
* Configure Amazon VPC for Elastic Load Balancing
* ELBをVPC内に設置する際のサブネット設計の注意点


2014年8月1日金曜日

「取り敢えずAWSを使ってる」 開発者のためのAWS再入門のスライドを公開しました。

社内勉強会で使ったスライドを公開しました、ので宣伝です。 対象 AWSは利用してるけど、InstanceとVolume位しか使ってない・・・、という人。 最近のAWSの機能に追いついてない・・・、という人。 目的 AWSの新機能、余り知られていない機能を活用してより快適に、より安く、より安全にAWSを利用しよう。 ・・・という事で余りAWSを活用出来てないなぁという方を対象にしたスライドです。

2014年5月19日月曜日

Windowsでgit入れて、gitkやったら文字化けてる時にうつコマンド

Windowsでgit入れて、gitkやったら文字化けてる時にうつコマンド $ git config gui.encoding utf-8

2014年4月19日土曜日

botocoreでマルチプロファイルを使う方法。

botocore使ってるAWS CLIは簡単にプロファイル(AWSアカウント)の切替出来るのに、botocoreだとどうやるか分からんかったので調べた。
ただなーんかスマートじゃないんだよね。誰か正しい方法教えてえろい人。

準備

環境はUbuntu13.10。まずはpythonのインストール。多分余計なのも入れてる気がする。

sudo aptitude install python3.3 python3.3-dev build-essential automake libtool pkg-config

続いてbotocoreを持ってきていれる。ここは敢えてAWS CLIは入れてない。

cd ~/git
git clone https://github.com/boto/botocore.git
cd ~/git/botocore
sudo python3.3 setup.py install

configファイルの作成

configファイルってのはプロファイルの集まり。つまりこのファイルに利用したいAWSアカウントのアクセスキー/シークレットアクセスキーを列挙する。
一応このファイルには以下の書式ルールがある。

特に指定がなきゃ「default」が使われる
二個目以後は必ず「profile HOGE」見たいに頭に「profile 」を付ける必要がある。

ファイルの場所はどこでもいい。最終的にAWS_CONFIG_FILE環境変数にこのファイルへのパスを書く。
[default]
aws_access_key_id=AAAA
aws_secret_access_key=BBBB

[profile HOGE]
aws_access_key_id=CCCC
aws_secret_access_key=DDDD

[profile FUGA]
aws_access_key_id=EEEEE
aws_secret_access_key=FFFFF
region=ap-northeast-1

サンプルコード

session毎にprofileが切り替わる。つまりsession毎にAWSアカウントが切り替わる。
get_sessionメソッド実行時に環境変数っぽいけいしきでファイルを引き渡すとそれを元に、sessionを作ってくれるっぽい。

import botocore.session

# 特に指定しないと default が読まれる。
session = botocore.session.get_session()
ec2 = session.get_service('ec2')
operation = ec2.get_operation('DescribeInstances')
endpoint = ec2.get_endpoint('us-east-1')
http_response, response_data = operation.call(endpoint)
print(response_data)

# HOGEアカウントを指定したい場合
EnvironmentVariables = {
    'profile': ('HOGE', 'HOGE', 'HOGE'),
}
session = botocore.session.get_session(EnvironmentVariables)
ec2 = session.get_service('ec2')
operation = ec2.get_operation('DescribeInstances')
endpoint = ec2.get_endpoint('us-east-1')
http_response, response_data = operation.call(endpoint)
print(response_data)

2014年3月8日土曜日

古いInstanceTypeから新しいInstanceTypeに切り替えた時のトラブル対応

社内でm1系とかm2系で運用してきたInstanceをm3系、c3系に切り替えて再開したら、上手く起動しないという報告があった。

詳しく見てみるとm1.m2系のInstanceをSTOPして、InstanceTypeをm3/c3系に変更。その後STARTしたらRUNNING状態になるがステータスチェックの二つ目で転けていた。んでもってそもそもこのInstanceは結構古くから使われているモノだった。

ここまで聞いておおよそ見当が付いた。EC2Configとドライバが古いのだ。
取り敢えず一旦m1/m2系のInstanceで起動し直す。そこで以下の二つをDLして更新する。

http://aws.amazon.com/developertools/5562082477397515
http://aws.amazon.com/developertools/2187524384750206

とこれで完了。この後にm3/c3系に切り替えれば無事起動した。

2014年3月3日月曜日

python3 + bottleでshif-jisなcsvを出力する

無駄に悩んだ。
取り敢えずメモ程度に。
from io import StringIO
from bottle import route, response
@route('/get_csv')
def get_csv():
    response.content_type = 'application/octet-stream'
    response.headers['Content-Disposition'] = "attachment; filename='hoge.csv'"
    stream = StringIO()
    writecsv = csv.writer(stream)
        # ここでcsvを作る。
    stream.seek(0)
    return stream.getvalue().encode('shift-jis')