Lambdaを利用してSalesforceの情報をAPIで取得しようとしたときに、オープンなAPI GatewayのURLにアクセスして実行したときの備忘録です。
IP制限やアクセストークンの保存場所・更新などは考えず、リクエストの結果を取得するためだけに書いたテスト用のコードです。
本番のSalesforceで実行する場合は、それらを考慮する必要があると思います。
今回はDevelopers Editionで試しています。
index.html
var https = require('https'); var case_id = "CASE_ID"; var salesforce_api_token = "ACCESS_TOKEN"; var host = "HOST";//instance_urlのhttps://の後ろ→hoge-dev-ed.my.salesforce.com var path = "/services/data/v47.0/sobjects/Case/" + case_id; exports.handler = async function(event) { console.log(event); var results = await getData(); //getData()の処理が終わってから次の処理を実行する var json = returnJson(results); return json; } //Promise function getData() { return new Promise(resolveFunc); } //Promise resolved function resolveFunc(arg) { https.get(getOptions(), function(res) { var body = ''; res.on('data', function(chunk) { body += chunk; }); res.on('end', function(chunk) { arg(body); }); res.on('error', function(e) { arg(e.message); }); }); } function getOptions() { var options = { "method": 'GET', "host": host, "path": path, "uri": host + path, "headers": { "Content-type": "application/json", "Authorization": " Bearer " + salesforce_api_token// Lambda側に設定して読む場合はprocess.env. salesforce_api_token } }; return options; } //JSONを返す function returnJson(results) { const response = { body: JSON.parse(results), }; return response; } |