Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
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を使ってみる

681 views

Published on

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

Published in: Technology
  • Be the first to comment

  • Be the first to like this

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

×