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;
}
|





































