AWS Lambda将数据从oracle db迁移到Aurora

问题描述 投票:0回答:1

我想编写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中编写它。

oracle amazon-web-services amazon-rds-aurora aws-aurora
1个回答
0
投票

库“ oracledb_for_lambda的大小”大于“ 70 MB”,对于您每次编译并上传到lambda来说,这都非常高。代替它,您可以捆绑该库并将其添加为lambda layer。这样我们就可以将图层直接包含到Lambda中。

创建此捆绑包将是我们的第一步。您需要先创建以下文件夹结构,然后再将其添加到图层中。

现在,在Project文件夹中,创建一个名为“ nodejs”的文件夹,您需要将“ node_modules”文件夹移动到该“ nodejs”文件夹中。然后,将“ lib”文件夹复制到“ / node_modules / oracledb-for-lambda”内部,并将其粘贴到主项目目录的外部。

最后,您将获得如下图所示的文件夹结构。

Final folder sctructure

就是这样,将文件夹中的文件压缩并上传到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;
}
© www.soinside.com 2019 - 2024. All rights reserved.