[SFDC][AWS]S3上の非公開ファイルにアクセスするためのPre-Signed URLをApexで生成する(v4)

メモ〜

S3上の非公開ファイルをSalesforceの画面に表示させる必要が生じました。
AWSには、APIのアクセスキーと秘密キーをもとに計算した署名情報をファイルのURLにクエリ文字列として引っ付けてリクエストすると一時的に認証してくれる便利な機能がありまして、これを利用しようと思いました。
http://docs.aws.amazon.com/ja_jp/general/latest/gr/sigv4-add-signature-to-request.html

結構前に書いたAmazonS3とSalesforceの連携方式の検討みたいなエントリで同じようなことやった記憶があったので余裕でしょと思ってたらAWSの署名方式が変わっていて通用しなくなっていました。。最新の方式(AWSSignatureVersion4)を調べつつ実装しました。

公式ドキュメントに従って実装したらできました。
http://docs.aws.amazon.com/ja_jp/AmazonS3/latest/API/sigv4-query-string-auth.html

こんな感じ。

{BUCKET_NAME}、{REGION_NAME}、{ACCESS_KEY_ID}、{SECRET_KEY}などはカスタムメタデータにでも登録しておけば良いのではないでしょうか。


コメントを残す