やりたいこと
Salesforceで扱うデータを耐久性のあるAWSのS3に保管したい。
参考にしたページ
- 公式のチュートリアル
用意したもの
- SalesforceのDeveloper Edition
- AWSアカウント
- apexコードを編集する手段
本記事は以下の環境で記載する。
- Salesforce Developer Edition Winter 2018 (Lightning Experience)
- ForceCode for Visual Studio Code
作業手順
Force.com for Amazon Web Servicesのインストール
"Installing Force for Amazon Web Services"にアクセスし、Install Toolkit from AppExchangeの [1] をクリックしてSalesforceにToolkitをインストール。
リモートサイトの設定
Salesforceにログインし、「設定」→「セキュリティ」→「リモートサイトの設定」と進み、「新規リモートサイト」をクリックする。
なお、リモートサイトのURLはリージョンも指定する形で入力する。
例えば、アジアパシフィック(東京)ならhttps://s3.ap-northeast-1.amazonaws.com
となる。
Force.com for Amazon Web Services の設定
「アプリケーションランチャー」→「AWS Credentials」と進み、「新規」でAWSの資格情報を登録する。
項目 | 値 |
---|---|
Credential Name | 任意の名前 |
Key | IAMユーザのアクセスキー |
Secret | IAMユーザのシークレットアクセスキー |
カスタムオブジェクトの編集
「オブジェクトマネージャ」→「AWS S3 Object」→「ボタン、リンク、およびアクション」→「新規 (の▼) 」→「編集」
「Salesforce Classicの上書き」を以下のように設定。
- 「Visualforceページ」を選択
- 「news3object」を設定
ForceCode for Visual Studio Codeの設定
以下の記事を参考に設定します。
Visual Studio Code で Salesforce 開発環境を作る
apexコードの変更
AWSCredentialName
の変更とリージョン情報
の追記を行う。
classes
- AWS_ExplorerCon.cls
- 3行目
private String AWSCredentialName = '設定したCredential Name; //Modify this string variable to be the name of the AWS Credential record that contains the proper AWS keys and secret
- AWS_S3_ExampleController.cls
- 41行目
- 473行目
private String AWSCredentialName = '任意の名前'; //Modify this string variable to be the name of the AWS Credential record that contains the proper AWS keys and secret
String url = 'http://'+bucketToList+'.s3-ap-northeast-1.amazonaws.com/'+filename+'?AWSAccessKeyId='+as3.key+'&Expires='+Lexpires+'&Signature='+signed;
- S3.cls
- 178行目
- 1407行目
public String endpoint_x = 'https://s3-ap-northeast-1.amazonaws.com/soap';
req.setEndpoint('https://s3-ap-northeast-1.amazonaws.com/soap');
- S3FormController.cls
- 4行目
private String AWSCredentialName = '設定したCredential Name'; //Modify this string variable to be the name of the AWS Credential record that contains the proper AWS keys and secret
pages
- news3object2.page
- 6行目
action="https://s3-ap-northeast-1.amazonaws.com/{!AWS_S3_Object__c.Bucket_Name__c}"
- s3Preview.page
- 3行目
<script>window.location.href="https://s3-ap-northeast-1.amazonaws.com/{!AWS_S3_Object__c.Bucket_Name__c}/{!AWS_S3_Object__c.File_Name__c}";</script>
カスタムオブジェクト
HYPERLINK('https://s3-ap-northeast-1.amazonaws.com/'& Bucket_Name__c &'/'& File_Name__c ,
'https://s3-ap-northeast-1.amazonaws.com/' & Bucket_Name__c &'/'& File_Name__c )
以上です。