[クラウド間連携シリーズ]Force.comとAWS(Amazon Web Services)の連携
Force.comとAWSの連携ツールキット紹介がされていたので、いったい何ができるの?と調べてみました。
Force.com for Amazon Web Services
サーバインフラサービスに過ぎないAWSと何が連携されるんだろうと調べたところ、この連携ツールキットで提供される機能はこんな感じ。
- ApexからS3のAPI経由で、ダイレクトにS3内のファイル参照/編集が可能。S3のファイルをForce.com上で管理できる。
- EC2においてある自分のAWSアカウント内のインスタンス(AMI)を、Force.comのインターフェイス上で参照できる。
- AppExchangeからワンタッチでインストールできる。
つまり、「AWSの管理画面のAPIをApexから叩いて、Force.comのインターフェイス上からAWSを管理する」ということになりそうです。EC2は実際はAMIの稼働状況を参照できるだけなので、メイン機能はS3の管理です。
それなら、普通にAWSの管理画面を使うのと何が違うの?という話になりそうですが、Force.com上から使うことでいくつか便利なこともありそうです。
- Force.com上のレコードの添付ファイルの制限に引っかかるようなファイルを、該当レコードと紐づけながらS3にアップロードする。(Force.comの1添付ファイルは5MBまで。その他Force.comで設定しているセキュリティの制約を受ける)
- Force.com上のワークフローやデータ操作の内容に応じて、自動的にS3のコンテンツを操作できる。
実際問題として便利なポイントは、大容量ファイル置き場という部分に落ち着きそうですが、Force.com連携ということで応用した使い方として例えば、大きくて大量のPDFファイルを添付したい場合で運用に合わせてファイルを削除したりフォルダを移動したり紐付き先レコードを変更したりファイル名を変えたりしたい、なんて複雑なことがしたい場合に便利かもしれません。
では順を追って紹介していきましょう。
[インストールと設定]
Installing Force for Amazon Web Services
こちらの通りに進めればインストールできます。途中でIDE(Eclipse)からApexクラスの編集をしていますが、DeveloperEditionであればブラウザ上からクラスの編集ができます。
[使ってみよう]
実際に使ってみましょう。こちらもあわせて参照ください。
EC2 Console
自分のAWSアカウント内で何らかのインスタンスを起動していると、こんな感じで稼働状況が参照できます。
ちなみにこちらがAWSの管理画面。見れる情報は同じです。
AWS Ecplorer
こんな感じでS3上のファイルが参照できます。各ファイルのサイズや最終更新日など。
S3 Samples
Apex経由でS3の操作ができます。
- S3上のBucket(フォルダみたいなもの)の参照、作成、削除。
- ローカルPCからS3へのファイルアップロード。
- Force.com上のドキュメントからS3へのファイルアップロード。
この画面からのファイルアップロード時の制限として、アップロードできるファイル容量は1ファイル100KBまでです。これはApexのWebサービスリクエストの制約になります。以下の「AWS S3 Object」では、Apexを経由せずに直接ユーザのブラウザからS3にアップロードさせることでこの制約をクリアしています。
AWS S3 Object
この画面は、Force.comのレコードに紐づけながらS3にファイルアップロードするサンプル画面です。このサンプルをカスタマイズすることでForce.comとS3連携の様々な開発が可能になりそうです。
適当な画像をアップロードした図。プレビューの領域はVisualforceページで、S3上にあるファイルを直接開いています。試しにmp3ファイルをおいたら再生が始まりました。直接S3にアップロードされるので容量制限も無く、10MBくらいのファイルをアップしてみましたが10秒くらいでアップできました。
[おまけ]
Google Code force-apex-aws
AMI Force.com PHP Tool Kit