Bluemixのサーバーで固定IPを使う方法について
BluemixとNodejsでLINE BOTを作っているのですが、LINEのほうでIPをwhitelistに登録するところでつまずいてしまいました。
Bluemixは、IPがデプロイの度に変わってしまうらしいので、この記事を参考に、Staticaを用いて擬似的にIPを固定しようとしました。
しかし、「403 error, Access to this API denied due to the following reason: Your ip address [XXX.XX.XXX.XXX] is not allowed to access this API. Please add your IP to the IP whitelist in the developer center.」というようなエラーメッセージが帰ってきて送信することができませんでした。
IPの部分はStaticaのIPと全く違うものでした。
ソースコードは以下のような感じです。
当方、サーバーなどに関する知識が少なく、何が原因か全くわかりません。
どうすれば固定IPが実現できるでしょうか?
const express = require("express");
const bodyParser = require("body-parser")
const request = require("request")
const app = express();
const cfenv = require("cfenv");
const appEnv = cfenv.getAppEnv();
const ChannelAccessToken = "ACCESS TOKEN"
const vcap_services = JSON.parse(process.env.VCAP_SERVICES);
const proxyURL = vcap_services["statica"][0].credentials.STATICA_URL;
app.use(bodyParser.urlencoded({
extended: true
}));
app.use(bodyParser.json())
app.use(express.static(__dirname + "/public"))
app.listen(appEnv.port, "0.0.0.0", function () {
console.log("AppLog: server starting on " + appEnv.url);
});
var headers = {
"Content-Type": "application/json; charset=UTF-8",
"Authorization": "Bearer {" + ChannelAccessToken + "}",
"User-Agent": "node.js"
}
app.post("/", (req, res) => {
var events = req.body["events"]
var replyToken = events[0]["replyToken"]
var type = events[0]["message"]["type"]
var replyText = ""
if (type == "text") {
replyText = events[0]["message"]["text"]
console.log(replyText)
var body = {
"replyToken": replyToken,
"messages": [{
"type": "text",
"text": "Reply Text"
}]
}
var options = {
url: "https://api.line.me/v2/bot/message/reply",
proxy: proxyURL,
headers: headers,
json: true,
body: body
}
request.post(options, (error, response, body) => {
if (!error && response.statusCode == 200) {
console.log("AppLog: success")
}
else {
console.log("AppLog: " + response.statusCode + " error, " + response.body.message)
}
})
}
})