25
Copyright © 2014 TerraSky Co.,Ltd. All Rights Reserved. Copyright © 2014 TerraSky Co.,Ltd. All Rights Reserved. AWSSalesforceをつかったエコシステム ファイル編 吉澤

01 awsとsalesforceを使ったエコシステム ファイル編

Embed Size (px)

DESCRIPTION

TerraSky Power Night 2014/05/09 開催 講演資料

Citation preview

Page 1: 01 awsとsalesforceを使ったエコシステム ファイル編

Copyright © 2014 TerraSky Co.,Ltd. All Rights Reserved. Copyright © 2014 TerraSky Co.,Ltd. All Rights Reserved.

AWSとSalesforceをつかったエコシステム

ファイル編

吉澤

Page 2: 01 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がよい

・細かなセキュリティ設定も可能

Page 3: 01 awsとsalesforceを使ったエコシステム ファイル編

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)を操作するパッケージ

Page 4: 01 awsとsalesforceを使ったエコシステム ファイル編

Copyright © 2014 TerraSky Co.,Ltd. All Rights Reserved.

Force.com for Amazon WebServices

4

AWSアクセスキーの設定

S3 AWS Credentialオブジェクトに登録

このCredentialNameを

各Cls内に設定し、認証に使用します。

Page 5: 01 awsとsalesforceを使ったエコシステム ファイル編

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. 上記サイトをリモートサイトに登録

Page 6: 01 awsとsalesforceを使ったエコシステム ファイル編

Copyright © 2014 TerraSky Co.,Ltd. All Rights Reserved.

システム構成イメージ

6

S3オブジェクト (バケット、ファイル情報)

実ファイル

ブラウザ

Page 7: 01 awsとsalesforceを使ったエコシステム ファイル編

Copyright © 2014 TerraSky Co.,Ltd. All Rights Reserved.

登録時の困ったこと

7

トラブル1:100KB以上のファイルがアップロードできない

※SalesforceのWebサービスAPIの制限

解決:ブラウザから直接S3へアップロードを行う

S3Bucket

①ページ表示時に必要な情報をAPEXで生成し、格納

②直接アップロード

Page 8: 01 awsとsalesforceを使ったエコシステム ファイル編

Copyright © 2014 TerraSky Co.,Ltd. All Rights Reserved.

登録時の困ったこと

8

トラブル2:ファイル名が重複した場合、上書きされてしまう・・・

解決:SalesforceId/ファイル名で一意にした

Page 9: 01 awsとsalesforceを使ったエコシステム ファイル編

Copyright © 2014 TerraSky Co.,Ltd. All Rights Reserved.

登録時の困ったこと

9

ブラウザによってファイル名入力フィールドで入力される値が異なる

Firefox:ファイル名

Chrome:c:¥fakepath¥ファイル名

解決:Javascriptで解決

Page 10: 01 awsとsalesforceを使ったエコシステム ファイル編

Copyright © 2014 TerraSky Co.,Ltd. All Rights Reserved.

最終的な登録イメージ

10

S3オブジェクト (バケット、ファイル情報)

実ファイル

⑤レコード作成更新(ファイル名等)

④結果ページ表示

Page 11: 01 awsとsalesforceを使ったエコシステム ファイル編

Copyright © 2014 TerraSky Co.,Ltd. All Rights Reserved.

ダウンロード時イメージ

11

S3オブジェクト (バケット、ファイル情報)

実ファイル

①ダウンロードボタン押下

②APEX内部で期限付き、認証キー付URLを発行し、WindowOpen

※期限は1時間 AWS認証情報オブジェクト

(アクセスキー、シークレットキー)

Page 12: 01 awsとsalesforceを使ったエコシステム ファイル編

Copyright © 2014 TerraSky Co.,Ltd. All Rights Reserved.

ダウンロード時で困ったこと

12

日本語ファイルの場合、正しい期限付き認証キー付URLが発行できなかった。

・キー発行時にファイル名をパラメータに使用しているが、エンコードされていないとNGという事が判明

→キー発行前にエンコードし解決。

Page 13: 01 awsとsalesforceを使ったエコシステム ファイル編

Copyright © 2014 TerraSky Co.,Ltd. All Rights Reserved.

削除イメージ

13

S3オブジェクト (バケット、ファイル情報)

実ファイル

①削除ボタン押下

②JSよりAPEX WebService呼出 AWS認証情報オブジェクト

(アクセスキー、シークレットキー)

③AWS API Callout

④削除実行

⑤S3オブジェクトのレコード削除

⑥画面表示

Page 14: 01 awsとsalesforceを使ったエコシステム ファイル編

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オブジェクトのレコードを削除。

Page 15: 01 awsとsalesforceを使ったエコシステム ファイル編

Copyright © 2014 TerraSky Co.,Ltd. All Rights Reserved.

ファイル削除関連

15

・もっとSalesforceっぽくゴミ箱を有効活用したい。

1. S3オブジェクトの削除をキーにゴミ箱オブジェクト(カスタムオブジェクト)にクローンを作成。

2. ゴミ箱オブジェクトをAPEXスケジュールで削除(&実ファイル削除)

Page 16: 01 awsとsalesforceを使ったエコシステム ファイル編

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ユーザまで設定可能

Page 17: 01 awsとsalesforceを使ったエコシステム ファイル編

Copyright © 2014 TerraSky Co.,Ltd. All Rights Reserved.

セキュリティについて

17

こんな時は?

他のユーザーには非公開にしたい。

• Salesforceオブジェクトの公開設定で制限をかければOK

また、各ユーザごとのIAMアカウントを発行し、そのアカウントを使ってS3へアクセスすることも可能

Page 18: 01 awsとsalesforceを使ったエコシステム ファイル編

Copyright © 2014 TerraSky Co.,Ltd. All Rights Reserved.

セキュリティについて

18

こんな時は?

アクセスキーはURLに直接書かれているけど大丈夫?

• シークレットキーが漏えいしない限りほぼ大丈夫です。

キーはSalesforceのオブジェクトで管理しています。

キーを月次で更新することでより高いセキュリティが保たれます。

組織外ユーザーからは見えない?

• S3のデフォルトアクセス権をPrivateにしているため、署名付き期限付きURLでないとアクセスができません。(これは組織内ユーザーも同様です。)

Page 19: 01 awsとsalesforceを使ったエコシステム ファイル編

Copyright © 2014 TerraSky Co.,Ltd. All Rights Reserved.

セキュリティについて

19

どこら辺まで強化できる?

• IAMの設定で許可IPアドレスを指定できるので、社外からのアクセスを遮断することが可能です。

• この場合指定IPアドレス以外から、該当のアクセスキーにて生成した、署名付き期限付きURLでアクセスしても、アクセスできません。

• なお、IP制限の他に、時刻でも制限可能です。

Page 20: 01 awsとsalesforceを使ったエコシステム ファイル編

Copyright © 2014 TerraSky Co.,Ltd. All Rights Reserved.

セキュリティについて

20

万が一アクセスキーとシークレットキーが漏れてしまったら

1. IAMユーザーのキーを削除

※本キーでのアクセスは遮断されます

2. 同一IAMユーザーのキーを新規発行

3. Salesforceに新しいキーを登録

※ 作業時間5分

Page 21: 01 awsとsalesforceを使ったエコシステム ファイル編

Copyright © 2014 TerraSky Co.,Ltd. All Rights Reserved.

監視について

21

S3は専用の形式でアクセスログが発行されます。

アクセス解析ツールのようなものはないので自作する必要がありますが、Access等で解析ツールを作れば解析は可能。

出力項目例

• バケット名

• 日時

• ユーザ

• IP

• 対象ファイル

• 処理内容 等

Page 22: 01 awsとsalesforceを使ったエコシステム ファイル編

Copyright © 2014 TerraSky Co.,Ltd. All Rights Reserved.

有効なケース

22

• 動画ファイルを管理したい。

• とにかく膨大な量のファイルがあり、その一部をSalesforceで使いたい。

Page 23: 01 awsとsalesforceを使ったエコシステム ファイル編

Copyright © 2014 TerraSky Co.,Ltd. All Rights Reserved.

こんなことも・・・

23

• S3の画像ファイルを認証キー付URLとIMG関数を使ってSalesforceで表示する。

IMG関数

認証キー付URL

Page 24: 01 awsとsalesforceを使ったエコシステム ファイル編

Copyright © 2014 TerraSky Co.,Ltd. All Rights Reserved.

まとめ

24

• S3の設定はprivateで設定

• 共有設定等はSalesforceに任せる。

• 実ファイルはS3に配置してコストを削減。

Page 25: 01 awsとsalesforceを使ったエコシステム ファイル編

Copyright © 2014 TerraSky Co.,Ltd. All Rights Reserved. Copyright © 2014 TerraSky Co.,Ltd. All Rights Reserved.

25