Cocoa勉強会#45-AWS SimpleDBを使ってみる
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

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

  • 508 views
Uploaded on

Cocoa勉強会#45 ...

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

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
508
On Slideshare
508
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
0
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. ASW SimpleDBを使ってみる Cocoa勉強会#45 July 9, 2011 Masayuki Nii 11年7月9日土曜日 1
  • 2. Agenda SimpleDBの要点 APIのポイント iOS対応ネイティブアプリケーションの作成 シェルスクリプトの作成 11年7月9日土曜日 2
  • 3. Amazon Web Services 11年7月9日土曜日 3
  • 4. AWS SimpleDB いろんなサービスがある中でちょっとマイナーか オンラインストレージ スプレッドシートのようなデータベース • • • スキーマ定義不要 インデックス付けなどを自動化 SELECT文でのクエリー 完全従量制 • • • 11年7月9日土曜日 申し込み時にクレジットカードを記録する 転送量やストレージ量で課金される さんざん試してみたけど、請求は0円だった 4
  • 5. SimpleDBの値段の一部 11年7月9日土曜日 5
  • 6. SimpleDBの概念 1つのテーブルは「ドメイン」 • 複数のドメインを作ることができるが、ドメイン間での連携はクラ ウド側からはできない 書き込み時に指定した「属性」が作られ「値」を持つ • • • • 11年7月9日土曜日 レコードに相当するのは「アイテム」というもの ItemNameというキーフィールドが作られる。そこに値を明示的に 一意に入れていく必要がある 属性と値の設定を書き込むことで、アイテムにその属性の値が記録 される 検索時には属性は「フィールド(カラム)」としての役割を持つ 6
  • 7. 情報源?書籍があるが… もちろん、AWSにはマニュア ルもあるが… 書籍も翻訳されている • • 11年7月9日土曜日 しかしながら、APIの生のたたき 方は書いていない 概念とフレームワークの使い方が 中心の書籍 7
  • 8. API いわゆるREST方式 • 作る/更新する、削除する、読み出す∼が主な仕組み 独特な認証方法 • • 秘密 でハッシュを作り、それをリクエストに含める 従って、ハンドシェークはない APIの詳細は今ひとつ • • マニュアルの情報は十分ではない 既存のフレームワークを解析する方が早いかも 言語ごとにフレークワークを用意 • 11年7月9日土曜日 iOS対応のものもあり、これを使うのがもちろん単純 8
  • 9. リクエスト URLのアドレスは指定されたものを使う • 処理は、?より後にパラメータとして指定する 認証のためのハッシュを除いたパラメータを作成 • • キーがアルファベット順になっていないといけない field1、field10、field11、field2みたいになっていないといけない base64にしたりなんたらとややこしい レスポンスはエラーも正しい場合もどちらもXML • 11年7月9日土曜日 普通にパースすればいいでしょう 9
  • 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. リクエストの認証データの付加 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. アクセスキー、秘密 11年7月9日土曜日 12
  • 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. [作成物] Simple DBを使った住所録 初期データを入れるためのシェルスクリプト • 強引だが、どうやらできた模様 iOSネイティブアプリケーション • • • • 11年7月9日土曜日 あえて、AWSが提供するフレームワークを使わないで作成 通信部分はNSURLConnectionを使う手法 リクエストのパラメータの作り込みが難関 とは言え、意外に簡単 14
  • 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. まとめ SimpleDBは意外に手軽に使える フレームワークもあるが、自分で作れる範囲 11年7月9日土曜日 16