SlideShare a Scribd company logo
1 of 85
Download to read offline
Copylight © Classmethod, Inc.
AWS as MBaaS!!!
∼APIキーとかの話∼
北海道iOS勉強会!
クラスメソッド株式会社!
平井祐樹
Copylight © Classmethod, Inc.
自己紹介
• 平井祐樹、28歳、B型!
• 2012年2月入社(CM歴2年4ヶ月ぐらい)!
• iOSアプリ開発歴:2年ぐらい!
• Webアプリ開発(PHP、js)
2
Copylight © Classmethod, Inc.
アジェンダ
• MBaaSとAWS!
• AWSをMBaaSとして実際に使ってみた話!
• まとめ
3
Copylight © Classmethod, Inc.
MBaaSとAWS
4
Copylight © Classmethod, Inc.
MBaaSって?
• Mobile Backend as a Serviceの略!
• エムバース
5
Copylight © Classmethod, Inc.
MBaaSって?
6
MBaaSとは、スマートフォンアプリの開発に
必要な汎用的機能をAPI、SDKで提供しサー
バー側のコードを書くことなく、サーバー連
携するスマートフォンアプリを効率よく開発
できるようにするクラウドサービスです。!
(参考:NIFTY Cloud)
Copylight © Classmethod, Inc.
あっち側
MBaaSって?
7
モバイル
・データ集計/取得!
・ユーザー管理!
・通知
ストレージ
サーバー DB
Copylight © Classmethod, Inc.
MBaaSって?
あっち側のことを!
よろしくやってくれるサービス
8
Copylight © Classmethod, Inc.
MBaaSの選択肢
9
Kii cloud NIFTY CloudParse.com
Copylight © Classmethod, Inc.
MBaaSに求めるもの
• 認証/アクセス制御!
• 共有データストア!
• プッシュ通知!
• などなど…
10
Copylight © Classmethod, Inc.
???
11
Copylight © Classmethod, Inc.
AWSが使えるんじゃね??
12
Copylight © Classmethod, Inc.
AWSが使えるんじゃね??
• 認証/アクセス制御
13
Copylight © Classmethod, Inc.
AWSが使えるんじゃね??
• 共有データストア
14
Copylight © Classmethod, Inc.
AWSが使えるんじゃね??
• プッシュ通知
15
Copylight © Classmethod, Inc.
AWS SDK
• Java/Ruby/PHP/.Netなど様々なプラット
フォームごとにSDKが提供されている!
• 当然、iOS(Objective-C)用のSDKもある!
• AWS SDKを使用するとAWSのサービスを
直接利用できる
16
Copylight © Classmethod, Inc.
MBaaSの選択肢
17
Kii cloud NIFTY CloudParse.com
Copylight © Classmethod, Inc.
AWS を MBaaSとして!
どこまで使えるのか?
18
Copylight © Classmethod, Inc.
絶賛検証中!
19
Copylight © Classmethod, Inc.
AWSをMBaaSとして!
実際に使ってみた話
20
Copylight © Classmethod, Inc.
何からやってみよう?
21
Copylight © Classmethod, Inc.
とりあえず!
iOSアプリからAWS SDKを使って!
S3にアクセスしてみる
22
Copylight © Classmethod, Inc.
Amazon S3
• AWSの一つとして提供されているオンライ
ンストレージサービス!
• ファイル(S3ではオブジェクトと呼ばれ
る)はバケットと呼ばれる入れ物にいれて
管理する
23
Copylight © Classmethod, Inc.
S3に任意のバケットに保存されている!
ファイル一覧を表示する!
iOSアプリを作って見よう。
24
Copylight © Classmethod, Inc.
どうやってやるの?!
何が必要なの?
25
Copylight © Classmethod, Inc.
AWS SDKのサンプルを見ている
26
Copylight © Classmethod, Inc.
AWS SDKのサンプル
IAMユーザーのアクセスキーIDとシーク
レットキーを用いて、S3にアクセスする。
27
Copylight © Classmethod, Inc.
ふぁ?IAM ユーザーって??
28
Copylight © Classmethod, Inc.
IAM
• Identity and Access Management!
• AWSの権限管理のサービス!
• IAM ユーザー、IAM グループ、IAM ロール
とかがある
29
Copylight © Classmethod, Inc.
IAM ユーザー
• 一つのAWSアカウントの下に複数のユーザを作
成することができる!
• そのユーザに特定のリソース、サービス、API
に関する権限を与えることができる!
• そのユーザーを使ってAWS管理画面にログイン
したりAWSのリソースにアクセスできたりする
30
Copylight © Classmethod, Inc.
必要なもの
• AWS SDK for iOS(v1.7.1)!
• IAM ユーザーのアクセスキーIDとシーク
レットアクセスキー!
• S3のバケットとその中のファイル!
• Xcode
31
Copylight © Classmethod, Inc.
S3に任意のバケットに保存されている!
ファイル一覧を表示する!
iOSアプリを作って見よう。
32
Copylight © Classmethod, Inc.
やること
1.IAMユーザーのアクセスキーIDとシーク
レットアクセスキーを取得する!
2.S3にバケットとファイルを用意する!
3.iOSアプリを実装する
33
Copylight © Classmethod, Inc.
IAMユーザーのアクセスキー ID と
シークレットアクセスキーを取得する
34
Copylight © Classmethod, Inc.
IAMユーザーのアクセスキー ID と
シークレットアクセスキーを取得する
35
Copylight © Classmethod, Inc.
IAMユーザーのアクセスキー ID と
シークレットアクセスキーを取得する
36
Copylight © Classmethod, Inc.
1. IAMユーザーのアクセスキー ID とシーク
レットアクセスキーを取得する
37
Copylight © Classmethod, Inc.
S3にバケットとファイルを用意する
38
Copylight © Classmethod, Inc.
iOSアプリを実装する
39
Copylight © Classmethod, Inc.
iOSアプリを実装する
40
// アクセスキーIDとシークレットアクセスキーを指定してS3クライアントインスタンスを生成する
AmazonS3Client *s3Client = [[AmazonS3Client alloc]
initWithAccessKey:@“[アクセスキーID]”
withSecretKey:@“[シークレットアクセスキー]”];
// 指定しバケットのファイル一覧を取得する
S3ListObjectsRequest *request = [[S3ListObjectsRequest alloc]
initWithName:@"ios-s3-sample"];
S3ListObjectsResponse *response = [s3Client listObjects:request];
if (response.error) {
NSLog(@"error: %@", response.error);
} else {
NSArray *objects = response.listObjectsResult.objectSummaries;
for (NSString *objectSummary in objects) {
NSLog(@"%@", objectSummary);
}
}
Copylight © Classmethod, Inc.
実行!
41
Copylight © Classmethod, Inc.
できた!
42
Copylight © Classmethod, Inc.
と思いきや
43
Copylight © Classmethod, Inc.
AWS SDKのREADMEを見てみると
44
Copylight © Classmethod, Inc.
iOSアプリを実装する
// アクセスキーIDとシークレットアクセスキーを指定してS3クライアントインスタンスを生成する
AmazonS3Client *s3Client = [[AmazonS3Client alloc]
initWithAccessKey:@“[アクセスキーID]”
withSecretKey:@“[シークレットアクセスキー]”];
// 指定しバケットのファイル一覧を取得する
S3ListObjectsRequest *request = [[S3ListObjectsRequest alloc]
initWithName:@"ios-s3-sample"];
S3ListObjectsResponse *response = [s3Client listObjects:request];
if (response.error) {
NSLog(@"error: %@", response.error);
} else {
NSArray *objects = response.listObjectsResult.objectSummaries;
for (NSString *objectSummary in) {
NSLog(@"%@", objectSummary);
}
}
45
<- NG!!
Copylight © Classmethod, Inc.
サンプルではIAMユーザーのアクセスキー
IDとシークレットアクセスキーを使ってる
けど、実際にはやらないでね∼
46
Copylight © Classmethod, Inc.
ふぁ?なんで??
47
Copylight © Classmethod, Inc.
で、そこについて調べてみました
48
Copylight © Classmethod, Inc.
S3やDynamoDBにアクセスしたい
49
APIキーが必要!!
Copylight © Classmethod, Inc.
APIキーとは?
• 永続キー (long lived credentials)!
• 一時キー (short lived session credentials)!
参考:IAMによるAWS権限管理運用ベストプラクティス (2) |
Developers.IO
50
Copylight © Classmethod, Inc.
APIキーとは?
IAMユーザーのアクセスキーIDとシーク
レットアクセスキーは永続キーの1つ
51
Copylight © Classmethod, Inc.
永続キーをモバイルアプリに埋め込むのは
非常に危険!
52
Copylight © Classmethod, Inc.
WEBアプリの場合
53
サーバー
Copylight © Classmethod, Inc.
モバイルアプリの場合
キーが抜かれる 想定していない経路から!
アクセスされてしまう!
Copylight © Classmethod, Inc.
永続キーを悪用されると・・・
• 想定していない経路(別のアプリなど)か
らAWSリソースにアクセスされてしまう!
• 場合によっては元のサービスを妨害されて
しまう
55
Copylight © Classmethod, Inc.
そもそも永続キーを使うと・・・
• 永続キーを共通で使用すると、認証やらア
クセス制限ができない
56
Copylight © Classmethod, Inc.
永続キーではなく!
一時キーを使おう!
57
Copylight © Classmethod, Inc.
で、どうやって一時キーを使うの?
58
Copylight © Classmethod, Inc.
一時キー使う
• Security Token Service (STS)!
• IAMに従属するサブプロダクト的な位置
付け!
• IAMロールに設定された権限を持った一
時キーを入手することができる!
参考:IAMロール徹底理解 ∼ AssumeRoleの正体 | Developers.IO
59
Copylight © Classmethod, Inc.
IAMロール
• AWSの各種サービスにアクセスする際の権
限を設定できる仕組み
60
Copylight © Classmethod, Inc.
STSを使えば、IAMロールの持つ権限
を一時的に付与してもらうことが可能
61
Copylight © Classmethod, Inc.
一時キーを取得する手段
• 自前のサーバーを用意して一時キーを発行
してもらう!
• Facebook/Google/Amazon.comアカウ
ントを使用する
62
<- サーバーサイドの技術も必要・・・
<- AWSだけでもいける!
Copylight © Classmethod, Inc.
ということで、実際にFacebook認証を
使ってAWSの一時キーを取得してみる
63
Copylight © Classmethod, Inc.
よくあるサンプル
64
IAMユーザーのアクセスキーとシークレッ
トキーを用いて、S3にアクセスする。
Copylight © Classmethod, Inc.
よくあるサンプル(改)
• Facebook認証を使って取得したAWSの一
時キーを用いて、S3に保存されている自分
だけのファイル一覧を表示する。
65
Copylight © Classmethod, Inc.
よくあるサンプル(改)
1.S3にバケットを用意する!
2.Facebookアプリケーションを作成する!
3.IAMロールを作成する!
4.iOSアプリを実装する
66
Copylight © Classmethod, Inc.
S3にバケットを用意する
• このサンプルアプリで使用するS3のバケッ
トを作成する!
• このバケット配下でFacebookアカウント
ごとにフォルダを分けて管理するようにす
る
67
Copylight © Classmethod, Inc.
Facebookアプリを作成する
68
Copylight © Classmethod, Inc.
Facebookアプリを作成する
69
Copylight © Classmethod, Inc.
Facebookアプリを作成する
70
Copylight © Classmethod, Inc.
Facebookアプリを作成する
71
Copylight © Classmethod, Inc.
Facebookアプリを作成する
72
Copylight © Classmethod, Inc.
Facebookアプリを作成する
73
Copylight © Classmethod, Inc.
ロールを作成する
74
Copylight © Classmethod, Inc.
ロールを作成する
75
Copylight © Classmethod, Inc.
ロールを作成する
76
Copylight © Classmethod, Inc.
ロールを作成する
77
Copylight © Classmethod, Inc.
ロールを作成する
78
Copylight © Classmethod, Inc. 79
{!
"Version": "2012-10-17",!
"Statement": [!
{!
"Effect": "Allow",!
"Action": ["s3:ListBucket"],!
"Resource": ["arn:aws:s3:::ios-s3-sample-bucket"],!
"Condition": {!
"StringLike": {!
"s3:prefix": "${graph.facebook.com:id}/*"!
}!
}!
},!
{!
"Effect":"Allow",!
"Action":["s3:GetObject", "s3:PutObject", "s3:DeleteObject"],!
"Resource":[!
"arn:aws:s3:::ios-s3-sample-bucket/${graph.facebook.com:id}",!
"arn:aws:s3:::ios-s3-sample-bucket/${graph.facebook.com:id}/*"!
]!
}!
]!
}
Copylight © Classmethod, Inc.
ロールを作成する
80
Copylight © Classmethod, Inc.
iOSアプリを実装する
81
Copylight © Classmethod, Inc.
iOSアプリを実装する
82
Copylight © Classmethod, Inc. 83
// Facebook認証を実行する
FBSession *session;
[session openWithCompletionHandler:^(FBSession *session,
FBSessionState status,
NSError *error) {
// Facebook認証で取得したトークンでAWSから一時キーを取得する
NSString *role = @“arn:aws:iam::xxxxx:role/FacebookWIFS3FileStore”;
NSString *accessToken = session.accessTokenData.accessToken;
AmazonWIFCredentialsProvider *wif = [[AmazonWIFCredentialsProvider alloc]
initWithRole:role
andWebIdentityToken:accessToken
fromProvider:@"graph.facebook.com"];
if (wif.subjectFromWIF) {
// Facebookアカウントで取得した一時キーを指定してS3クライアントインスタンスを生成する
AmazonS3Client *s3Client = [[AmazonS3Client alloc]
initWithCredentialsProvider:self.wif];
// あとはファイルを閲覧したりアップロードしたり削除したり・・・
}
}];
Copylight © Classmethod, Inc.
まとめ
• 永続キーではなく一時キーを使え!
• ことAWS as MBaaSではその手段は
Facebook/Google/Amazon.comアカウ
ントを使用する方法しかなさそう
84
AWS as MBaaS 〜APIキーとかの話〜

More Related Content

What's hot

AWS Black Belt Techシリーズ AWS Management Console
AWS Black Belt Techシリーズ AWS Management ConsoleAWS Black Belt Techシリーズ AWS Management Console
AWS Black Belt Techシリーズ AWS Management ConsoleAmazon Web Services Japan
 
20190130 AWS Black Belt Online Seminar AWS Identity and Access Management (AW...
20190130 AWS Black Belt Online Seminar AWS Identity and Access Management (AW...20190130 AWS Black Belt Online Seminar AWS Identity and Access Management (AW...
20190130 AWS Black Belt Online Seminar AWS Identity and Access Management (AW...Amazon Web Services Japan
 
IAM & Consolidated Billing -ほぼ週刊AWSマイスターシリーズ第4回
IAM & Consolidated Billing -ほぼ週刊AWSマイスターシリーズ第4回IAM & Consolidated Billing -ほぼ週刊AWSマイスターシリーズ第4回
IAM & Consolidated Billing -ほぼ週刊AWSマイスターシリーズ第4回SORACOM, INC
 
Ph perがawsと出会ってdev opsを目指した話
Ph perがawsと出会ってdev opsを目指した話Ph perがawsと出会ってdev opsを目指した話
Ph perがawsと出会ってdev opsを目指した話Shota Umeda
 
AWS Black Belt Online Seminar 2017 AWS Summit Tokyo 2017 まとめ
AWS Black Belt Online Seminar 2017 AWS Summit Tokyo 2017 まとめAWS Black Belt Online Seminar 2017 AWS Summit Tokyo 2017 まとめ
AWS Black Belt Online Seminar 2017 AWS Summit Tokyo 2017 まとめAmazon Web Services Japan
 
Amazon Virtual Private Cloud (VPC) by Default
Amazon Virtual Private Cloud (VPC) by DefaultAmazon Virtual Private Cloud (VPC) by Default
Amazon Virtual Private Cloud (VPC) by DefaultAmazon Web Services Japan
 
AWS Black Belt Online Seminar 2017 AWS体験ハンズオン~Amazon S3 バックアップ~
AWS Black Belt Online Seminar 2017 AWS体験ハンズオン~Amazon S3 バックアップ~AWS Black Belt Online Seminar 2017 AWS体験ハンズオン~Amazon S3 バックアップ~
AWS Black Belt Online Seminar 2017 AWS体験ハンズオン~Amazon S3 バックアップ~Amazon Web Services Japan
 
基礎からのEBS
基礎からのEBS基礎からのEBS
基礎からのEBS宗 大栗
 
ナウなヤングにCloud Formationが流行ってほしい
ナウなヤングにCloud Formationが流行ってほしいナウなヤングにCloud Formationが流行ってほしい
ナウなヤングにCloud Formationが流行ってほしいSugawara Genki
 
AWS Black Belt Online Seminar AWSサービスを利用したアプリケーション開発を始めよう
AWS Black Belt Online Seminar AWSサービスを利用したアプリケーション開発を始めようAWS Black Belt Online Seminar AWSサービスを利用したアプリケーション開発を始めよう
AWS Black Belt Online Seminar AWSサービスを利用したアプリケーション開発を始めようAmazon Web Services Japan
 
AWS Black Belt Online Seminar 2018 ReInvent recap security other
AWS Black Belt Online Seminar 2018 ReInvent recap security otherAWS Black Belt Online Seminar 2018 ReInvent recap security other
AWS Black Belt Online Seminar 2018 ReInvent recap security otherAmazon Web Services Japan
 
CloudFront マルチオリジンの利用事例と反省点
CloudFront マルチオリジンの利用事例と反省点CloudFront マルチオリジンの利用事例と反省点
CloudFront マルチオリジンの利用事例と反省点Hirokazu Ouchi
 
AWS Black Belt Online Seminar 2017 IoT向け最新アーキテクチャパターン
AWS Black Belt Online Seminar 2017 IoT向け最新アーキテクチャパターンAWS Black Belt Online Seminar 2017 IoT向け最新アーキテクチャパターン
AWS Black Belt Online Seminar 2017 IoT向け最新アーキテクチャパターンAmazon Web Services Japan
 
サーバ構築・デプロイが簡単に!Elastic beanstalk
サーバ構築・デプロイが簡単に!Elastic beanstalkサーバ構築・デプロイが簡単に!Elastic beanstalk
サーバ構築・デプロイが簡単に!Elastic beanstalkHirokazu Ouchi
 
AWS Black Belt Tech シリーズ 2015 - AWS WAF
AWS Black Belt Tech シリーズ 2015 - AWS WAFAWS Black Belt Tech シリーズ 2015 - AWS WAF
AWS Black Belt Tech シリーズ 2015 - AWS WAFAmazon Web Services Japan
 
CloudFront最近の事例と間違った使い方
CloudFront最近の事例と間違った使い方CloudFront最近の事例と間違った使い方
CloudFront最近の事例と間違った使い方Hirokazu Ouchi
 
AWS Black Belt Techシリーズ Amazon SNS / Amazon SQS
AWS Black Belt Techシリーズ Amazon SNS / Amazon SQSAWS Black Belt Techシリーズ Amazon SNS / Amazon SQS
AWS Black Belt Techシリーズ Amazon SNS / Amazon SQSAmazon Web Services Japan
 

What's hot (20)

JAWS-UG Meets Windows (JAWS Days 2017)
JAWS-UG Meets Windows (JAWS Days 2017)JAWS-UG Meets Windows (JAWS Days 2017)
JAWS-UG Meets Windows (JAWS Days 2017)
 
AWS Black Belt Techシリーズ AWS Management Console
AWS Black Belt Techシリーズ AWS Management ConsoleAWS Black Belt Techシリーズ AWS Management Console
AWS Black Belt Techシリーズ AWS Management Console
 
20190130 AWS Black Belt Online Seminar AWS Identity and Access Management (AW...
20190130 AWS Black Belt Online Seminar AWS Identity and Access Management (AW...20190130 AWS Black Belt Online Seminar AWS Identity and Access Management (AW...
20190130 AWS Black Belt Online Seminar AWS Identity and Access Management (AW...
 
IAM & Consolidated Billing -ほぼ週刊AWSマイスターシリーズ第4回
IAM & Consolidated Billing -ほぼ週刊AWSマイスターシリーズ第4回IAM & Consolidated Billing -ほぼ週刊AWSマイスターシリーズ第4回
IAM & Consolidated Billing -ほぼ週刊AWSマイスターシリーズ第4回
 
Ph perがawsと出会ってdev opsを目指した話
Ph perがawsと出会ってdev opsを目指した話Ph perがawsと出会ってdev opsを目指した話
Ph perがawsと出会ってdev opsを目指した話
 
AWS Black Belt Online Seminar 2017 AWS Summit Tokyo 2017 まとめ
AWS Black Belt Online Seminar 2017 AWS Summit Tokyo 2017 まとめAWS Black Belt Online Seminar 2017 AWS Summit Tokyo 2017 まとめ
AWS Black Belt Online Seminar 2017 AWS Summit Tokyo 2017 まとめ
 
Amazon Virtual Private Cloud (VPC) by Default
Amazon Virtual Private Cloud (VPC) by DefaultAmazon Virtual Private Cloud (VPC) by Default
Amazon Virtual Private Cloud (VPC) by Default
 
20120508 aws meister-rds-public
20120508 aws meister-rds-public20120508 aws meister-rds-public
20120508 aws meister-rds-public
 
AWS Black Belt Online Seminar 2017 AWS体験ハンズオン~Amazon S3 バックアップ~
AWS Black Belt Online Seminar 2017 AWS体験ハンズオン~Amazon S3 バックアップ~AWS Black Belt Online Seminar 2017 AWS体験ハンズオン~Amazon S3 バックアップ~
AWS Black Belt Online Seminar 2017 AWS体験ハンズオン~Amazon S3 バックアップ~
 
基礎からのEBS
基礎からのEBS基礎からのEBS
基礎からのEBS
 
ナウなヤングにCloud Formationが流行ってほしい
ナウなヤングにCloud Formationが流行ってほしいナウなヤングにCloud Formationが流行ってほしい
ナウなヤングにCloud Formationが流行ってほしい
 
AWS Black Belt Online Seminar AWSサービスを利用したアプリケーション開発を始めよう
AWS Black Belt Online Seminar AWSサービスを利用したアプリケーション開発を始めようAWS Black Belt Online Seminar AWSサービスを利用したアプリケーション開発を始めよう
AWS Black Belt Online Seminar AWSサービスを利用したアプリケーション開発を始めよう
 
AWS Black Belt Online Seminar 2018 ReInvent recap security other
AWS Black Belt Online Seminar 2018 ReInvent recap security otherAWS Black Belt Online Seminar 2018 ReInvent recap security other
AWS Black Belt Online Seminar 2018 ReInvent recap security other
 
CloudFront マルチオリジンの利用事例と反省点
CloudFront マルチオリジンの利用事例と反省点CloudFront マルチオリジンの利用事例と反省点
CloudFront マルチオリジンの利用事例と反省点
 
AWS Black Belt Online Seminar 2017 IoT向け最新アーキテクチャパターン
AWS Black Belt Online Seminar 2017 IoT向け最新アーキテクチャパターンAWS Black Belt Online Seminar 2017 IoT向け最新アーキテクチャパターン
AWS Black Belt Online Seminar 2017 IoT向け最新アーキテクチャパターン
 
サーバ構築・デプロイが簡単に!Elastic beanstalk
サーバ構築・デプロイが簡単に!Elastic beanstalkサーバ構築・デプロイが簡単に!Elastic beanstalk
サーバ構築・デプロイが簡単に!Elastic beanstalk
 
AWS Black Belt Tech シリーズ 2015 - AWS WAF
AWS Black Belt Tech シリーズ 2015 - AWS WAFAWS Black Belt Tech シリーズ 2015 - AWS WAF
AWS Black Belt Tech シリーズ 2015 - AWS WAF
 
CloudFront最近の事例と間違った使い方
CloudFront最近の事例と間違った使い方CloudFront最近の事例と間違った使い方
CloudFront最近の事例と間違った使い方
 
AWS Black Belt Techシリーズ Amazon SNS / Amazon SQS
AWS Black Belt Techシリーズ Amazon SNS / Amazon SQSAWS Black Belt Techシリーズ Amazon SNS / Amazon SQS
AWS Black Belt Techシリーズ Amazon SNS / Amazon SQS
 
AWS Black Belt Techシリーズ AWS IAM
AWS Black Belt Techシリーズ  AWS IAMAWS Black Belt Techシリーズ  AWS IAM
AWS Black Belt Techシリーズ AWS IAM
 

Viewers also liked

北海道勉強会_20140531
北海道勉強会_20140531北海道勉強会_20140531
北海道勉強会_20140531Hiraku Komuro
 
iOS グラフィックス Tips
iOS グラフィックス TipsiOS グラフィックス Tips
iOS グラフィックス TipsKaname Noto
 
iOSサウンドTIPS〜作成から再生まで
iOSサウンドTIPS〜作成から再生までiOSサウンドTIPS〜作成から再生まで
iOSサウンドTIPS〜作成から再生までcocominap
 
好きなこと続けよう!エンゼルパイから始まった
好きなこと続けよう!エンゼルパイから始まった好きなこと続けよう!エンゼルパイから始まった
好きなこと続けよう!エンゼルパイから始まったYuko Toriyama
 
mBaaSの基本的な扱い方の事始め(parse.comとNCMBの使い方比べ)
mBaaSの基本的な扱い方の事始め(parse.comとNCMBの使い方比べ)mBaaSの基本的な扱い方の事始め(parse.comとNCMBの使い方比べ)
mBaaSの基本的な扱い方の事始め(parse.comとNCMBの使い方比べ)Fumiya Sakai
 
Backend as a Service - Mobile's new Middleware
Backend as a Service - Mobile's new MiddlewareBackend as a Service - Mobile's new Middleware
Backend as a Service - Mobile's new MiddlewareRahul Krishnan P
 
Amazon DynamoDB(初心者向け 超速マスター編)JAWSUG大阪
Amazon DynamoDB(初心者向け 超速マスター編)JAWSUG大阪Amazon DynamoDB(初心者向け 超速マスター編)JAWSUG大阪
Amazon DynamoDB(初心者向け 超速マスター編)JAWSUG大阪崇之 清水
 

Viewers also liked (7)

北海道勉強会_20140531
北海道勉強会_20140531北海道勉強会_20140531
北海道勉強会_20140531
 
iOS グラフィックス Tips
iOS グラフィックス TipsiOS グラフィックス Tips
iOS グラフィックス Tips
 
iOSサウンドTIPS〜作成から再生まで
iOSサウンドTIPS〜作成から再生までiOSサウンドTIPS〜作成から再生まで
iOSサウンドTIPS〜作成から再生まで
 
好きなこと続けよう!エンゼルパイから始まった
好きなこと続けよう!エンゼルパイから始まった好きなこと続けよう!エンゼルパイから始まった
好きなこと続けよう!エンゼルパイから始まった
 
mBaaSの基本的な扱い方の事始め(parse.comとNCMBの使い方比べ)
mBaaSの基本的な扱い方の事始め(parse.comとNCMBの使い方比べ)mBaaSの基本的な扱い方の事始め(parse.comとNCMBの使い方比べ)
mBaaSの基本的な扱い方の事始め(parse.comとNCMBの使い方比べ)
 
Backend as a Service - Mobile's new Middleware
Backend as a Service - Mobile's new MiddlewareBackend as a Service - Mobile's new Middleware
Backend as a Service - Mobile's new Middleware
 
Amazon DynamoDB(初心者向け 超速マスター編)JAWSUG大阪
Amazon DynamoDB(初心者向け 超速マスター編)JAWSUG大阪Amazon DynamoDB(初心者向け 超速マスター編)JAWSUG大阪
Amazon DynamoDB(初心者向け 超速マスター編)JAWSUG大阪
 

Similar to AWS as MBaaS 〜APIキーとかの話〜

[AWS Developers Meetup 2017] Developerのための ライブAWSウォークスルー 〜 AWS SDKの使い方 〜
[AWS Developers Meetup 2017] DeveloperのためのライブAWSウォークスルー 〜 AWS SDKの使い方 〜[AWS Developers Meetup 2017] DeveloperのためのライブAWSウォークスルー 〜 AWS SDKの使い方 〜
[AWS Developers Meetup 2017] Developerのための ライブAWSウォークスルー 〜 AWS SDKの使い方 〜Atsushi Fukui
 
CloudFormation/SAMのススメ
CloudFormation/SAMのススメCloudFormation/SAMのススメ
CloudFormation/SAMのススメEiji KOMINAMI
 
[AWSマイスターシリーズ] AWS SDK for Java / .NET
[AWSマイスターシリーズ] AWS SDK for Java / .NET[AWSマイスターシリーズ] AWS SDK for Java / .NET
[AWSマイスターシリーズ] AWS SDK for Java / .NETAmazon Web Services Japan
 
AWS Lake Formation で実現、マイクロサービスのサーバーレスな分散トレーシング
AWS Lake Formation で実現、マイクロサービスのサーバーレスな分散トレーシングAWS Lake Formation で実現、マイクロサービスのサーバーレスな分散トレーシング
AWS Lake Formation で実現、マイクロサービスのサーバーレスな分散トレーシング江藤 武司
 
Running Java Apps with Amazon EC2, AWS Elastic Beanstalk or Serverless
Running Java Apps with Amazon EC2, AWS Elastic Beanstalk or ServerlessRunning Java Apps with Amazon EC2, AWS Elastic Beanstalk or Serverless
Running Java Apps with Amazon EC2, AWS Elastic Beanstalk or ServerlessKeisuke Nishitani
 
LambdaとMobileの美味しいかもしれない関係
LambdaとMobileの美味しいかもしれない関係LambdaとMobileの美味しいかもしれない関係
LambdaとMobileの美味しいかもしれない関係Hiraku Komuro
 
アプリ開発&チーム管理で 役立った拡張機能
アプリ開発&チーム管理で役立った拡張機能アプリ開発&チーム管理で役立った拡張機能
アプリ開発&チーム管理で 役立った拡張機能Masaki Suzuki
 
20200630 AWS Black Belt Online Seminar Amazon Cognito
20200630 AWS Black Belt Online Seminar Amazon Cognito20200630 AWS Black Belt Online Seminar Amazon Cognito
20200630 AWS Black Belt Online Seminar Amazon CognitoAmazon Web Services Japan
 
Introduction to New CloudWatch Agent
Introduction to New CloudWatch AgentIntroduction to New CloudWatch Agent
Introduction to New CloudWatch AgentNoritaka Sekiyama
 
[AWSマイスターシリーズ] AWS Client Side SDK -Android,iOS & JavaScript-
[AWSマイスターシリーズ] AWS Client Side SDK -Android,iOS & JavaScript-[AWSマイスターシリーズ] AWS Client Side SDK -Android,iOS & JavaScript-
[AWSマイスターシリーズ] AWS Client Side SDK -Android,iOS & JavaScript-Amazon Web Services Japan
 
AWS Introduction for Startups
AWS Introduction for StartupsAWS Introduction for Startups
AWS Introduction for Startupsakitsukada
 
AWSにおける モバイル向けサービス及び事例紹介(20151211)
AWSにおける モバイル向けサービス及び事例紹介(20151211)AWSにおける モバイル向けサービス及び事例紹介(20151211)
AWSにおける モバイル向けサービス及び事例紹介(20151211)Keisuke Nishitani
 
クラウドネイティブ化する未来
クラウドネイティブ化する未来クラウドネイティブ化する未来
クラウドネイティブ化する未来Keisuke Nishitani
 
サーバレスアプリケーション構築入門
サーバレスアプリケーション構築入門サーバレスアプリケーション構築入門
サーバレスアプリケーション構築入門YoshihiroHorizono1
 
AWS_reInforce_2022_reCap_Ja.pdf
AWS_reInforce_2022_reCap_Ja.pdfAWS_reInforce_2022_reCap_Ja.pdf
AWS_reInforce_2022_reCap_Ja.pdfHayato Kiriyama
 
Cloud Programing for beginner
Cloud Programing for beginnerCloud Programing for beginner
Cloud Programing for beginnerSatoru Ishikawa
 
Windows 開発者のための Dev&Ops on AWS
Windows 開発者のための Dev&Ops on AWSWindows 開発者のための Dev&Ops on AWS
Windows 開発者のための Dev&Ops on AWSAmazon Web Services Japan
 

Similar to AWS as MBaaS 〜APIキーとかの話〜 (20)

[AWS Developers Meetup 2017] Developerのための ライブAWSウォークスルー 〜 AWS SDKの使い方 〜
[AWS Developers Meetup 2017] DeveloperのためのライブAWSウォークスルー 〜 AWS SDKの使い方 〜[AWS Developers Meetup 2017] DeveloperのためのライブAWSウォークスルー 〜 AWS SDKの使い方 〜
[AWS Developers Meetup 2017] Developerのための ライブAWSウォークスルー 〜 AWS SDKの使い方 〜
 
CloudFormation/SAMのススメ
CloudFormation/SAMのススメCloudFormation/SAMのススメ
CloudFormation/SAMのススメ
 
AWS Black Belt Techシリーズ AWS SDK
AWS Black Belt Techシリーズ AWS SDKAWS Black Belt Techシリーズ AWS SDK
AWS Black Belt Techシリーズ AWS SDK
 
[AWSマイスターシリーズ] AWS SDK for Java / .NET
[AWSマイスターシリーズ] AWS SDK for Java / .NET[AWSマイスターシリーズ] AWS SDK for Java / .NET
[AWSマイスターシリーズ] AWS SDK for Java / .NET
 
AWS Lake Formation で実現、マイクロサービスのサーバーレスな分散トレーシング
AWS Lake Formation で実現、マイクロサービスのサーバーレスな分散トレーシングAWS Lake Formation で実現、マイクロサービスのサーバーレスな分散トレーシング
AWS Lake Formation で実現、マイクロサービスのサーバーレスな分散トレーシング
 
Running Java Apps with Amazon EC2, AWS Elastic Beanstalk or Serverless
Running Java Apps with Amazon EC2, AWS Elastic Beanstalk or ServerlessRunning Java Apps with Amazon EC2, AWS Elastic Beanstalk or Serverless
Running Java Apps with Amazon EC2, AWS Elastic Beanstalk or Serverless
 
LambdaとMobileの美味しいかもしれない関係
LambdaとMobileの美味しいかもしれない関係LambdaとMobileの美味しいかもしれない関係
LambdaとMobileの美味しいかもしれない関係
 
アプリ開発&チーム管理で 役立った拡張機能
アプリ開発&チーム管理で役立った拡張機能アプリ開発&チーム管理で役立った拡張機能
アプリ開発&チーム管理で 役立った拡張機能
 
20200630 AWS Black Belt Online Seminar Amazon Cognito
20200630 AWS Black Belt Online Seminar Amazon Cognito20200630 AWS Black Belt Online Seminar Amazon Cognito
20200630 AWS Black Belt Online Seminar Amazon Cognito
 
Introduction to New CloudWatch Agent
Introduction to New CloudWatch AgentIntroduction to New CloudWatch Agent
Introduction to New CloudWatch Agent
 
[AWSマイスターシリーズ] AWS Client Side SDK -Android,iOS & JavaScript-
[AWSマイスターシリーズ] AWS Client Side SDK -Android,iOS & JavaScript-[AWSマイスターシリーズ] AWS Client Side SDK -Android,iOS & JavaScript-
[AWSマイスターシリーズ] AWS Client Side SDK -Android,iOS & JavaScript-
 
AWS Introduction for Startups
AWS Introduction for StartupsAWS Introduction for Startups
AWS Introduction for Startups
 
20191125 Container Security
20191125 Container Security20191125 Container Security
20191125 Container Security
 
AWSにおける モバイル向けサービス及び事例紹介(20151211)
AWSにおける モバイル向けサービス及び事例紹介(20151211)AWSにおける モバイル向けサービス及び事例紹介(20151211)
AWSにおける モバイル向けサービス及び事例紹介(20151211)
 
Gaming cicd-pipeline gaming-technight-2
Gaming cicd-pipeline gaming-technight-2Gaming cicd-pipeline gaming-technight-2
Gaming cicd-pipeline gaming-technight-2
 
クラウドネイティブ化する未来
クラウドネイティブ化する未来クラウドネイティブ化する未来
クラウドネイティブ化する未来
 
サーバレスアプリケーション構築入門
サーバレスアプリケーション構築入門サーバレスアプリケーション構築入門
サーバレスアプリケーション構築入門
 
AWS_reInforce_2022_reCap_Ja.pdf
AWS_reInforce_2022_reCap_Ja.pdfAWS_reInforce_2022_reCap_Ja.pdf
AWS_reInforce_2022_reCap_Ja.pdf
 
Cloud Programing for beginner
Cloud Programing for beginnerCloud Programing for beginner
Cloud Programing for beginner
 
Windows 開発者のための Dev&Ops on AWS
Windows 開発者のための Dev&Ops on AWSWindows 開発者のための Dev&Ops on AWS
Windows 開発者のための Dev&Ops on AWS
 

AWS as MBaaS 〜APIキーとかの話〜

  • 1. Copylight © Classmethod, Inc. AWS as MBaaS!!! ∼APIキーとかの話∼ 北海道iOS勉強会! クラスメソッド株式会社! 平井祐樹
  • 2. Copylight © Classmethod, Inc. 自己紹介 • 平井祐樹、28歳、B型! • 2012年2月入社(CM歴2年4ヶ月ぐらい)! • iOSアプリ開発歴:2年ぐらい! • Webアプリ開発(PHP、js) 2
  • 3. Copylight © Classmethod, Inc. アジェンダ • MBaaSとAWS! • AWSをMBaaSとして実際に使ってみた話! • まとめ 3
  • 4. Copylight © Classmethod, Inc. MBaaSとAWS 4
  • 5. Copylight © Classmethod, Inc. MBaaSって? • Mobile Backend as a Serviceの略! • エムバース 5
  • 6. Copylight © Classmethod, Inc. MBaaSって? 6 MBaaSとは、スマートフォンアプリの開発に 必要な汎用的機能をAPI、SDKで提供しサー バー側のコードを書くことなく、サーバー連 携するスマートフォンアプリを効率よく開発 できるようにするクラウドサービスです。! (参考:NIFTY Cloud)
  • 7. Copylight © Classmethod, Inc. あっち側 MBaaSって? 7 モバイル ・データ集計/取得! ・ユーザー管理! ・通知 ストレージ サーバー DB
  • 8. Copylight © Classmethod, Inc. MBaaSって? あっち側のことを! よろしくやってくれるサービス 8
  • 9. Copylight © Classmethod, Inc. MBaaSの選択肢 9 Kii cloud NIFTY CloudParse.com
  • 10. Copylight © Classmethod, Inc. MBaaSに求めるもの • 認証/アクセス制御! • 共有データストア! • プッシュ通知! • などなど… 10
  • 11. Copylight © Classmethod, Inc. ??? 11
  • 12. Copylight © Classmethod, Inc. AWSが使えるんじゃね?? 12
  • 13. Copylight © Classmethod, Inc. AWSが使えるんじゃね?? • 認証/アクセス制御 13
  • 14. Copylight © Classmethod, Inc. AWSが使えるんじゃね?? • 共有データストア 14
  • 15. Copylight © Classmethod, Inc. AWSが使えるんじゃね?? • プッシュ通知 15
  • 16. Copylight © Classmethod, Inc. AWS SDK • Java/Ruby/PHP/.Netなど様々なプラット フォームごとにSDKが提供されている! • 当然、iOS(Objective-C)用のSDKもある! • AWS SDKを使用するとAWSのサービスを 直接利用できる 16
  • 17. Copylight © Classmethod, Inc. MBaaSの選択肢 17 Kii cloud NIFTY CloudParse.com
  • 18. Copylight © Classmethod, Inc. AWS を MBaaSとして! どこまで使えるのか? 18
  • 19. Copylight © Classmethod, Inc. 絶賛検証中! 19
  • 20. Copylight © Classmethod, Inc. AWSをMBaaSとして! 実際に使ってみた話 20
  • 21. Copylight © Classmethod, Inc. 何からやってみよう? 21
  • 22. Copylight © Classmethod, Inc. とりあえず! iOSアプリからAWS SDKを使って! S3にアクセスしてみる 22
  • 23. Copylight © Classmethod, Inc. Amazon S3 • AWSの一つとして提供されているオンライ ンストレージサービス! • ファイル(S3ではオブジェクトと呼ばれ る)はバケットと呼ばれる入れ物にいれて 管理する 23
  • 24. Copylight © Classmethod, Inc. S3に任意のバケットに保存されている! ファイル一覧を表示する! iOSアプリを作って見よう。 24
  • 25. Copylight © Classmethod, Inc. どうやってやるの?! 何が必要なの? 25
  • 26. Copylight © Classmethod, Inc. AWS SDKのサンプルを見ている 26
  • 27. Copylight © Classmethod, Inc. AWS SDKのサンプル IAMユーザーのアクセスキーIDとシーク レットキーを用いて、S3にアクセスする。 27
  • 28. Copylight © Classmethod, Inc. ふぁ?IAM ユーザーって?? 28
  • 29. Copylight © Classmethod, Inc. IAM • Identity and Access Management! • AWSの権限管理のサービス! • IAM ユーザー、IAM グループ、IAM ロール とかがある 29
  • 30. Copylight © Classmethod, Inc. IAM ユーザー • 一つのAWSアカウントの下に複数のユーザを作 成することができる! • そのユーザに特定のリソース、サービス、API に関する権限を与えることができる! • そのユーザーを使ってAWS管理画面にログイン したりAWSのリソースにアクセスできたりする 30
  • 31. Copylight © Classmethod, Inc. 必要なもの • AWS SDK for iOS(v1.7.1)! • IAM ユーザーのアクセスキーIDとシーク レットアクセスキー! • S3のバケットとその中のファイル! • Xcode 31
  • 32. Copylight © Classmethod, Inc. S3に任意のバケットに保存されている! ファイル一覧を表示する! iOSアプリを作って見よう。 32
  • 33. Copylight © Classmethod, Inc. やること 1.IAMユーザーのアクセスキーIDとシーク レットアクセスキーを取得する! 2.S3にバケットとファイルを用意する! 3.iOSアプリを実装する 33
  • 34. Copylight © Classmethod, Inc. IAMユーザーのアクセスキー ID と シークレットアクセスキーを取得する 34
  • 35. Copylight © Classmethod, Inc. IAMユーザーのアクセスキー ID と シークレットアクセスキーを取得する 35
  • 36. Copylight © Classmethod, Inc. IAMユーザーのアクセスキー ID と シークレットアクセスキーを取得する 36
  • 37. Copylight © Classmethod, Inc. 1. IAMユーザーのアクセスキー ID とシーク レットアクセスキーを取得する 37
  • 38. Copylight © Classmethod, Inc. S3にバケットとファイルを用意する 38
  • 39. Copylight © Classmethod, Inc. iOSアプリを実装する 39
  • 40. Copylight © Classmethod, Inc. iOSアプリを実装する 40 // アクセスキーIDとシークレットアクセスキーを指定してS3クライアントインスタンスを生成する AmazonS3Client *s3Client = [[AmazonS3Client alloc] initWithAccessKey:@“[アクセスキーID]” withSecretKey:@“[シークレットアクセスキー]”]; // 指定しバケットのファイル一覧を取得する S3ListObjectsRequest *request = [[S3ListObjectsRequest alloc] initWithName:@"ios-s3-sample"]; S3ListObjectsResponse *response = [s3Client listObjects:request]; if (response.error) { NSLog(@"error: %@", response.error); } else { NSArray *objects = response.listObjectsResult.objectSummaries; for (NSString *objectSummary in objects) { NSLog(@"%@", objectSummary); } }
  • 41. Copylight © Classmethod, Inc. 実行! 41
  • 42. Copylight © Classmethod, Inc. できた! 42
  • 43. Copylight © Classmethod, Inc. と思いきや 43
  • 44. Copylight © Classmethod, Inc. AWS SDKのREADMEを見てみると 44
  • 45. Copylight © Classmethod, Inc. iOSアプリを実装する // アクセスキーIDとシークレットアクセスキーを指定してS3クライアントインスタンスを生成する AmazonS3Client *s3Client = [[AmazonS3Client alloc] initWithAccessKey:@“[アクセスキーID]” withSecretKey:@“[シークレットアクセスキー]”]; // 指定しバケットのファイル一覧を取得する S3ListObjectsRequest *request = [[S3ListObjectsRequest alloc] initWithName:@"ios-s3-sample"]; S3ListObjectsResponse *response = [s3Client listObjects:request]; if (response.error) { NSLog(@"error: %@", response.error); } else { NSArray *objects = response.listObjectsResult.objectSummaries; for (NSString *objectSummary in) { NSLog(@"%@", objectSummary); } } 45 <- NG!!
  • 46. Copylight © Classmethod, Inc. サンプルではIAMユーザーのアクセスキー IDとシークレットアクセスキーを使ってる けど、実際にはやらないでね∼ 46
  • 47. Copylight © Classmethod, Inc. ふぁ?なんで?? 47
  • 48. Copylight © Classmethod, Inc. で、そこについて調べてみました 48
  • 49. Copylight © Classmethod, Inc. S3やDynamoDBにアクセスしたい 49 APIキーが必要!!
  • 50. Copylight © Classmethod, Inc. APIキーとは? • 永続キー (long lived credentials)! • 一時キー (short lived session credentials)! 参考:IAMによるAWS権限管理運用ベストプラクティス (2) | Developers.IO 50
  • 51. Copylight © Classmethod, Inc. APIキーとは? IAMユーザーのアクセスキーIDとシーク レットアクセスキーは永続キーの1つ 51
  • 52. Copylight © Classmethod, Inc. 永続キーをモバイルアプリに埋め込むのは 非常に危険! 52
  • 53. Copylight © Classmethod, Inc. WEBアプリの場合 53 サーバー
  • 54. Copylight © Classmethod, Inc. モバイルアプリの場合 キーが抜かれる 想定していない経路から! アクセスされてしまう!
  • 55. Copylight © Classmethod, Inc. 永続キーを悪用されると・・・ • 想定していない経路(別のアプリなど)か らAWSリソースにアクセスされてしまう! • 場合によっては元のサービスを妨害されて しまう 55
  • 56. Copylight © Classmethod, Inc. そもそも永続キーを使うと・・・ • 永続キーを共通で使用すると、認証やらア クセス制限ができない 56
  • 57. Copylight © Classmethod, Inc. 永続キーではなく! 一時キーを使おう! 57
  • 58. Copylight © Classmethod, Inc. で、どうやって一時キーを使うの? 58
  • 59. Copylight © Classmethod, Inc. 一時キー使う • Security Token Service (STS)! • IAMに従属するサブプロダクト的な位置 付け! • IAMロールに設定された権限を持った一 時キーを入手することができる! 参考:IAMロール徹底理解 ∼ AssumeRoleの正体 | Developers.IO 59
  • 60. Copylight © Classmethod, Inc. IAMロール • AWSの各種サービスにアクセスする際の権 限を設定できる仕組み 60
  • 61. Copylight © Classmethod, Inc. STSを使えば、IAMロールの持つ権限 を一時的に付与してもらうことが可能 61
  • 62. Copylight © Classmethod, Inc. 一時キーを取得する手段 • 自前のサーバーを用意して一時キーを発行 してもらう! • Facebook/Google/Amazon.comアカウ ントを使用する 62 <- サーバーサイドの技術も必要・・・ <- AWSだけでもいける!
  • 63. Copylight © Classmethod, Inc. ということで、実際にFacebook認証を 使ってAWSの一時キーを取得してみる 63
  • 64. Copylight © Classmethod, Inc. よくあるサンプル 64 IAMユーザーのアクセスキーとシークレッ トキーを用いて、S3にアクセスする。
  • 65. Copylight © Classmethod, Inc. よくあるサンプル(改) • Facebook認証を使って取得したAWSの一 時キーを用いて、S3に保存されている自分 だけのファイル一覧を表示する。 65
  • 66. Copylight © Classmethod, Inc. よくあるサンプル(改) 1.S3にバケットを用意する! 2.Facebookアプリケーションを作成する! 3.IAMロールを作成する! 4.iOSアプリを実装する 66
  • 67. Copylight © Classmethod, Inc. S3にバケットを用意する • このサンプルアプリで使用するS3のバケッ トを作成する! • このバケット配下でFacebookアカウント ごとにフォルダを分けて管理するようにす る 67
  • 68. Copylight © Classmethod, Inc. Facebookアプリを作成する 68
  • 69. Copylight © Classmethod, Inc. Facebookアプリを作成する 69
  • 70. Copylight © Classmethod, Inc. Facebookアプリを作成する 70
  • 71. Copylight © Classmethod, Inc. Facebookアプリを作成する 71
  • 72. Copylight © Classmethod, Inc. Facebookアプリを作成する 72
  • 73. Copylight © Classmethod, Inc. Facebookアプリを作成する 73
  • 74. Copylight © Classmethod, Inc. ロールを作成する 74
  • 75. Copylight © Classmethod, Inc. ロールを作成する 75
  • 76. Copylight © Classmethod, Inc. ロールを作成する 76
  • 77. Copylight © Classmethod, Inc. ロールを作成する 77
  • 78. Copylight © Classmethod, Inc. ロールを作成する 78
  • 79. Copylight © Classmethod, Inc. 79 {! "Version": "2012-10-17",! "Statement": [! {! "Effect": "Allow",! "Action": ["s3:ListBucket"],! "Resource": ["arn:aws:s3:::ios-s3-sample-bucket"],! "Condition": {! "StringLike": {! "s3:prefix": "${graph.facebook.com:id}/*"! }! }! },! {! "Effect":"Allow",! "Action":["s3:GetObject", "s3:PutObject", "s3:DeleteObject"],! "Resource":[! "arn:aws:s3:::ios-s3-sample-bucket/${graph.facebook.com:id}",! "arn:aws:s3:::ios-s3-sample-bucket/${graph.facebook.com:id}/*"! ]! }! ]! }
  • 80. Copylight © Classmethod, Inc. ロールを作成する 80
  • 81. Copylight © Classmethod, Inc. iOSアプリを実装する 81
  • 82. Copylight © Classmethod, Inc. iOSアプリを実装する 82
  • 83. Copylight © Classmethod, Inc. 83 // Facebook認証を実行する FBSession *session; [session openWithCompletionHandler:^(FBSession *session, FBSessionState status, NSError *error) { // Facebook認証で取得したトークンでAWSから一時キーを取得する NSString *role = @“arn:aws:iam::xxxxx:role/FacebookWIFS3FileStore”; NSString *accessToken = session.accessTokenData.accessToken; AmazonWIFCredentialsProvider *wif = [[AmazonWIFCredentialsProvider alloc] initWithRole:role andWebIdentityToken:accessToken fromProvider:@"graph.facebook.com"]; if (wif.subjectFromWIF) { // Facebookアカウントで取得した一時キーを指定してS3クライアントインスタンスを生成する AmazonS3Client *s3Client = [[AmazonS3Client alloc] initWithCredentialsProvider:self.wif]; // あとはファイルを閲覧したりアップロードしたり削除したり・・・ } }];
  • 84. Copylight © Classmethod, Inc. まとめ • 永続キーではなく一時キーを使え! • ことAWS as MBaaSではその手段は Facebook/Google/Amazon.comアカウ ントを使用する方法しかなさそう 84