20121112 jaws-ug sapporo8

Preview:

DESCRIPTION

2012/11/12 第8回JAWS-UG札幌支部 事例発表資料

Citation preview

2012/11/12 第8回 JAWS-UG 札幌

大内 寛和

AWSのおかげで・・・

大内 寛和株式会社データクラフト 開発部

fb: hirokazu.ouchi

JAWS-UG 札幌 ( 2010/12/14~ )副代表

好きなサービス

Amazon Route

53

ロイヤリティーフリーの写真素

材印刷、マルチメディア、WEBデザインな

ど幅広い用途に利用可能な、ロイヤリ

ティーフリー・デジタルフォトコレク

ション。

http://www.sozaijiten.com/

ストックフォトのダウンロード

販売国内・海外のフォトブランドから200万

以上の写真素材を提供するストック

フォ

トダウンロード販売サイト。http://imagenavi.jp/

AWSを利用するきっかけについて

Webサイト、社内の業務アプリ開発メイン(サーバ/インフラには全く興味なし)

自社サイトはオンプレミス型で運用(クラウドの知識は0)

← この人

2010/11/3 【札幌】 AWSハンズオンに参加!

数分でサーバ起動・・・(えっ?

時間課金・・・(本当に?

サーバのコピーが簡単・・・(唖然

ファイルアップしただけで、URLが付く・・・(面白い!

すっかり、AWSに魅入られてしまい、

社内利用を目指して、AWSについて、うんちくを語り、半ばこじつけでAWSアカウントを取得!

そんなことをやってるうちに・・・

サーバ担当になりました

AWSのおかげで、仕事が増え自社サイトの課題が明確になり、試行錯誤を繰り返しながら、改善に勤しんでおります。

その中で培った、AWSの小ネタをご紹介します。

Q1. AWSからメール送りたい!

Q2. サイトが重くてつながらない、助けて!

Q3. (オマケ)海外のサイトを調査したい!

Q1.

AWSからメールを送りたい!

mail

Web

Server

Mail

Server ?

EC2インスタンスからメール送信

大まかな手順・メールサーバのDNS正引き設定・メール送信制限解除・DNS逆引き設定の申請・sendmail/postfixの調整

Web

Server

Mail

Server

Email

AWS:申請ページ

費用は、EC2の課金(インスタンス起動時間、データ転送量等)

AmazonSESからメール送信

Web

Server

EmailAmazon SES

大まかな手順・SES利用申請(テスト環境)・送信元アドレスの設定・本番利用申請

費用は、SESの課金(データ転送量、メッセージ送信数)

IAM: SESメール送信権限を持つユーザーを登録

SES利用準備

メール送信する方法(PHP)

<?phprequire_once("/opt/aws/php/sdk.class.php");

$ses=new AmazonSES();$res=$ses->send_email(

'oouchi@datacraft.co.jp',array( 'ToAddresses' => array('oouchi@datacraft.co.jp','hz.ouchi@gmail.com') ),array(

'Subject' => array( 'Data' => 'えのき', 'Charset' => 'UTF-8'),'Body' => array( 'Text' => array('Data' => '好きです', 'Charset' => 'UTF-8')),

),);

echo $res->isOK() ? "OK": "NG";

AWS SDKを利用

各システムに、こういうコードを仕込むのはちょっと・・・

postfixからSESにリレーしましょう!

Web

Server

EmailAmazon SES

「/etc/postfix/main.cf」 追加

relayhost = email-smtp.us-east-1.amazonaws.com:25smtp_sasl_auth_enable = yessmtp_sasl_security_options = noanonymoussmtp_sasl_password_maps = hash:/etc/postfix/sasl_passwdsmtp_use_tls = yessmtp_tls_security_level = encryptsmtp_tls_note_starttls_offer = yessmtp_tls_CAfile = /etc/ssl/certs/ca-bundle.crt

「/etc/postfix/sasl_passwd」 新規作成

email-smtp.us-east-1.amazonaws.com:25 [アクセスキー]:[シークレットキー]

postfix再起動

sudo postmap hash:/etc/postfix/sasl_passwdsudo /etc/init.d/postfix restart

postfixの設定

1年前から、この方法でメール送信していますが、当時、postfixのことはよくわかっておらず。

ググってみると・・・

パクリ頂きました!ありがとうございます!

注意点

AmazonSESは、1日の送信制限があるので、制限を超えないように運用しましょう。

Cloudwatch+SNSで監視 AWS SDKを利用して、お好みの監視システムを使うのもよし

<?phprequire_once("/opt/aws/php/sdk.class.php");

$ses=new AmazonSES();$response=$ses->get_send_quota();

if ($response->status===200) {$quota_result=$response->body->GetSendQuotaResult;// 利用率echo ($quota_result->SentLast24Hours/$quota_result->Max24HourSend*100);

}

Q2.

サイトが重くてつながらない、助けて!

親しくお付き合いしている会社のWebデザイナーさんからのご相談。

状況:・告知サイトを公開したところ、アクセスが殺到してサイトにつながりにくくなっている。・販売サイトにも影響して困っている。・告知サイトは、HTML+JSの静的コンテンツで構成している。・大きめの画像を表示している。

これだ!

Direct Hostingパターン

ユーザー コンテンツ編集者

Web

Server

告知サイトのコンテンツはすべてS3に配置

販売サイトhttp://xxx.jp/

告知ページhttp://yyy.xxx.jp/

リリース情報等、告知済みなので、ページのURLは、変えたくないです。

これだ!

Web Storageパターン

ユーザー コンテンツ編集者

Web

Server

HTMLは既存サーバーに、JS、CSS、画像をS3に配置

販売サイト http://xxx.jp/告知ページ http://xxx.jp/yyy/

コンテンツhttp://yyy.xxx.jp/

主な作業・S3バケットを作成・S3で付与されたホスト名をDNSに設定・コンテンツ編集用のアカウントをIAMで作成、S3の権限のみ付与

コンテンツのアップには、Cyberduckを使用しています。

AWS Billing Alertsを利用して、費用が一定額を超えたらメール通知するよう設定

これでめでたく解決しました。

S3の使用料は、当初の見積りよりも低く抑えられました。

相談者のWebデザイナーさんは、AWSの凄さに驚いていました。また、運用も簡単ということで、現在もご利用頂いています。

補足今回利用した、Web Storageパターンではなく、CloudFrontを利用した、Cache Distributionパターンを用いるのもよいかと思います。

ユーザー

Web

Server

ユーザー

ユーザー

S3

CloudFront

CloudFront

CloudFront

Web

Server

Q3.

(オマケ)海外のサイトを調査したい!

社内の人から、以下のような問い合わせ。

「USのWebサイトを調査したいんだけど、日本からだとアクセスできないみたい。何かいい方法ない?」

その時は、ちょっと忙しかったんで、詳しく聞かずに・・・

じゃ・・・

はい、どうぞ

後日、どのサイトを調査したのか聞いたところ・・・

USのiTunesで、どの程度露出しているか確認したかったようです。

iTunesって、アクセス元のIPで、表示を変えている?

設定を変えれば、国ごとの表示に切り替わるんじゃ・・・

国変更でk

まとめ

・EC2でイチから環境構築せずに、AWSのサービスをうまく活用することで、費用削減、サービスの早期構築に繋がります。

・CDPは、AWSとよりよくお付き合いする為のお手本。オンプレミス環境の改善にも参考になります。

・ユーザーニーズを正確に把握し、適切なサイズのソリューションを心がけましょう・・・(反省)

JAWS-UG 札幌

来年もよろしくお願いします!