我想编写aws lambda函数以从本地oracle数据库中获取数据并迁移到aurora数据库。
我尝试过:
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中编写代码。
答案 0 :(得分:0)
库“ oracledb_for_lambda ”的大小大于 70 MB ,对于您每次编译并上传到lambda来说,这都是很大的。取而代之的是,您可以捆绑库并将其添加为 lambda层。这样我们就可以将图层直接包含到Lambda中。
创建此捆绑包将是我们的第一步。您需要先创建以下文件夹结构,然后再将其添加到图层中。
现在,在Project文件夹中,创建一个名为“ nodejs ”的文件夹,然后您需要将“ node_modules ”文件夹移至该“ nodejs ”文件夹。然后,复制“ / node_modules / oracledb-for-lambda ”中的“ lib ”文件夹,并将其粘贴到主项目目录的外部。
最后,您将获得如下图所示的文件夹结构。
就是这样,将文件夹中的文件压缩并上传到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;
}
答案 1 :(得分:0)
您可以使用 AWS DMS 从一个或多个 Oracle 数据库迁移数据。 以 Oracle 数据库为源,您可以将数据迁移到任何 AWS DMS 支持的目标。 DMS 支持以下 Oracle 数据库版本:
甲骨文企业版
甲骨文标准版
Oracle 快捷版
甲骨文个人版
对于自我管理的 Oracle 数据库,AWS DMS 支持所有 Oracle 版本 10.2 及更高版本(版本 10.x)、11g 的数据库版本 高达 12.2、18c 和 19c。对于 Amazon RDS for Oracle 数据库, AWS 管理,AWS DMS 支持所有 Oracle 数据库版本 版本 11g(版本 11.2.0.4 及更高版本)和高达 12.2、18c 和 19c。
https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html