我想编写aws lambda函数以从本地oracle db获取数据并迁移到aurora db。
我尝试过:
var oracledb = require('oracledb-for-lambda');
var os = require('os');
var fs = require('fs');
'use strict';
str_host = os.hostname() + ' localhost\n';
fs.appendFile(process.env.HOSTALIASES,str_host , function(err){
if(err) throw err;
});
但是由于它似乎不起作用,我再次陷入困境。
有人可以告诉我,我的表在oracle db和aurora db中都具有相同的列,我想将oracle形式映射到aurora。如何使用aws lambda在java或python中编写它。
库“ oracledb_for_lambda的大小”大于“ 70 MB”,对于您每次编译并上传到lambda来说,这都非常高。代替它,您可以捆绑该库并将其添加为lambda layer。这样我们就可以将图层直接包含到Lambda中。
创建此捆绑包将是我们的第一步。您需要先创建以下文件夹结构,然后再将其添加到图层中。
现在,在Project文件夹中,创建一个名为“ nodejs”的文件夹,您需要将“ node_modules”文件夹移动到该“ nodejs”文件夹中。然后,将“ lib”文件夹复制到“ / node_modules / oracledb-for-lambda”内部,并将其粘贴到主项目目录的外部。
最后,您将获得如下图所示的文件夹结构。
就是这样,将文件夹中的文件压缩并上传到S3
您可以使用下面的代码进行连接
'use strict';
var os = require('os');
var fs = require('fs');
var oracledb = require('oracledb-for-lambda');
exports.handler = async (event, context) => {
let str_host = os.hostname() + ' localhost\n';
fs.writeFileSync(process.env.HOSTALIASES, str_host, function(err) {
if (err) throw err;
});
var connAttr = {
user: process.env.USERNAME,
password: process.env.PASSWORD,
connectString: process.env.CONNECTION_STRING
};
const promise = new Promise(function(resolve, reject) {
oracledb.getConnection(connAttr, function(err, connection) {
if (err) {
reject({
status: "ERROR"
});
}
resolve({
status: "SUCCESS"
});
});
});
return promise;
}