Copyright © 2014 TerraSky Co.,Ltd. All Rights Reserved. Copyright © 2014 TerraSky Co.,Ltd. All Rights Reserved.
AWSとSalesforceをつかったエコシステム
ファイル編
吉澤
Copyright © 2014 TerraSky Co.,Ltd. All Rights Reserved.
Amazon S3って何?
2
Amazon Simple Storage Serviceの略で、AWSが提供しているストレージサービスの事。
特徴
・高い堅牢性:データ消失確率が0.000000001%
・高い可用性:99.99%
・安い:1GBあたり$0.3(約3円) ・APIがよい
・細かなセキュリティ設定も可能
Copyright © 2014 TerraSky Co.,Ltd. All Rights Reserved.
Force.com for Amazon WebServices
3
URL:http://wiki.developerforce.com/page/Amazon_Toolkit
Force.com上からAWS(EC2,S3)を操作するパッケージ
Copyright © 2014 TerraSky Co.,Ltd. All Rights Reserved.
Force.com for Amazon WebServices
4
AWSアクセスキーの設定
S3 AWS Credentialオブジェクトに登録
このCredentialNameを
各Cls内に設定し、認証に使用します。
Copyright © 2014 TerraSky Co.,Ltd. All Rights Reserved.
東京リージョン対応
5
東京リージョンのS3を扱うため、いくつかの設定が必要になります。
1. S3.clsのエンドポイントを書き換え
public String endpoint_x =
'https://s3-ap-northeast-1.amazonaws.com/soap';
2. 上記サイトをリモートサイトに登録
Copyright © 2014 TerraSky Co.,Ltd. All Rights Reserved.
システム構成イメージ
6
S3オブジェクト (バケット、ファイル情報)
実ファイル
ブラウザ
Copyright © 2014 TerraSky Co.,Ltd. All Rights Reserved.
登録時の困ったこと
7
トラブル1:100KB以上のファイルがアップロードできない
※SalesforceのWebサービスAPIの制限
解決:ブラウザから直接S3へアップロードを行う
S3Bucket
①ページ表示時に必要な情報をAPEXで生成し、格納
②直接アップロード
Copyright © 2014 TerraSky Co.,Ltd. All Rights Reserved.
登録時の困ったこと
8
トラブル2:ファイル名が重複した場合、上書きされてしまう・・・
解決:SalesforceId/ファイル名で一意にした
Copyright © 2014 TerraSky Co.,Ltd. All Rights Reserved.
登録時の困ったこと
9
ブラウザによってファイル名入力フィールドで入力される値が異なる
Firefox:ファイル名
Chrome:c:¥fakepath¥ファイル名
解決:Javascriptで解決
Copyright © 2014 TerraSky Co.,Ltd. All Rights Reserved.
最終的な登録イメージ
10
S3オブジェクト (バケット、ファイル情報)
実ファイル
⑤レコード作成更新(ファイル名等)
④結果ページ表示
Copyright © 2014 TerraSky Co.,Ltd. All Rights Reserved.
ダウンロード時イメージ
11
S3オブジェクト (バケット、ファイル情報)
実ファイル
①ダウンロードボタン押下
②APEX内部で期限付き、認証キー付URLを発行し、WindowOpen
※期限は1時間 AWS認証情報オブジェクト
(アクセスキー、シークレットキー)
Copyright © 2014 TerraSky Co.,Ltd. All Rights Reserved.
ダウンロード時で困ったこと
12
日本語ファイルの場合、正しい期限付き認証キー付URLが発行できなかった。
・キー発行時にファイル名をパラメータに使用しているが、エンコードされていないとNGという事が判明
→キー発行前にエンコードし解決。
Copyright © 2014 TerraSky Co.,Ltd. All Rights Reserved.
削除イメージ
13
S3オブジェクト (バケット、ファイル情報)
実ファイル
①削除ボタン押下
②JSよりAPEX WebService呼出 AWS認証情報オブジェクト
(アクセスキー、シークレットキー)
③AWS API Callout
④削除実行
⑤S3オブジェクトのレコード削除
⑥画面表示
Copyright © 2014 TerraSky Co.,Ltd. All Rights Reserved.
S3ファイル削除で困ったこと
14
ファイル削除をトリガーにAWSのAPIをCalloutできる?
外部WebService呼出はトリガーからはNG(同期の場合)。
(エラーメッセージ:System.CalloutException: Callout from triggers
are currently not supported”) 解決:Javascriptを実行するカスタムボタンを作成、Apex
WebServiceからAWSのAPIをたたいて実ファイルを削除。
その後S3オブジェクトのレコードを削除。
Copyright © 2014 TerraSky Co.,Ltd. All Rights Reserved.
ファイル削除関連
15
・もっとSalesforceっぽくゴミ箱を有効活用したい。
↓
1. S3オブジェクトの削除をキーにゴミ箱オブジェクト(カスタムオブジェクト)にクローンを作成。
2. ゴミ箱オブジェクトをAPEXスケジュールで削除(&実ファイル削除)
Copyright © 2014 TerraSky Co.,Ltd. All Rights Reserved.
セキュリティについて
16
S3の仕様について
・S3のACLはPrivate,PublicRead,FullControll等の設定できる
・署名付き期限付きURLは、生成に使用したアクセスキーのセキュリティ権限が適用される。(IAMで設定) ・署名付き期限付きURLの構成は、 【https://ファイルパス? AWSAccessKeyId=アクセスキー& Expires=有効期限(ミリ秒)& Signature=暗号化キー】 となる。
IAMについて
・IAMとはAWSの1組織に対してユーザー、グループを作成し、管理するサービス。
・IAMで設定できるもの(S3) 特定バケットへのアクセス権限、IPアドレス制限等
・5000ユーザまで設定可能
Copyright © 2014 TerraSky Co.,Ltd. All Rights Reserved.
セキュリティについて
17
こんな時は?
他のユーザーには非公開にしたい。
• Salesforceオブジェクトの公開設定で制限をかければOK
また、各ユーザごとのIAMアカウントを発行し、そのアカウントを使ってS3へアクセスすることも可能
Copyright © 2014 TerraSky Co.,Ltd. All Rights Reserved.
セキュリティについて
18
こんな時は?
アクセスキーはURLに直接書かれているけど大丈夫?
• シークレットキーが漏えいしない限りほぼ大丈夫です。
キーはSalesforceのオブジェクトで管理しています。
キーを月次で更新することでより高いセキュリティが保たれます。
組織外ユーザーからは見えない?
• S3のデフォルトアクセス権をPrivateにしているため、署名付き期限付きURLでないとアクセスができません。(これは組織内ユーザーも同様です。)
Copyright © 2014 TerraSky Co.,Ltd. All Rights Reserved.
セキュリティについて
19
どこら辺まで強化できる?
• IAMの設定で許可IPアドレスを指定できるので、社外からのアクセスを遮断することが可能です。
• この場合指定IPアドレス以外から、該当のアクセスキーにて生成した、署名付き期限付きURLでアクセスしても、アクセスできません。
• なお、IP制限の他に、時刻でも制限可能です。
Copyright © 2014 TerraSky Co.,Ltd. All Rights Reserved.
セキュリティについて
20
万が一アクセスキーとシークレットキーが漏れてしまったら
1. IAMユーザーのキーを削除
※本キーでのアクセスは遮断されます
2. 同一IAMユーザーのキーを新規発行
3. Salesforceに新しいキーを登録
※ 作業時間5分
Copyright © 2014 TerraSky Co.,Ltd. All Rights Reserved.
監視について
21
S3は専用の形式でアクセスログが発行されます。
アクセス解析ツールのようなものはないので自作する必要がありますが、Access等で解析ツールを作れば解析は可能。
出力項目例
• バケット名
• 日時
• ユーザ
• IP
• 対象ファイル
• 処理内容 等
Copyright © 2014 TerraSky Co.,Ltd. All Rights Reserved.
有効なケース
22
• 動画ファイルを管理したい。
• とにかく膨大な量のファイルがあり、その一部をSalesforceで使いたい。
Copyright © 2014 TerraSky Co.,Ltd. All Rights Reserved.
こんなことも・・・
23
• S3の画像ファイルを認証キー付URLとIMG関数を使ってSalesforceで表示する。
IMG関数
認証キー付URL
Copyright © 2014 TerraSky Co.,Ltd. All Rights Reserved.
まとめ
24
• S3の設定はprivateで設定
• 共有設定等はSalesforceに任せる。
• 実ファイルはS3に配置してコストを削減。
Copyright © 2014 TerraSky Co.,Ltd. All Rights Reserved. Copyright © 2014 TerraSky Co.,Ltd. All Rights Reserved.
25