SlideShare a Scribd company logo
チャラチャッチャチャラッチャー
でちょっと良いものができた話

Copyright © 2014 AGREX INC.

14年1月18日土曜日
まず、ごめんなさい

Copyright © 2014 AGREX INC.

14年1月18日土曜日

2
まず、ごめんなさい

素晴らしいお話の数々の後では、
完全にお耳汚しですw

Copyright © 2014 AGREX INC.

14年1月18日土曜日

2
プロフィール
てるい まさし

照井 将士
http://www.facebook.com/marcy.terui
(株)アグレックス 札幌事業所 システム部

AWS Certified Solutions Architect
1987年 東京都大田区生まれ
1992年 札幌移住
2011年  (株)アグレックス入社

役職:下っ端・雑用係

好きなサービス
Route53、CloudWatch、RDS(MySQL)

Copyright © 2014 AGREX INC.

14年1月18日土曜日

3
プロフィール
てるい まさし

照井 将士
http://www.facebook.com/marcy.terui
(株)アグレックス 札幌事業所 システム部

AWS Certified Solutions Architect
1987年 東京都大田区生まれ
1992年 札幌移住
2011年  (株)アグレックス入社

役職:下っ端・雑用係

好きなサービス
Route53、CloudWatch、RDS(MySQL)

Copyright © 2014 AGREX INC.

14年1月18日土曜日

3
プロフィール
てるい まさし

照井 将士
http://www.facebook.com/marcy.terui
(株)アグレックス 札幌事業所 システム部

AWS Certified Solutions Architect
1987年 東京都大田区生まれ
1992年 札幌移住
2011年  (株)アグレックス入社

役職:下っ端・雑用係

好きなサービス
Route53、CloudWatch、RDS(MySQL)

Copyright © 2014 AGREX INC.

14年1月18日土曜日

3
プロフィール
てるい まさし

照井 将士
http://www.facebook.com/marcy.terui
(株)アグレックス 札幌事業所 システム部

AWS Certified Solutions Architect
1987年 東京都大田区生まれ
1992年 札幌移住
2011年  (株)アグレックス入社

役職:下っ端・雑用係

好きなサービス

AWSチームリーダーに
クラスアップしました!
※注 現状1人チームだからリーダーなだけw

Route53、CloudWatch、RDS(MySQL)

Copyright © 2014 AGREX INC.

14年1月18日土曜日

3
とある問題がありました。

Copyright © 2014 AGREX INC.

14年1月18日土曜日

4
とある問題がありました。

アカウントが増えてきて、
CloudWatchのアラート状況の
把握が難しくなってきた。

Copyright © 2014 AGREX INC.

14年1月18日土曜日

4
とある問題がありました。

アカウントが増えてきて、
CloudWatchのアラート状況の
把握が難しくなってきた。
コンソールからは当然アカウント単位でしか見れない。
でも、データストアとか監視サーバの管理しなくて良いし、
アカウント単位で誰かに見せたくなったらIAMユーザ使ったりできて良い所も一杯あるから、
辞めてZabbixに集約とかっていうのも微妙なんですよね∼

Copyright © 2014 AGREX INC.

14年1月18日土曜日

4
ウチにはこんな子が居ます。

ウチの警子ちゃん
http://www.isa-j.co.jp/keiko-10th/index[1].html

Copyright © 2014 AGREX INC.

14年1月18日土曜日

5
ウチにはこんな子が居ます。
CloudWatchのアラームが上がると…

ウチの警子ちゃん

ピピピピ

Copyright © 2014 AGREX INC.

14年1月18日土曜日

http://www.isa-j.co.jp/keiko-10th/index[1].html

5
ウチにはこんな子が居ます。
CloudWatchのアラームが上がると…

ウチの警子ちゃん

ピピピピ

http://www.isa-j.co.jp/keiko-10th/index[1].html

なんで鳴ってるの…?
アラートメールどこ行った??
Copyright © 2014 AGREX INC.

14年1月18日土曜日

5
ということで

クロスアカウントで、
アラーム状態を集約して見られる
ダッシュボード的なものが欲しい!

Copyright © 2014 AGREX INC.

14年1月18日土曜日

6
ということで

作ってみました。

Copyright © 2014 AGREX INC.

14年1月18日土曜日

7
どんな感じで作った?

こんな感じです。

Copyright © 2014 AGREX INC.

14年1月18日土曜日

8
ミュージックスタート!古いって言わないでwww

Copyright © 2014 AGREX INC.

14年1月18日土曜日

9
ミュージックスタート!古いって言わないでwww
チャラチャッチャチャラッチャ∼♪
                      ォ"               __,,,.. 、 `、
                     チ,,     _,,..、"" ,,,ィェェォーン`''" 、 ヾ  ヽ、
                    イ;;: :./~`''"    ̄ ̄ ¨ ¨`リ、"ヾ、  、 、  ヽ
                    f;;::/            ミヾ  ヽ  、 、  .}
.                    ∨ .::::...         ミ       、 、 ;'i
.                     { ..:;::..         ミ゛       、 、', .}
                   ,ァ'ー-、:{i:t,,..--'"`ヽ、`ヽ:::::`ヾ、      `  、', }
                  '"''t--=ゞ、`ー三''" ̄`  `::::  |         、',. .|
                    无エニ=/ ::(アエエ=-、_,.:::   |     y=、   .リ
                    广;;''/  ::.`ー  ''"~   ::. |  チ''" ィ''ヾヽ  リ
                    { .::/ .....::、     .......::::::: |  / , 、ヾ ノ /  ,'
                    `、 ( ,zzュ,,リ:.   ....:::::::::  | / r' イ='./ /  ,'
                     |,ィエェエta、 :::.  ..::::.    | .|::("'´゛./ ,/
                    キ'"、__`ヾッ, ::       ~´;;;;`ーイ   ,'
              ,,,..ィ==t、   `、¨`ー'"ア"::.. ..::::::    /;;;    :|  ,'
             以zzt、;;;;`、  ヾ、,,,;:'"....;;;;;;..::::    /;;;;;     :| .,'
             f三三~`,,`、}   |i |;;;ミ      ,,.イ;;;;;;;;;      :| ,'
             〉==- 、三;/   {ヾt;;;ミ_,,,,,.ィツ;;;;;;;;;;;;;;;;       ツ_
             /   `ヾナ   `ー====マ-''";;;;;;;;;;;;         ∨` i
.           /    ./         リt;;;;;;;;; ::::         /  `t、
           /     /.         / :i;;;;::....         /    / `、
.          /     /        ,. ィ"i  `、;;;::       ,.イ      /   ヽ、
         /     /     ,. - '"   |   `、;:    ,. イ        /     `ー
       /~\  ,... /,. - ' "      /-- .、  〉-r''"         /
    ,. ィ''",,.. 、  `Y  |"          f:::::::::__/`ー-ナ--――-ァ   /,'
  r'" ̄    `ヽ、!、 〉          {::::::ー''リ、;;;;チ`ー=ニ_::::::/  / ./
  {,,.. =---''`ヽ、`}:: .{           ',::::::::::/~`、ヾ`ヽ,,::: /  / ,'

左
Copyright © 2014 AGREX INC.

14年1月18日土曜日

右
9
ミュージックスタート!古いって言わないでwww
チャラチャッチャチャラッチャ∼♪
                      ォ"               __,,,.. 、 `、
                     チ,,     _,,..、"" ,,,ィェェォーン`''" 、 ヾ  ヽ、
                    イ;;: :./~`''"    ̄ ̄ ¨ ¨`リ、"ヾ、  、 、  ヽ
                    f;;::/            ミヾ  ヽ  、 、  .}
.                    ∨ .::::...         ミ       、 、 ;'i
.                     { ..:;::..         ミ゛       、 、', .}
                   ,ァ'ー-、:{i:t,,..--'"`ヽ、`ヽ:::::`ヾ、      `  、', }
                  '"''t--=ゞ、`ー三''" ̄`  `::::  |         、',. .|
                    无エニ=/ ::(アエエ=-、_,.:::   |     y=、   .リ
                    广;;''/  ::.`ー  ''"~   ::. |  チ''" ィ''ヾヽ  リ
                    { .::/ .....::、     .......::::::: |  / , 、ヾ ノ /  ,'
                    `、 ( ,zzュ,,リ:.   ....:::::::::  | / r' イ='./ /  ,'
                     |,ィエェエta、 :::.  ..::::.    | .|::("'´゛./ ,/
                    キ'"、__`ヾッ, ::       ~´;;;;`ーイ   ,'
              ,,,..ィ==t、   `、¨`ー'"ア"::.. ..::::::    /;;;    :|  ,'
             以zzt、;;;;`、  ヾ、,,,;:'"....;;;;;;..::::    /;;;;;     :| .,'
             f三三~`,,`、}   |i |;;;ミ      ,,.イ;;;;;;;;;      :| ,'
             〉==- 、三;/   {ヾt;;;ミ_,,,,,.ィツ;;;;;;;;;;;;;;;;       ツ_
             /   `ヾナ   `ー====マ-''";;;;;;;;;;;;         ∨` i
.           /    ./         リt;;;;;;;;; ::::         /  `t、
           /     /.         / :i;;;;::....         /    / `、
.          /     /        ,. ィ"i  `、;;;::       ,.イ      /   ヽ、
         /     /     ,. - '"   |   `、;:    ,. イ        /     `ー
       /~\  ,... /,. - ' "      /-- .、  〉-r''"         /
    ,. ィ''",,.. 、  `Y  |"          f:::::::::__/`ー-ナ--――-ァ   /,'
  r'" ̄    `ヽ、!、 〉          {::::::ー''リ、;;;;チ`ー=ニ_::::::/  / ./
  {,,.. =---''`ヽ、`}:: .{           ',::::::::::/~`、ヾ`ヽ,,::: /  / ,'

(((((【右から】c(・ェ・c`)三(´っ・ェ・)っ((((((【左へ】受け流す∼♪ 

左
Copyright © 2014 AGREX INC.

14年1月18日土曜日

右
9
ミュージックスタート!古いって言わないでwww
チャラチャッチャチャラッチャ∼♪
                      ォ"               __,,,.. 、 `、
                     チ,,     _,,..、"" ,,,ィェェォーン`''" 、 ヾ  ヽ、
                    イ;;: :./~`''"    ̄ ̄ ¨ ¨`リ、"ヾ、  、 、  ヽ
                    f;;::/            ミヾ  ヽ  、 、  .}
.                    ∨ .::::...         ミ       、 、 ;'i
.                     { ..:;::..         ミ゛       、 、', .}
                   ,ァ'ー-、:{i:t,,..--'"`ヽ、`ヽ:::::`ヾ、      `  、', }
                  '"''t--=ゞ、`ー三''" ̄`  `::::  |         、',. .|
                    无エニ=/ ::(アエエ=-、_,.:::   |     y=、   .リ
                    广;;''/  ::.`ー  ''"~   ::. |  チ''" ィ''ヾヽ  リ
                    { .::/ .....::、     .......::::::: |  / , 、ヾ ノ /  ,'
                    `、 ( ,zzュ,,リ:.   ....:::::::::  | / r' イ='./ /  ,'
                     |,ィエェエta、 :::.  ..::::.    | .|::("'´゛./ ,/
                    キ'"、__`ヾッ, ::       ~´;;;;`ーイ   ,'
              ,,,..ィ==t、   `、¨`ー'"ア"::.. ..::::::    /;;;    :|  ,'
             以zzt、;;;;`、  ヾ、,,,;:'"....;;;;;;..::::    /;;;;;     :| .,'
             f三三~`,,`、}   |i |;;;ミ      ,,.イ;;;;;;;;;      :| ,'
             〉==- 、三;/   {ヾt;;;ミ_,,,,,.ィツ;;;;;;;;;;;;;;;;       ツ_
             /   `ヾナ   `ー====マ-''";;;;;;;;;;;;         ∨` i
.           /    ./         リt;;;;;;;;; ::::         /  `t、
           /     /.         / :i;;;;::....         /    / `、
.          /     /        ,. ィ"i  `、;;;::       ,.イ      /   ヽ、
         /     /     ,. - '"   |   `、;:    ,. イ        /     `ー
       /~\  ,... /,. - ' "      /-- .、  〉-r''"         /
    ,. ィ''",,.. 、  `Y  |"          f:::::::::__/`ー-ナ--――-ァ   /,'
  r'" ̄    `ヽ、!、 〉          {::::::ー''リ、;;;;チ`ー=ニ_::::::/  / ./
  {,,.. =---''`ヽ、`}:: .{           ',::::::::::/~`、ヾ`ヽ,,::: /  / ,'

左
Copyright © 2014 AGREX INC.

14年1月18日土曜日

右
9
わかりましたか?

すいません。
ちゃんと説明します。

Copyright © 2014 AGREX INC.

14年1月18日土曜日

10
こんな感じです。
require dirname(__DIR__) . '/init.php';
use AwsCloudWatchCloudWatchClient;
use DashBoardUtilPropaties;
$data = array();
foreach (new DirectoryIterator(PROPATIES_DIR) as $fileInfo) {
if($fileInfo->isDot()) continue;
$prop = new Propaties(PROPATIES_DIR . "/" . $fileInfo->getFilename());
$cloudwatch = CloudWatchClient::factory(array(
'key' => $prop->get(PROPATIES_ACCESS_KEY),
'secret' => $prop->get(PROPATIES_SECRET_KEY),
'region' => AWS_REGION
));
$model = $cloudwatch->describeAlarms();
$data[$prop->get(PROPATIES_SYSTEM_NAME)] = $model->get("MetricAlarms");
}
$rows = "";
foreach ($data as $systemName => $alarms) {
foreach ($alarms as $alarm) {
$rows .= "['{$systemName}', '{$alarm['AlarmName']}', '{$alarm['AlarmDescription']}', '{$alarm['MetricName']}',
'{$alarm['StateValue']}'],n";
}
}
$date = date("Y-m-d H:i:s");
$content = "
<html>
<head>
<script type='text/javascript' src='https://www.google.com/jsapi'></script>
<script type='text/javascript'>
google.load('visualization', '1', {packages:['table']});
google.setOnLoadCallback(drawTable);
function drawTable() {
var data = new google.visualization.DataTable();
data.addColumn('string', 'SystemName');
data.addColumn('string', 'AlarmName');
data.addColumn('string', 'AlarmDescription');
data.addColumn('string', 'MetricName');
data.addColumn('string', 'StateValue');
data.addRows([
{$rows}
]);
var table = new google.visualization.Table(document.getElementById('table_div'));
var formatter = new google.visualization.ColorFormat();
formatter.addRange('ALARM', 'INSUFFICIENT_DATA', 'white', 'red');
formatter.addRange('INSUFFICIENT_DATA', 'OK', 'white', 'orange');
formatter.addRange('OK', null, 'white', '#33ff33');
formatter.format(data, 4);
table.draw(data, {allowHtml: true, showRowNumber: true});
}
</script>
</head>
<body>
<h1>{$date}時点</h1>
<div id='table_div'></div>
</body>
</html>
";
echo $content;

Copyright © 2014 AGREX INC.

14年1月18日土曜日

11
こんな感じです。
require dirname(__DIR__) . '/init.php';
use AwsCloudWatchCloudWatchClient;
use DashBoardUtilPropaties;
$data = array();
foreach (new DirectoryIterator(PROPATIES_DIR) as $fileInfo) {
if($fileInfo->isDot()) continue;
$prop = new Propaties(PROPATIES_DIR . "/" . $fileInfo->getFilename());
$cloudwatch = CloudWatchClient::factory(array(
'key' => $prop->get(PROPATIES_ACCESS_KEY),
'secret' => $prop->get(PROPATIES_SECRET_KEY),
'region' => AWS_REGION
));
$model = $cloudwatch->describeAlarms();
$data[$prop->get(PROPATIES_SYSTEM_NAME)] = $model->get("MetricAlarms");
}

①AWS CloudWatch APIからデータもらう
 ×アカウント数

$rows = "";
foreach ($data as $systemName => $alarms) {
foreach ($alarms as $alarm) {
$rows .= "['{$systemName}', '{$alarm['AlarmName']}', '{$alarm['AlarmDescription']}', '{$alarm['MetricName']}',
'{$alarm['StateValue']}'],n";
}
}
$date = date("Y-m-d H:i:s");
$content = "
<html>
<head>
<script type='text/javascript' src='https://www.google.com/jsapi'></script>
<script type='text/javascript'>
google.load('visualization', '1', {packages:['table']});
google.setOnLoadCallback(drawTable);
function drawTable() {
var data = new google.visualization.DataTable();
data.addColumn('string', 'SystemName');
data.addColumn('string', 'AlarmName');
data.addColumn('string', 'AlarmDescription');
data.addColumn('string', 'MetricName');
data.addColumn('string', 'StateValue');
data.addRows([
{$rows}
]);
var table = new google.visualization.Table(document.getElementById('table_div'));
var formatter = new google.visualization.ColorFormat();
formatter.addRange('ALARM', 'INSUFFICIENT_DATA', 'white', 'red');
formatter.addRange('INSUFFICIENT_DATA', 'OK', 'white', 'orange');
formatter.addRange('OK', null, 'white', '#33ff33');
formatter.format(data, 4);
table.draw(data, {allowHtml: true, showRowNumber: true});
}
</script>
</head>
<body>
<h1>{$date}時点</h1>
<div id='table_div'></div>
</body>
</html>
";
echo $content;

Copyright © 2014 AGREX INC.

14年1月18日土曜日

11
こんな感じです。
require dirname(__DIR__) . '/init.php';
use AwsCloudWatchCloudWatchClient;
use DashBoardUtilPropaties;
$data = array();
foreach (new DirectoryIterator(PROPATIES_DIR) as $fileInfo) {
if($fileInfo->isDot()) continue;
$prop = new Propaties(PROPATIES_DIR . "/" . $fileInfo->getFilename());
$cloudwatch = CloudWatchClient::factory(array(
'key' => $prop->get(PROPATIES_ACCESS_KEY),
'secret' => $prop->get(PROPATIES_SECRET_KEY),
'region' => AWS_REGION
));
$model = $cloudwatch->describeAlarms();
$data[$prop->get(PROPATIES_SYSTEM_NAME)] = $model->get("MetricAlarms");
}

①AWS CloudWatch APIからデータもらう
 ×アカウント数

$rows = "";
foreach ($data as $systemName => $alarms) {
foreach ($alarms as $alarm) {
$rows .= "['{$systemName}', '{$alarm['AlarmName']}', '{$alarm['AlarmDescription']}', '{$alarm['MetricName']}',
'{$alarm['StateValue']}'],n";
}
}
$date = date("Y-m-d H:i:s");
$content = "
<html>
<head>
<script type='text/javascript' src='https://www.google.com/jsapi'></script>
<script type='text/javascript'>
google.load('visualization', '1', {packages:['table']});
google.setOnLoadCallback(drawTable);
function drawTable() {
var data = new google.visualization.DataTable();
data.addColumn('string', 'SystemName');
data.addColumn('string', 'AlarmName');
data.addColumn('string', 'AlarmDescription');
data.addColumn('string', 'MetricName');
data.addColumn('string', 'StateValue');
data.addRows([
{$rows}
]);
var table = new google.visualization.Table(document.getElementById('table_div'));
var formatter = new google.visualization.ColorFormat();
formatter.addRange('ALARM', 'INSUFFICIENT_DATA', 'white', 'red');
formatter.addRange('INSUFFICIENT_DATA', 'OK', 'white', 'orange');
formatter.addRange('OK', null, 'white', '#33ff33');
formatter.format(data, 4);
table.draw(data, {allowHtml: true, showRowNumber: true});
}
</script>
</head>
<body>
<h1>{$date}時点</h1>
<div id='table_div'></div>
</body>
</html>
";
echo $content;

Copyright © 2014 AGREX INC.

14年1月18日土曜日

11

②受け取った内容を軽く整形する
こんな感じです。
require dirname(__DIR__) . '/init.php';
use AwsCloudWatchCloudWatchClient;
use DashBoardUtilPropaties;
$data = array();
foreach (new DirectoryIterator(PROPATIES_DIR) as $fileInfo) {
if($fileInfo->isDot()) continue;
$prop = new Propaties(PROPATIES_DIR . "/" . $fileInfo->getFilename());
$cloudwatch = CloudWatchClient::factory(array(
'key' => $prop->get(PROPATIES_ACCESS_KEY),
'secret' => $prop->get(PROPATIES_SECRET_KEY),
'region' => AWS_REGION
));
$model = $cloudwatch->describeAlarms();
$data[$prop->get(PROPATIES_SYSTEM_NAME)] = $model->get("MetricAlarms");
}

①AWS CloudWatch APIからデータもらう
 ×アカウント数

$rows = "";
foreach ($data as $systemName => $alarms) {
foreach ($alarms as $alarm) {
$rows .= "['{$systemName}', '{$alarm['AlarmName']}', '{$alarm['AlarmDescription']}', '{$alarm['MetricName']}',
'{$alarm['StateValue']}'],n";
}
}
$date = date("Y-m-d H:i:s");
$content = "
<html>
<head>
<script type='text/javascript' src='https://www.google.com/jsapi'></script>
<script type='text/javascript'>
google.load('visualization', '1', {packages:['table']});
google.setOnLoadCallback(drawTable);
function drawTable() {
var data = new google.visualization.DataTable();
data.addColumn('string', 'SystemName');
data.addColumn('string', 'AlarmName');
data.addColumn('string', 'AlarmDescription');
data.addColumn('string', 'MetricName');
data.addColumn('string', 'StateValue');
data.addRows([
{$rows}
]);
var table = new google.visualization.Table(document.getElementById('table_div'));
var formatter = new google.visualization.ColorFormat();
formatter.addRange('ALARM', 'INSUFFICIENT_DATA', 'white', 'red');
formatter.addRange('INSUFFICIENT_DATA', 'OK', 'white', 'orange');
formatter.addRange('OK', null, 'white', '#33ff33');
formatter.format(data, 4);
table.draw(data, {allowHtml: true, showRowNumber: true});
}
</script>
</head>
<body>
<h1>{$date}時点</h1>

③Google Charts APIに投げる

<div id='table_div'></div>
</body>
</html>
";
echo $content;

Copyright © 2014 AGREX INC.

14年1月18日土曜日

②受け取った内容を軽く整形する

11
つまり

Cloudwatch API (右) から
Google Charts API (左) に
渡す(受け流す)だけ

Copyright © 2014 AGREX INC.

14年1月18日土曜日

12
…で、こんなんできましたー

Copyright © 2014 AGREX INC.

14年1月18日土曜日

13
…で、こんなんできましたー
INSUFICIENT_DATAがオレンジ
ALARMが赤になる
各ヘッダをクリックすると昇順降順の並べ替えができる

Copyright © 2014 AGREX INC.

14年1月18日土曜日

13
参考とまとめ

Copyright © 2014 AGREX INC.

14年1月18日土曜日

14
参考とまとめ
AWS SDK for PHP(他にもJava、.NET、Ruby、Python、Node.jsとかあります)
http://docs.aws.amazon.com/aws-sdk-php/guide/latest/index.html

Copyright © 2014 AGREX INC.

14年1月18日土曜日

14
参考とまとめ
AWS SDK for PHP(他にもJava、.NET、Ruby、Python、Node.jsとかあります)
http://docs.aws.amazon.com/aws-sdk-php/guide/latest/index.html
Google Charts
https://google-developers.appspot.com/chart/

Copyright © 2014 AGREX INC.

14年1月18日土曜日

14
参考とまとめ
AWS SDK for PHP(他にもJava、.NET、Ruby、Python、Node.jsとかあります)
http://docs.aws.amazon.com/aws-sdk-php/guide/latest/index.html
Google Charts
https://google-developers.appspot.com/chart/

ムーディ○山の現在
http://blog.livedoor.jp/aokichanyon444/archives/54385877.html

Copyright © 2014 AGREX INC.

14年1月18日土曜日

14
参考とまとめ
AWS SDK for PHP(他にもJava、.NET、Ruby、Python、Node.jsとかあります)
http://docs.aws.amazon.com/aws-sdk-php/guide/latest/index.html
Google Charts
https://google-developers.appspot.com/chart/

ムーディ○山の現在
http://blog.livedoor.jp/aokichanyon444/archives/54385877.html

思わず歌っちゃうほど簡単に、
ちょっと良いものができました。
他にも、異なるAPI同士を
組み合わせることで、
手間無く良いものができたりする例は一杯ありそう。
Copyright © 2014 AGREX INC.

14年1月18日土曜日

14
ありがとうございました!

Copyright © 2014 AGREX INC.

14年1月18日土曜日

15

More Related Content

More from Terui Masashi

クラウド環境におけるWebアプリケーションの正しい作り方(for Perl users)
クラウド環境におけるWebアプリケーションの正しい作り方(for Perl users)クラウド環境におけるWebアプリケーションの正しい作り方(for Perl users)
クラウド環境におけるWebアプリケーションの正しい作り方(for Perl users)Terui Masashi
 
The Internal of Serverless Plugins
The Internal of Serverless PluginsThe Internal of Serverless Plugins
The Internal of Serverless PluginsTerui Masashi
 
Unlimited Frameworks
Unlimited FrameworksUnlimited Frameworks
Unlimited FrameworksTerui Masashi
 
Cloud Vsion APIによるGUIの検証自動化
Cloud Vsion APIによるGUIの検証自動化Cloud Vsion APIによるGUIの検証自動化
Cloud Vsion APIによるGUIの検証自動化Terui Masashi
 
Serverless ArchitectureにおけるNoSQL Services 〜DynamoDBも良いけどSimpleDBも忘れないであげてください!!〜
Serverless ArchitectureにおけるNoSQL Services 〜DynamoDBも良いけどSimpleDBも忘れないであげてください!!〜Serverless ArchitectureにおけるNoSQL Services 〜DynamoDBも良いけどSimpleDBも忘れないであげてください!!〜
Serverless ArchitectureにおけるNoSQL Services 〜DynamoDBも良いけどSimpleDBも忘れないであげてください!!〜Terui Masashi
 
Infrastructure as Codeってなんだったっけ?
Infrastructure as Codeってなんだったっけ?Infrastructure as Codeってなんだったっけ?
Infrastructure as Codeってなんだったっけ?Terui Masashi
 
私はこれでJSONをやめました〜あるいはAWSの設定をコード化するとはどういうことか〜
私はこれでJSONをやめました〜あるいはAWSの設定をコード化するとはどういうことか〜私はこれでJSONをやめました〜あるいはAWSの設定をコード化するとはどういうことか〜
私はこれでJSONをやめました〜あるいはAWSの設定をコード化するとはどういうことか〜Terui Masashi
 
R○Sに学ぶイマドキのMySQL構築運用
���������������������������������������R○Sに学ぶイマドキのMySQL構築運用���������������������������������������R○Sに学ぶイマドキのMySQL構築運用
R○Sに学ぶイマドキのMySQL構築運用Terui Masashi
 
クラウド時代だからこそ見直したい
PHPアプリケーションのパフォーマンスチューニング
クラウド時代だからこそ見直したい
PHPアプリケーションのパフォーマンスチューニングクラウド時代だからこそ見直したい
PHPアプリケーションのパフォーマンスチューニング
クラウド時代だからこそ見直したい
PHPアプリケーションのパフォーマンスチューニングTerui Masashi
 
マルチクラウド #とは
マルチクラウド #とはマルチクラウド #とは
マルチクラウド #とはTerui Masashi
 
Lambda(Python)のデプロイについて考えたというか作った
Lambda(Python)のデプロイについて考えたというか作ったLambda(Python)のデプロイについて考えたというか作った
Lambda(Python)のデプロイについて考えたというか作ったTerui Masashi
 
Google App Engine for PHPとそのローカル開発環境について
Google App Engine for PHPとそのローカル開発環境についてGoogle App Engine for PHPとそのローカル開発環境について
Google App Engine for PHPとそのローカル開発環境についてTerui Masashi
 
PythonとYAMLでGCPをDeploy!「Google Cloud Deployment Manager」
PythonとYAMLでGCPをDeploy!「Google Cloud Deployment Manager」PythonとYAMLでGCPをDeploy!「Google Cloud Deployment Manager」
PythonとYAMLでGCPをDeploy!「Google Cloud Deployment Manager」Terui Masashi
 
ついに解禁!Amazon Aurora徹底検証!
ついに解禁!Amazon Aurora徹底検証!ついに解禁!Amazon Aurora徹底検証!
ついに解禁!Amazon Aurora徹底検証!Terui Masashi
 
Multi Cloud Design Pattern(Beta)
Multi Cloud Design Pattern(Beta)Multi Cloud Design Pattern(Beta)
Multi Cloud Design Pattern(Beta)Terui Masashi
 
Infra as Code Sapppro Casual 札幌の開催趣旨とTest-Kitchenの話
Infra as Code Sapppro Casual 札幌の開催趣旨とTest-Kitchenの話Infra as Code Sapppro Casual 札幌の開催趣旨とTest-Kitchenの話
Infra as Code Sapppro Casual 札幌の開催趣旨とTest-Kitchenの話Terui Masashi
 
IoTにおけるクラウドインフラからサーバサイドまでの概要的な話
IoTにおけるクラウドインフラからサーバサイドまでの概要的な話IoTにおけるクラウドインフラからサーバサイドまでの概要的な話
IoTにおけるクラウドインフラからサーバサイドまでの概要的な話Terui Masashi
 
[Deep Dive]Infra寄りのDevがお送りするRDS for Aurora徹底検証
[Deep Dive]Infra寄りのDevがお送りするRDS for Aurora徹底検証[Deep Dive]Infra寄りのDevがお送りするRDS for Aurora徹底検証
[Deep Dive]Infra寄りのDevがお送りするRDS for Aurora徹底検証Terui Masashi
 
初心から一週間で作ってみた Kinesis Client Library for Go
初心から一週間で作ってみた Kinesis Client Library for Go初心から一週間で作ってみた Kinesis Client Library for Go
初心から一週間で作ってみた Kinesis Client Library for GoTerui Masashi
 
Googleの○○にありがとう
Googleの○○にありがとうGoogleの○○にありがとう
Googleの○○にありがとうTerui Masashi
 

More from Terui Masashi (20)

クラウド環境におけるWebアプリケーションの正しい作り方(for Perl users)
クラウド環境におけるWebアプリケーションの正しい作り方(for Perl users)クラウド環境におけるWebアプリケーションの正しい作り方(for Perl users)
クラウド環境におけるWebアプリケーションの正しい作り方(for Perl users)
 
The Internal of Serverless Plugins
The Internal of Serverless PluginsThe Internal of Serverless Plugins
The Internal of Serverless Plugins
 
Unlimited Frameworks
Unlimited FrameworksUnlimited Frameworks
Unlimited Frameworks
 
Cloud Vsion APIによるGUIの検証自動化
Cloud Vsion APIによるGUIの検証自動化Cloud Vsion APIによるGUIの検証自動化
Cloud Vsion APIによるGUIの検証自動化
 
Serverless ArchitectureにおけるNoSQL Services 〜DynamoDBも良いけどSimpleDBも忘れないであげてください!!〜
Serverless ArchitectureにおけるNoSQL Services 〜DynamoDBも良いけどSimpleDBも忘れないであげてください!!〜Serverless ArchitectureにおけるNoSQL Services 〜DynamoDBも良いけどSimpleDBも忘れないであげてください!!〜
Serverless ArchitectureにおけるNoSQL Services 〜DynamoDBも良いけどSimpleDBも忘れないであげてください!!〜
 
Infrastructure as Codeってなんだったっけ?
Infrastructure as Codeってなんだったっけ?Infrastructure as Codeってなんだったっけ?
Infrastructure as Codeってなんだったっけ?
 
私はこれでJSONをやめました〜あるいはAWSの設定をコード化するとはどういうことか〜
私はこれでJSONをやめました〜あるいはAWSの設定をコード化するとはどういうことか〜私はこれでJSONをやめました〜あるいはAWSの設定をコード化するとはどういうことか〜
私はこれでJSONをやめました〜あるいはAWSの設定をコード化するとはどういうことか〜
 
R○Sに学ぶイマドキのMySQL構築運用
���������������������������������������R○Sに学ぶイマドキのMySQL構築運用���������������������������������������R○Sに学ぶイマドキのMySQL構築運用
R○Sに学ぶイマドキのMySQL構築運用
 
クラウド時代だからこそ見直したい
PHPアプリケーションのパフォーマンスチューニング
クラウド時代だからこそ見直したい
PHPアプリケーションのパフォーマンスチューニングクラウド時代だからこそ見直したい
PHPアプリケーションのパフォーマンスチューニング
クラウド時代だからこそ見直したい
PHPアプリケーションのパフォーマンスチューニング
 
マルチクラウド #とは
マルチクラウド #とはマルチクラウド #とは
マルチクラウド #とは
 
Lambda(Python)のデプロイについて考えたというか作った
Lambda(Python)のデプロイについて考えたというか作ったLambda(Python)のデプロイについて考えたというか作った
Lambda(Python)のデプロイについて考えたというか作った
 
Google App Engine for PHPとそのローカル開発環境について
Google App Engine for PHPとそのローカル開発環境についてGoogle App Engine for PHPとそのローカル開発環境について
Google App Engine for PHPとそのローカル開発環境について
 
PythonとYAMLでGCPをDeploy!「Google Cloud Deployment Manager」
PythonとYAMLでGCPをDeploy!「Google Cloud Deployment Manager」PythonとYAMLでGCPをDeploy!「Google Cloud Deployment Manager」
PythonとYAMLでGCPをDeploy!「Google Cloud Deployment Manager」
 
ついに解禁!Amazon Aurora徹底検証!
ついに解禁!Amazon Aurora徹底検証!ついに解禁!Amazon Aurora徹底検証!
ついに解禁!Amazon Aurora徹底検証!
 
Multi Cloud Design Pattern(Beta)
Multi Cloud Design Pattern(Beta)Multi Cloud Design Pattern(Beta)
Multi Cloud Design Pattern(Beta)
 
Infra as Code Sapppro Casual 札幌の開催趣旨とTest-Kitchenの話
Infra as Code Sapppro Casual 札幌の開催趣旨とTest-Kitchenの話Infra as Code Sapppro Casual 札幌の開催趣旨とTest-Kitchenの話
Infra as Code Sapppro Casual 札幌の開催趣旨とTest-Kitchenの話
 
IoTにおけるクラウドインフラからサーバサイドまでの概要的な話
IoTにおけるクラウドインフラからサーバサイドまでの概要的な話IoTにおけるクラウドインフラからサーバサイドまでの概要的な話
IoTにおけるクラウドインフラからサーバサイドまでの概要的な話
 
[Deep Dive]Infra寄りのDevがお送りするRDS for Aurora徹底検証
[Deep Dive]Infra寄りのDevがお送りするRDS for Aurora徹底検証[Deep Dive]Infra寄りのDevがお送りするRDS for Aurora徹底検証
[Deep Dive]Infra寄りのDevがお送りするRDS for Aurora徹底検証
 
初心から一週間で作ってみた Kinesis Client Library for Go
初心から一週間で作ってみた Kinesis Client Library for Go初心から一週間で作ってみた Kinesis Client Library for Go
初心から一週間で作ってみた Kinesis Client Library for Go
 
Googleの○○にありがとう
Googleの○○にありがとうGoogleの○○にありがとう
Googleの○○にありがとう
 

Recently uploaded

2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptxssuserbefd24
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptxyassun7010
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matchingharmonylab
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)NTT DATA Technology & Innovation
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルCRI Japan, Inc.
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。iPride Co., Ltd.
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance
 
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...atsushi061452
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance
 
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizesatsushi061452
 

Recently uploaded (14)

2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
 
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
 
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
 

Jaws20140117

  • 4. プロフィール てるい まさし 照井 将士 http://www.facebook.com/marcy.terui (株)アグレックス 札幌事業所 システム部 AWS Certified Solutions Architect 1987年 東京都大田区生まれ 1992年 札幌移住 2011年  (株)アグレックス入社 役職:下っ端・雑用係 好きなサービス Route53、CloudWatch、RDS(MySQL) Copyright © 2014 AGREX INC. 14年1月18日土曜日 3
  • 5. プロフィール てるい まさし 照井 将士 http://www.facebook.com/marcy.terui (株)アグレックス 札幌事業所 システム部 AWS Certified Solutions Architect 1987年 東京都大田区生まれ 1992年 札幌移住 2011年  (株)アグレックス入社 役職:下っ端・雑用係 好きなサービス Route53、CloudWatch、RDS(MySQL) Copyright © 2014 AGREX INC. 14年1月18日土曜日 3
  • 6. プロフィール てるい まさし 照井 将士 http://www.facebook.com/marcy.terui (株)アグレックス 札幌事業所 システム部 AWS Certified Solutions Architect 1987年 東京都大田区生まれ 1992年 札幌移住 2011年  (株)アグレックス入社 役職:下っ端・雑用係 好きなサービス Route53、CloudWatch、RDS(MySQL) Copyright © 2014 AGREX INC. 14年1月18日土曜日 3
  • 7. プロフィール てるい まさし 照井 将士 http://www.facebook.com/marcy.terui (株)アグレックス 札幌事業所 システム部 AWS Certified Solutions Architect 1987年 東京都大田区生まれ 1992年 札幌移住 2011年  (株)アグレックス入社 役職:下っ端・雑用係 好きなサービス AWSチームリーダーに クラスアップしました! ※注 現状1人チームだからリーダーなだけw Route53、CloudWatch、RDS(MySQL) Copyright © 2014 AGREX INC. 14年1月18日土曜日 3
  • 18. ミュージックスタート!古いって言わないでwww チャラチャッチャチャラッチャ∼♪                       ォ"               __,,,.. 、 `、                      チ,,     _,,..、"" ,,,ィェェォーン`''" 、 ヾ  ヽ、                     イ;;: :./~`''"    ̄ ̄ ¨ ¨`リ、"ヾ、  、 、  ヽ                     f;;::/            ミヾ  ヽ  、 、  .} .                    ∨ .::::...         ミ       、 、 ;'i .                     { ..:;::..         ミ゛       、 、', .}                    ,ァ'ー-、:{i:t,,..--'"`ヽ、`ヽ:::::`ヾ、      `  、', }                   '"''t--=ゞ、`ー三''" ̄`  `::::  |         、',. .|                     无エニ=/ ::(アエエ=-、_,.:::   |     y=、   .リ                     广;;''/  ::.`ー  ''"~   ::. |  チ''" ィ''ヾヽ  リ                     { .::/ .....::、     .......::::::: |  / , 、ヾ ノ /  ,'                     `、 ( ,zzュ,,リ:.   ....:::::::::  | / r' イ='./ /  ,'                      |,ィエェエta、 :::.  ..::::.    | .|::("'´゛./ ,/                     キ'"、__`ヾッ, ::       ~´;;;;`ーイ   ,'               ,,,..ィ==t、   `、¨`ー'"ア"::.. ..::::::    /;;;    :|  ,'              以zzt、;;;;`、  ヾ、,,,;:'"....;;;;;;..::::    /;;;;;     :| .,'              f三三~`,,`、}   |i |;;;ミ      ,,.イ;;;;;;;;;      :| ,'              〉==- 、三;/   {ヾt;;;ミ_,,,,,.ィツ;;;;;;;;;;;;;;;;       ツ_              /   `ヾナ   `ー====マ-''";;;;;;;;;;;;         ∨` i .           /    ./         リt;;;;;;;;; ::::         /  `t、            /     /.         / :i;;;;::....         /    / `、 .          /     /        ,. ィ"i  `、;;;::       ,.イ      /   ヽ、          /     /     ,. - '"   |   `、;:    ,. イ        /     `ー        /~\  ,... /,. - ' "      /-- .、  〉-r''"         /     ,. ィ''",,.. 、  `Y  |"          f:::::::::__/`ー-ナ--――-ァ   /,'   r'" ̄    `ヽ、!、 〉          {::::::ー''リ、;;;;チ`ー=ニ_::::::/  / ./   {,,.. =---''`ヽ、`}:: .{           ',::::::::::/~`、ヾ`ヽ,,::: /  / ,' 左 Copyright © 2014 AGREX INC. 14年1月18日土曜日 右 9
  • 19. ミュージックスタート!古いって言わないでwww チャラチャッチャチャラッチャ∼♪                       ォ"               __,,,.. 、 `、                      チ,,     _,,..、"" ,,,ィェェォーン`''" 、 ヾ  ヽ、                     イ;;: :./~`''"    ̄ ̄ ¨ ¨`リ、"ヾ、  、 、  ヽ                     f;;::/            ミヾ  ヽ  、 、  .} .                    ∨ .::::...         ミ       、 、 ;'i .                     { ..:;::..         ミ゛       、 、', .}                    ,ァ'ー-、:{i:t,,..--'"`ヽ、`ヽ:::::`ヾ、      `  、', }                   '"''t--=ゞ、`ー三''" ̄`  `::::  |         、',. .|                     无エニ=/ ::(アエエ=-、_,.:::   |     y=、   .リ                     广;;''/  ::.`ー  ''"~   ::. |  チ''" ィ''ヾヽ  リ                     { .::/ .....::、     .......::::::: |  / , 、ヾ ノ /  ,'                     `、 ( ,zzュ,,リ:.   ....:::::::::  | / r' イ='./ /  ,'                      |,ィエェエta、 :::.  ..::::.    | .|::("'´゛./ ,/                     キ'"、__`ヾッ, ::       ~´;;;;`ーイ   ,'               ,,,..ィ==t、   `、¨`ー'"ア"::.. ..::::::    /;;;    :|  ,'              以zzt、;;;;`、  ヾ、,,,;:'"....;;;;;;..::::    /;;;;;     :| .,'              f三三~`,,`、}   |i |;;;ミ      ,,.イ;;;;;;;;;      :| ,'              〉==- 、三;/   {ヾt;;;ミ_,,,,,.ィツ;;;;;;;;;;;;;;;;       ツ_              /   `ヾナ   `ー====マ-''";;;;;;;;;;;;         ∨` i .           /    ./         リt;;;;;;;;; ::::         /  `t、            /     /.         / :i;;;;::....         /    / `、 .          /     /        ,. ィ"i  `、;;;::       ,.イ      /   ヽ、          /     /     ,. - '"   |   `、;:    ,. イ        /     `ー        /~\  ,... /,. - ' "      /-- .、  〉-r''"         /     ,. ィ''",,.. 、  `Y  |"          f:::::::::__/`ー-ナ--――-ァ   /,'   r'" ̄    `ヽ、!、 〉          {::::::ー''リ、;;;;チ`ー=ニ_::::::/  / ./   {,,.. =---''`ヽ、`}:: .{           ',::::::::::/~`、ヾ`ヽ,,::: /  / ,' (((((【右から】c(・ェ・c`)三(´っ・ェ・)っ((((((【左へ】受け流す∼♪  左 Copyright © 2014 AGREX INC. 14年1月18日土曜日 右 9
  • 20. ミュージックスタート!古いって言わないでwww チャラチャッチャチャラッチャ∼♪                       ォ"               __,,,.. 、 `、                      チ,,     _,,..、"" ,,,ィェェォーン`''" 、 ヾ  ヽ、                     イ;;: :./~`''"    ̄ ̄ ¨ ¨`リ、"ヾ、  、 、  ヽ                     f;;::/            ミヾ  ヽ  、 、  .} .                    ∨ .::::...         ミ       、 、 ;'i .                     { ..:;::..         ミ゛       、 、', .}                    ,ァ'ー-、:{i:t,,..--'"`ヽ、`ヽ:::::`ヾ、      `  、', }                   '"''t--=ゞ、`ー三''" ̄`  `::::  |         、',. .|                     无エニ=/ ::(アエエ=-、_,.:::   |     y=、   .リ                     广;;''/  ::.`ー  ''"~   ::. |  チ''" ィ''ヾヽ  リ                     { .::/ .....::、     .......::::::: |  / , 、ヾ ノ /  ,'                     `、 ( ,zzュ,,リ:.   ....:::::::::  | / r' イ='./ /  ,'                      |,ィエェエta、 :::.  ..::::.    | .|::("'´゛./ ,/                     キ'"、__`ヾッ, ::       ~´;;;;`ーイ   ,'               ,,,..ィ==t、   `、¨`ー'"ア"::.. ..::::::    /;;;    :|  ,'              以zzt、;;;;`、  ヾ、,,,;:'"....;;;;;;..::::    /;;;;;     :| .,'              f三三~`,,`、}   |i |;;;ミ      ,,.イ;;;;;;;;;      :| ,'              〉==- 、三;/   {ヾt;;;ミ_,,,,,.ィツ;;;;;;;;;;;;;;;;       ツ_              /   `ヾナ   `ー====マ-''";;;;;;;;;;;;         ∨` i .           /    ./         リt;;;;;;;;; ::::         /  `t、            /     /.         / :i;;;;::....         /    / `、 .          /     /        ,. ィ"i  `、;;;::       ,.イ      /   ヽ、          /     /     ,. - '"   |   `、;:    ,. イ        /     `ー        /~\  ,... /,. - ' "      /-- .、  〉-r''"         /     ,. ィ''",,.. 、  `Y  |"          f:::::::::__/`ー-ナ--――-ァ   /,'   r'" ̄    `ヽ、!、 〉          {::::::ー''リ、;;;;チ`ー=ニ_::::::/  / ./   {,,.. =---''`ヽ、`}:: .{           ',::::::::::/~`、ヾ`ヽ,,::: /  / ,' 左 Copyright © 2014 AGREX INC. 14年1月18日土曜日 右 9
  • 22. こんな感じです。 require dirname(__DIR__) . '/init.php'; use AwsCloudWatchCloudWatchClient; use DashBoardUtilPropaties; $data = array(); foreach (new DirectoryIterator(PROPATIES_DIR) as $fileInfo) { if($fileInfo->isDot()) continue; $prop = new Propaties(PROPATIES_DIR . "/" . $fileInfo->getFilename()); $cloudwatch = CloudWatchClient::factory(array( 'key' => $prop->get(PROPATIES_ACCESS_KEY), 'secret' => $prop->get(PROPATIES_SECRET_KEY), 'region' => AWS_REGION )); $model = $cloudwatch->describeAlarms(); $data[$prop->get(PROPATIES_SYSTEM_NAME)] = $model->get("MetricAlarms"); } $rows = ""; foreach ($data as $systemName => $alarms) { foreach ($alarms as $alarm) { $rows .= "['{$systemName}', '{$alarm['AlarmName']}', '{$alarm['AlarmDescription']}', '{$alarm['MetricName']}', '{$alarm['StateValue']}'],n"; } } $date = date("Y-m-d H:i:s"); $content = " <html> <head> <script type='text/javascript' src='https://www.google.com/jsapi'></script> <script type='text/javascript'> google.load('visualization', '1', {packages:['table']}); google.setOnLoadCallback(drawTable); function drawTable() { var data = new google.visualization.DataTable(); data.addColumn('string', 'SystemName'); data.addColumn('string', 'AlarmName'); data.addColumn('string', 'AlarmDescription'); data.addColumn('string', 'MetricName'); data.addColumn('string', 'StateValue'); data.addRows([ {$rows} ]); var table = new google.visualization.Table(document.getElementById('table_div')); var formatter = new google.visualization.ColorFormat(); formatter.addRange('ALARM', 'INSUFFICIENT_DATA', 'white', 'red'); formatter.addRange('INSUFFICIENT_DATA', 'OK', 'white', 'orange'); formatter.addRange('OK', null, 'white', '#33ff33'); formatter.format(data, 4); table.draw(data, {allowHtml: true, showRowNumber: true}); } </script> </head> <body> <h1>{$date}時点</h1> <div id='table_div'></div> </body> </html> "; echo $content; Copyright © 2014 AGREX INC. 14年1月18日土曜日 11
  • 23. こんな感じです。 require dirname(__DIR__) . '/init.php'; use AwsCloudWatchCloudWatchClient; use DashBoardUtilPropaties; $data = array(); foreach (new DirectoryIterator(PROPATIES_DIR) as $fileInfo) { if($fileInfo->isDot()) continue; $prop = new Propaties(PROPATIES_DIR . "/" . $fileInfo->getFilename()); $cloudwatch = CloudWatchClient::factory(array( 'key' => $prop->get(PROPATIES_ACCESS_KEY), 'secret' => $prop->get(PROPATIES_SECRET_KEY), 'region' => AWS_REGION )); $model = $cloudwatch->describeAlarms(); $data[$prop->get(PROPATIES_SYSTEM_NAME)] = $model->get("MetricAlarms"); } ①AWS CloudWatch APIからデータもらう  ×アカウント数 $rows = ""; foreach ($data as $systemName => $alarms) { foreach ($alarms as $alarm) { $rows .= "['{$systemName}', '{$alarm['AlarmName']}', '{$alarm['AlarmDescription']}', '{$alarm['MetricName']}', '{$alarm['StateValue']}'],n"; } } $date = date("Y-m-d H:i:s"); $content = " <html> <head> <script type='text/javascript' src='https://www.google.com/jsapi'></script> <script type='text/javascript'> google.load('visualization', '1', {packages:['table']}); google.setOnLoadCallback(drawTable); function drawTable() { var data = new google.visualization.DataTable(); data.addColumn('string', 'SystemName'); data.addColumn('string', 'AlarmName'); data.addColumn('string', 'AlarmDescription'); data.addColumn('string', 'MetricName'); data.addColumn('string', 'StateValue'); data.addRows([ {$rows} ]); var table = new google.visualization.Table(document.getElementById('table_div')); var formatter = new google.visualization.ColorFormat(); formatter.addRange('ALARM', 'INSUFFICIENT_DATA', 'white', 'red'); formatter.addRange('INSUFFICIENT_DATA', 'OK', 'white', 'orange'); formatter.addRange('OK', null, 'white', '#33ff33'); formatter.format(data, 4); table.draw(data, {allowHtml: true, showRowNumber: true}); } </script> </head> <body> <h1>{$date}時点</h1> <div id='table_div'></div> </body> </html> "; echo $content; Copyright © 2014 AGREX INC. 14年1月18日土曜日 11
  • 24. こんな感じです。 require dirname(__DIR__) . '/init.php'; use AwsCloudWatchCloudWatchClient; use DashBoardUtilPropaties; $data = array(); foreach (new DirectoryIterator(PROPATIES_DIR) as $fileInfo) { if($fileInfo->isDot()) continue; $prop = new Propaties(PROPATIES_DIR . "/" . $fileInfo->getFilename()); $cloudwatch = CloudWatchClient::factory(array( 'key' => $prop->get(PROPATIES_ACCESS_KEY), 'secret' => $prop->get(PROPATIES_SECRET_KEY), 'region' => AWS_REGION )); $model = $cloudwatch->describeAlarms(); $data[$prop->get(PROPATIES_SYSTEM_NAME)] = $model->get("MetricAlarms"); } ①AWS CloudWatch APIからデータもらう  ×アカウント数 $rows = ""; foreach ($data as $systemName => $alarms) { foreach ($alarms as $alarm) { $rows .= "['{$systemName}', '{$alarm['AlarmName']}', '{$alarm['AlarmDescription']}', '{$alarm['MetricName']}', '{$alarm['StateValue']}'],n"; } } $date = date("Y-m-d H:i:s"); $content = " <html> <head> <script type='text/javascript' src='https://www.google.com/jsapi'></script> <script type='text/javascript'> google.load('visualization', '1', {packages:['table']}); google.setOnLoadCallback(drawTable); function drawTable() { var data = new google.visualization.DataTable(); data.addColumn('string', 'SystemName'); data.addColumn('string', 'AlarmName'); data.addColumn('string', 'AlarmDescription'); data.addColumn('string', 'MetricName'); data.addColumn('string', 'StateValue'); data.addRows([ {$rows} ]); var table = new google.visualization.Table(document.getElementById('table_div')); var formatter = new google.visualization.ColorFormat(); formatter.addRange('ALARM', 'INSUFFICIENT_DATA', 'white', 'red'); formatter.addRange('INSUFFICIENT_DATA', 'OK', 'white', 'orange'); formatter.addRange('OK', null, 'white', '#33ff33'); formatter.format(data, 4); table.draw(data, {allowHtml: true, showRowNumber: true}); } </script> </head> <body> <h1>{$date}時点</h1> <div id='table_div'></div> </body> </html> "; echo $content; Copyright © 2014 AGREX INC. 14年1月18日土曜日 11 ②受け取った内容を軽く整形する
  • 25. こんな感じです。 require dirname(__DIR__) . '/init.php'; use AwsCloudWatchCloudWatchClient; use DashBoardUtilPropaties; $data = array(); foreach (new DirectoryIterator(PROPATIES_DIR) as $fileInfo) { if($fileInfo->isDot()) continue; $prop = new Propaties(PROPATIES_DIR . "/" . $fileInfo->getFilename()); $cloudwatch = CloudWatchClient::factory(array( 'key' => $prop->get(PROPATIES_ACCESS_KEY), 'secret' => $prop->get(PROPATIES_SECRET_KEY), 'region' => AWS_REGION )); $model = $cloudwatch->describeAlarms(); $data[$prop->get(PROPATIES_SYSTEM_NAME)] = $model->get("MetricAlarms"); } ①AWS CloudWatch APIからデータもらう  ×アカウント数 $rows = ""; foreach ($data as $systemName => $alarms) { foreach ($alarms as $alarm) { $rows .= "['{$systemName}', '{$alarm['AlarmName']}', '{$alarm['AlarmDescription']}', '{$alarm['MetricName']}', '{$alarm['StateValue']}'],n"; } } $date = date("Y-m-d H:i:s"); $content = " <html> <head> <script type='text/javascript' src='https://www.google.com/jsapi'></script> <script type='text/javascript'> google.load('visualization', '1', {packages:['table']}); google.setOnLoadCallback(drawTable); function drawTable() { var data = new google.visualization.DataTable(); data.addColumn('string', 'SystemName'); data.addColumn('string', 'AlarmName'); data.addColumn('string', 'AlarmDescription'); data.addColumn('string', 'MetricName'); data.addColumn('string', 'StateValue'); data.addRows([ {$rows} ]); var table = new google.visualization.Table(document.getElementById('table_div')); var formatter = new google.visualization.ColorFormat(); formatter.addRange('ALARM', 'INSUFFICIENT_DATA', 'white', 'red'); formatter.addRange('INSUFFICIENT_DATA', 'OK', 'white', 'orange'); formatter.addRange('OK', null, 'white', '#33ff33'); formatter.format(data, 4); table.draw(data, {allowHtml: true, showRowNumber: true}); } </script> </head> <body> <h1>{$date}時点</h1> ③Google Charts APIに投げる <div id='table_div'></div> </body> </html> "; echo $content; Copyright © 2014 AGREX INC. 14年1月18日土曜日 ②受け取った内容を軽く整形する 11
  • 26. つまり Cloudwatch API (右) から Google Charts API (左) に 渡す(受け流す)だけ Copyright © 2014 AGREX INC. 14年1月18日土曜日 12
  • 29. 参考とまとめ Copyright © 2014 AGREX INC. 14年1月18日土曜日 14
  • 30. 参考とまとめ AWS SDK for PHP(他にもJava、.NET、Ruby、Python、Node.jsとかあります) http://docs.aws.amazon.com/aws-sdk-php/guide/latest/index.html Copyright © 2014 AGREX INC. 14年1月18日土曜日 14
  • 31. 参考とまとめ AWS SDK for PHP(他にもJava、.NET、Ruby、Python、Node.jsとかあります) http://docs.aws.amazon.com/aws-sdk-php/guide/latest/index.html Google Charts https://google-developers.appspot.com/chart/ Copyright © 2014 AGREX INC. 14年1月18日土曜日 14
  • 32. 参考とまとめ AWS SDK for PHP(他にもJava、.NET、Ruby、Python、Node.jsとかあります) http://docs.aws.amazon.com/aws-sdk-php/guide/latest/index.html Google Charts https://google-developers.appspot.com/chart/ ムーディ○山の現在 http://blog.livedoor.jp/aokichanyon444/archives/54385877.html Copyright © 2014 AGREX INC. 14年1月18日土曜日 14
  • 33. 参考とまとめ AWS SDK for PHP(他にもJava、.NET、Ruby、Python、Node.jsとかあります) http://docs.aws.amazon.com/aws-sdk-php/guide/latest/index.html Google Charts https://google-developers.appspot.com/chart/ ムーディ○山の現在 http://blog.livedoor.jp/aokichanyon444/archives/54385877.html 思わず歌っちゃうほど簡単に、 ちょっと良いものができました。 他にも、異なるAPI同士を 組み合わせることで、 手間無く良いものができたりする例は一杯ありそう。 Copyright © 2014 AGREX INC. 14年1月18日土曜日 14