技術ブログ - 毎日が成長!

‘AWS’ タグのついている投稿

AWSをワイルドに使ってみる

2012年4月11日 by tateoka
4月に入社したAWSチームの舘岡と申します。
ご存知の方はこんにちは。
ご存知ない方は初めまして。
初の技術ブログ投稿です。

・出会い

先日、はなま○マーケットという朝の情報番組で「スギちゃん」というお笑い芸人さんを見かけました。
スギちゃん
〜引用〜
「○○だぜぇ~? ワイルドだろ~?」と言いながら、ワイルド、というより、勢いでやってしまって取り返しのつかないようなことを言い続けるネタを披露している。
〜引用〜
不勉強な僕はスギちゃんさんという芸人さんを存じ上げなかったのですが、ネタを見た瞬間にファンになりました。
非常に面白い。
で、この『ワイルド』が非常に気に入ったのでこの技術ブログに使えないかと考えた結果、
AWSをワイルドに使ってみたらどうだろう」という考えに行き着いたのでエントリしました。
ワイルドにAWSを使ってみます。

・ワイルドの定義

ワイルドの意味をgoo辞書で調べてみると…
[形動]
1 野生であるさま。自然のままであるさま。
2 荒々しく力強いさま。「―なイメージ」
という事がわかりました。
AWSと野生は関連付けが難しいですね。
荒々しく力強いさまというのもパッとしない。
辞書で引いたワイルドを実現するのは難しそうです。
スギちゃんさんのWikipediaには「勢いでやってしまって取り返しのつかないような事」とあるのでこちらをワイルドの定義としました。
その他にも僕がワイルドっぽいと思った事も含めています。

・ワイルドな制限解除

AWSは初期状態だとEC2インスタンス数やRDSインスタンス数、スナップショットの取れる数等の様々な制限が存在します。
これはAWSを使い過ぎないための制限で、各申請フォームから申し込む事で制限を段階的に解除出来ます。
しかし、ワイルドな使い方を考えると制限なんて必要ありません。
むしろ何も使っていないのに制限は解除させておきましょう。
これでワイルドに使いこなす準備が整いました。

・ワイルドなSecurityGroups

基本的には設定しません。
ただ、SecurityGroupsの設定をワイルドにしてしまうとAWS側から注意連絡が来るようです。
注意連絡が来るだけですので「ノーガードだぜぇ~? ワイルドだろ~?」と誰かに言う事は可能なようです。

・ワイルドなEC2インスタンス

起動するEC2インスタンスはmicroインスタンスかHPCのみです。
どちらかだけです。
smallとかlargeとか中途半端なインスタンスは起動しません。
そして起動するなら1台、もしくは起動出来るインスタンス制限のMAXまで起動します。
「3台だけ…」という中途半端な構成ではワイルドとは言えません。
もちろん、スポットインスタンスなんか利用しません。
リザーブドインスタンスは購入したけど一切使わない場合であればワイルド認定でしょうか。
実際にHPCインスタンスを上限MAXまで起動しようと思って上司に相談したのですが「会社の金で?バカなの?ねぇ?バカなの?」という事を遠まわしに言われてしまったので実現出来ませんでした。
悔しいので後でこっそり起動して起きます。
フッフッフッ…

・ワイルドなS3

事実上、容量無制限のS3ですが、1バケットに1ファイルしか置きません。
それがワイルド。
保存するファイルは会社のコンフィデンシャルなデータか個人の恥ずかしいデータ。
もちろん、PermissionはAll AllowですしWebで公開します。
それがワイルド。
こちらも上司にコンフィデンシャルなデータをS3で公開して良いか確認しようと思った矢先に「ダメ。絶対。」と言われてしまったので断念しました。
バレないように後でこっそりアップしておきます。
クックックッ…

・ワイルドなRDS

起動するインスタンスはもちろんOracle-EEの一択です。
インスタンスクラスはx4.large。
運用するサービスなんてまだ決まっていません。
要求の前に提供、それがワイルド。
データなんか入っていなくてもスナップショットをバンバン保存します。
意味なんか必要ありません。それがワイルド。
性懲りもなく上司にRDSインスタンスを起動して放置して良いか確認するタイミングで「相談がある」と会議室に連れて行かれて説教されました。
融通の効かない上司を持つと大変です。
もちろん、後でこっそり起動しておきます。
アーッハッハッハッ!

・まとめ

色々な意味で「勢いでやってしまって取り返しのつかないような事」が体験出来ました。
他にも色々思いついたのですが、会社側からのプレッシャーというか風当たりがキツくなってきたので今日はこのくらいで勘弁しておいてあげます。
※補足
AWSは初期費用がゼロの素晴らしいサービスです。
上記であげたのはあくまでワイルドな一例です。
使い方次第では非常に便利に安く使える強力なサービスですのでお間違えないようご注意下さい。
 

Asterisk-IVR on AWS(外線接続編)

2012年4月9日 by chiba

on

こんにちは、開発担当の千葉です。
【第5回 JAWS-UG-Sapporo 勉強会】で発表した構成にて、050番号による外線接続を実現したので投稿します。

外線番号には、高品質でイニシャルコストが魅力的なFusion IP-Phoneサービスを利用しました。

以下の構成で検証してみたいと思います。

ちなみに、初期費用は1,000円以下、通話料を除いた月額費用は500円以下だったと思います。
(※ 詳細については、Fusion IP-Phoneサービスにてご確認ください)

IP-Phoneの申し込みが完了すると、以下の様な情報が連絡されます。

【情報例】

SIPドメインfoo.sip.bar.net
IP加入電話番号050-xxxx-xxxx
アカウントIDxxxxxxxx
IP加入電話パスワード!aaa%bbb&ccc

これらの情報をもって、3ステップで環境を構築したいと思います。
編集対象となるファイルは以下の2ファイルです。

  • /etc/asterisk/sip.conf
  • /etc/asterisk/extensions.conf
【1. sip.confの編集】
[general]
port=5060
disallow=all
allow=gsm
localnet=192.168.0.0/255.255.0.0
externip=zzz.zzz.zzz.zzz

;[fusion1]
register => xxxxxxxx:!aaa%bbb&ccc@fusion1/xxxxxxxx

[201]
type=friend
defaultuser=201
secret=pass
canreinvite=no
host=dynamic
dtmfmode=rfc2833
callgroup=1
pickupgroup=1
mailbox=201

[fusion1]
type=friend
username=xxxxxxxx
fromuser=xxxxxxxx
secret=!aaa%bbb&ccc
canreinvite=no
context=incoming
insecure=port,invite
host=foo.sip.bar.net
fromdomain=foo.sip.bar.net
dtmfmode=auto
allowsubscribe=no
nat=never
 

編集対象行を以下に列挙します。

  • 6行目:『zzz.zzz.zzz.zzz
    IVRサーバの”グローバルIP”を記載します。
  • 9行目:『xxxxxxxx:!aaa%bbb&ccc@fusion1/xxxxxxxx
    “アカウントID”、”IP加入電話パスワード”を記載します。
  • 24行目:『username=xxxxxxxx
    “アカウントID”を記載します。
  • 25行目:『fromuser=xxxxxxxx
    “アカウントID”を記載します。
  • 26行目:『secret=!aaa%bbb&ccc
    “IP加入電話パスワード”を記載します。
  • 30行目:『host=foo.sip.bar.net
    “SIPドメイン”を記載します。
  • 31行目:『fromdomain=foo.sip.bar.net
    “SIPドメイン”を記載します。
【2. extensions.confの編集】
[globals]
MYNUMBER1=xxxxxxxx

[default]
exten => 316,1,Goto(at,1)
exten => at,1,Wait(3)
exten => at,2,Answer()
exten => at,3,AGI(example.php)

;From fusion
exten => ${MYNUMBER1},1,Wait(6)
exten => ${MYNUMBER1},2,Answer()
exten => ${MYNUMBER1},3,AGI(example.php)
exten => ${MYNUMBER1},n,Dial(SIP/${EXTEN}@fusion1)
exten => ${MYNUMBER1},n,Hangup
 

編集対象行を以下に列挙します。

  • 2行目:『MYNUMBER1=xxxxxxxx
    “アカウントID”を記載します。
【3. asteriskの起動、B2BUAへの接続確認】

これまでの作業で設定ファイルの編集は完了です。
asteriskを起動し、B2BUAへ正しく接続されているか確認しましょう。
(※ 1、15、21行目でコマンドを実行しています)

[root@ip-xxx-xxx-xxx-xxx ~]# asterisk -vvvvvvvvc
  == Registered custom function 'LOCAL'
Asterisk 1.8.9.1, Copyright (C) 1999 - 2011 Digium, Inc. and others.
Created by Mark Spencer <markster@digium.com>
Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details.
This is free software, with components licensed under the GNU General Public
License version 2 and other licenses; you are welcome to redistribute it under
certain conditions. Type 'core show license' for details.
=========================================================================
  == Parsing '/etc/asterisk/asterisk.conf':   == Found

〜〜〜〜〜〜〜〜〜〜〜 中略 〜〜〜〜〜〜〜〜〜〜〜

*CLI>
*CLI> sip show peers 
Name/username              Host                         Dyn Forcerport ACL Port     Status           
201/201                    000.000.000.000              D   N          61796        Unmonitored 
fusion1/xxxxxx             000.000.000.000                  N          5060         Unmonitored 
2 sip peers [Monitored: 0 online, 0 offline Unmonitored: 2 online, 0 offline]

*CLI>
*CLI> sip show peer fusion1

  * Name       : fusion1
  Secret       : <Set>
  MD5Secret    : <Not set>
  Remote Secret: <Not set>
  Context      : incoming
  Subscr.Cont. : <Not set>
  Language     : 
  AMA flags    : Unknown
  Transfer mode: open
  CallingPres  : Presentation Allowed, Not Screened
  FromUser     : xxxxxxxx
  FromDomain   : foo.sip.bar.net Port 5060
  Callgroup    : 

〜〜〜〜〜〜〜〜〜〜〜 中略 〜〜〜〜〜〜〜〜〜〜〜

  RTP Engine   : asterisk
  Parkinglot   : 
  Use Reason   : No
  Encryption   : No

*CLI>
 
【動作の確認】

050-xxxx-xxxx(IP加入電話番号)をコールすると、前回に316でコールしていた
IVR処理と同じ様に『Hello world』と言われるハズです。

まとめ

Fusion社の『IP-Phone』+『B2BUA』を利用することで、低投資で外線を利用したIVRサービスの構築が可能です。
『B2BUA』を利用することで、NTT東西が提供するフレッツサービス/AWS Direct Connect等の高価な回線を契約をせずに
外線を利用したAsterisk環境を構築することが可能です。

次回は、音声読み上げをやってみようと思います。

 

Amazon SNSをAWS SDK for Rubyから利用する

2012年4月6日 by arai

プログラマの新井です。

障害が起きた際にメールなどで通知するのもよいですが、折角なので通知用のサービスを活用してみましょう。

また、自動で通知することを考えるとAPI利用は当然ですね。

というわけで、今回は AWS SDK for Ruby を使用して Amazon SNS から通知の送信を行なってみようと思います。

Amazon SNSとは

Amazon Simple Notification Service (Amazon SNS) は、通知の送信を簡単にするウェブサービスです。

このアプリケーションからメッセージを発行して、それらを直ちに受信者またはその他のアプリケーションに伝達することができます。

「プッシュ」方式を利用しているため、クライアントからの定期的な確認を必要としません。

また、通知プロトコルにはHTTP/HTTPS、Email、Amazon SQSなどが利用できます。

準備

まずAWS SDK for Rubyをインストールします。

Rubyは1.9.3-p125を利用しています。

$ gem install aws-sdk

次に利用するAmazon SNSのトピックを作成します。

また、今回は送信先にAmazon SQSを利用するため、合わせてキューの作成をしています。

リージョンはTokyoリージョンを設定しています。

実行後にARNが出力されます。

次で利用しますので忘れずにメモをしておきましょう。

通知の送信、受信

送信した通知の内容が出力されました。やりましたね!

次回は通知された内容を利用してみます。

 

PAGE TOP