ASW SimpleDBを使ってみる
Cocoa勉強会#45
July 9, 2011
Masayuki Nii

11年7月9日土曜日

1
Agenda

SimpleDBの要点
APIのポイント
iOS対応ネイティブアプリケーションの作成
シェルスクリプトの作成

11年7月9日土曜日

2
Amazon Web Services

11年7月9日土曜日

3
AWS SimpleDB
いろんなサービスがある中でちょっとマイナーか
オンラインストレージ
スプレッドシートのようなデータベース

•
•
•

スキーマ定義不要
インデックス付けなどを自動化
SELECT文でのクエリー

完全従量制

•
...
SimpleDBの値段の一部

11年7月9日土曜日

5
SimpleDBの概念

1つのテーブルは「ドメイン」

•

複数のドメインを作ることができるが、ドメイン間での連携はクラ
ウド側からはできない

書き込み時に指定した「属性」が作られ「値」を持つ

•
•
•
•

11年7月9日土曜日

...
情報源?書籍があるが…

もちろん、AWSにはマニュア
ルもあるが…
書籍も翻訳されている

•
•

11年7月9日土曜日

しかしながら、APIの生のたたき
方は書いていない
概念とフレームワークの使い方が
中心の書籍

7
API
いわゆるREST方式

•

作る/更新する、削除する、読み出す∼が主な仕組み

独特な認証方法

•
•

秘密 でハッシュを作り、それをリクエストに含める
従って、ハンドシェークはない

APIの詳細は今ひとつ

•
•

マニュア...
リクエスト

URLのアドレスは指定されたものを使う

•

処理は、?より後にパラメータとして指定する

認証のためのハッシュを除いたパラメータを作成

•
•

キーがアルファベット順になっていないといけない
field1、field10、fie...
リクエスト例
https://sdb.ap-northeast-1.amazonaws.com/?
AWSAccessKeyId=AKIAJZ6KBTPPRMGJA6VA&
Action=Select&
SelectExpression=sel...
リクエストの認証データの付加
GET[return]
sdb.ap-northeast-1.amazonaws.com[return]
AWSAccessKeyId=AKIAJZ6KBTPPRMGJA6VA&
Action=Select&Sel...
アクセスキー、秘密

11年7月9日土曜日

12
属性書き込みのリクエスト
https://sdb.ap-northeast-1.amazonaws.com/?
AWSAccessKeyId=XXXXXXXXXXXXXXXXXXXX&Action=PutAttributes&
Attribut...
[作成物] Simple DBを使った住所録

初期データを入れるためのシェルスクリプト

•

強引だが、どうやらできた模様

iOSネイティブアプリケーション

•
•
•
•

11年7月9日土曜日

あえて、AWSが提供するフレームワー...
シェルスクリプト
timestamp=`date -u +%Y-%m-%dT%H%%3A%M%%3A%SZ`
params="AWSAccessKeyId=${accessKeyId}
&Action=CreateDomain&DomainNa...
まとめ

SimpleDBは意外に手軽に使える
フレームワークもあるが、自分で作れる範囲

11年7月9日土曜日

16
Upcoming SlideShare
Loading in …5
×

Cocoa勉強会#45-AWS SimpleDBを使ってみる

625 views

Published on

Cocoa勉強会#45
2011/7/9
AWS SimpleDBを使ってみる
新居雅行

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
625
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
3
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Cocoa勉強会#45-AWS SimpleDBを使ってみる

  1. 1. ASW SimpleDBを使ってみる Cocoa勉強会#45 July 9, 2011 Masayuki Nii 11年7月9日土曜日 1
  2. 2. Agenda SimpleDBの要点 APIのポイント iOS対応ネイティブアプリケーションの作成 シェルスクリプトの作成 11年7月9日土曜日 2
  3. 3. Amazon Web Services 11年7月9日土曜日 3
  4. 4. AWS SimpleDB いろんなサービスがある中でちょっとマイナーか オンラインストレージ スプレッドシートのようなデータベース • • • スキーマ定義不要 インデックス付けなどを自動化 SELECT文でのクエリー 完全従量制 • • • 11年7月9日土曜日 申し込み時にクレジットカードを記録する 転送量やストレージ量で課金される さんざん試してみたけど、請求は0円だった 4
  5. 5. SimpleDBの値段の一部 11年7月9日土曜日 5
  6. 6. SimpleDBの概念 1つのテーブルは「ドメイン」 • 複数のドメインを作ることができるが、ドメイン間での連携はクラ ウド側からはできない 書き込み時に指定した「属性」が作られ「値」を持つ • • • • 11年7月9日土曜日 レコードに相当するのは「アイテム」というもの ItemNameというキーフィールドが作られる。そこに値を明示的に 一意に入れていく必要がある 属性と値の設定を書き込むことで、アイテムにその属性の値が記録 される 検索時には属性は「フィールド(カラム)」としての役割を持つ 6
  7. 7. 情報源?書籍があるが… もちろん、AWSにはマニュア ルもあるが… 書籍も翻訳されている • • 11年7月9日土曜日 しかしながら、APIの生のたたき 方は書いていない 概念とフレームワークの使い方が 中心の書籍 7
  8. 8. API いわゆるREST方式 • 作る/更新する、削除する、読み出す∼が主な仕組み 独特な認証方法 • • 秘密 でハッシュを作り、それをリクエストに含める 従って、ハンドシェークはない APIの詳細は今ひとつ • • マニュアルの情報は十分ではない 既存のフレームワークを解析する方が早いかも 言語ごとにフレークワークを用意 • 11年7月9日土曜日 iOS対応のものもあり、これを使うのがもちろん単純 8
  9. 9. リクエスト URLのアドレスは指定されたものを使う • 処理は、?より後にパラメータとして指定する 認証のためのハッシュを除いたパラメータを作成 • • キーがアルファベット順になっていないといけない field1、field10、field11、field2みたいになっていないといけない base64にしたりなんたらとややこしい レスポンスはエラーも正しい場合もどちらもXML • 11年7月9日土曜日 普通にパースすればいいでしょう 9
  10. 10. リクエスト例 https://sdb.ap-northeast-1.amazonaws.com/? AWSAccessKeyId=AKIAJZ6KBTPPRMGJA6VA& Action=Select& SelectExpression=select%20familyname%2Cgivenname %2Cfamilyname_yomi%2Cgivenname_yomi%2Ctelephone %2Ccellphone%2Cemail%2Cbirthday%2Czip%2Cpref%2Ccity %2Caddress%2Cblood%20from%20CloudAddressBook& SignatureMethod=HmacSHA256& SignatureVersion=2& Timestamp=2011-07-08T16%3A59%3A51Z& Version=2009-04-15& Signature=L%2FTow6%2FUt %2BiUBAdBboHt6RGYiOlzLUkDksyuqDzJH8A%3D 11年7月9日土曜日 10
  11. 11. リクエストの認証データの付加 GET[return] sdb.ap-northeast-1.amazonaws.com[return] AWSAccessKeyId=AKIAJZ6KBTPPRMGJA6VA& Action=Select&SelectExpression=select%20familyname %2Cgivenname%2Cfamilyname_yomi%2Cgivenname_yomi %2Ctelephone%2Ccellphone%2Cemail%2Cbirthday%2Czip %2Cpref%2Ccity%2Caddress%2Cblood%20from %20CloudAddressBook&SignatureMethod=HmacSHA256& SignatureVersion=2&Timestamp=2011-07-08T16%3A59%3 A51Z&Version=2009-04-15[return] 上記のデータに対して、秘密キーを指定したハッシュを 作成して、最後に追加する 11年7月9日土曜日 11
  12. 12. アクセスキー、秘密 11年7月9日土曜日 12
  13. 13. 属性書き込みのリクエスト https://sdb.ap-northeast-1.amazonaws.com/? AWSAccessKeyId=XXXXXXXXXXXXXXXXXXXX&Action=PutAttributes& Attribute.1.Name=familyname&Attribute.1.Value=%E6%9D%BE %E5%B1%85%E4%B9%85&Attribute.10.Name=pref&Attribute.10.Value= %E9%95%B7%E9%87%8E%E7%9C%8C&Attribute.11.Name=city&Attribute.11.Value= %E9%95%B7%E9%87%8E%E5%B8%82&Attribute.12.Name=address&Attribute. 12.Value=%E4%BF%A1%E5%B7%9E%E6%96%B0%E7%94%BA%E5%B7%A6%E5%8F %B399-99-13&Attribute.13.Name=blood&Attribute.13.Value=B&Attribute. 2.Name=givenname&Attribute.2.Value=%E6%97%A9%E7%B4%80&Attribute. 3.Name=familyname_yomi&Attribute.3.Value=%E3%81%BE %E3%81%A4%E3%81%84%E3%81%8F&Attribute.4.Name=givenname_yomi&Attribute. 4.Value=%E3%81%95%E3%81%8D&Attribute.5.Name=telephone&Attribute. 5.Value=031-9876-5432&Attribute.6.Name=cellphone&Attribute. 6.Value=090-0000-0000&Attribute.7.Name=email&Attribute.7.Value=dummy_addr %40example.com&Attribute.8.Name=birthday&Attribute.8.Value=31316&Attribute. 9.Name=zip&Attribute. 9.Value=381-2424&DomainName=CloudAddressBook&ItemName=1004&SignatureMet hod=HmacSHA256&SignatureVersion=2&Timestamp=2011-07-08T17%3A25%3A21Z& Version=2009-04-15&Signature=0qrWuMKoIVzWBIWaG%2Bpuhz %2B97kIAf0UXmZHCuq9Vqow%3D 11年7月9日土曜日 13
  14. 14. [作成物] Simple DBを使った住所録 初期データを入れるためのシェルスクリプト • 強引だが、どうやらできた模様 iOSネイティブアプリケーション • • • • 11年7月9日土曜日 あえて、AWSが提供するフレームワークを使わないで作成 通信部分はNSURLConnectionを使う手法 リクエストのパラメータの作り込みが難関 とは言え、意外に簡単 14
  15. 15. シェルスクリプト timestamp=`date -u +%Y-%m-%dT%H%%3A%M%%3A%SZ` params="AWSAccessKeyId=${accessKeyId} &Action=CreateDomain&DomainName=${domain} &SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=$ {timestamp}&Version=2009-04-15" sign=`echo -n -e "GETn${endpoint}n/n${params}" | openssl dgst sha256 -binary -hmac ${secretAccessKey} | openssl base64 | sed -e 's/+/ %2B/g' | sed -e 's/=/%3D/g' ` curl "https://${endpoint}/?${params}&Signature=${sign}" ポイントは、opensslコマンドの使い方 • • 11年7月9日土曜日 ハッシュの求め方 base64の求め方 15
  16. 16. まとめ SimpleDBは意外に手軽に使える フレームワークもあるが、自分で作れる範囲 11年7月9日土曜日 16

×