【问题标题】:AWS Lambda and SQL Server IntegrationAWS Lambda 和 SQL Server 集成
【发布时间】:2020-06-18 13:03:10
【问题描述】:

我的应用程序使用 MS Sql Server。现在在了解了 AWS Lambda 之后,我想将我的应用程序转移到 AWS Lambda 以拥有无服务器架构。

但正如我提到的,应用程序使用 Sql Server。所以我不确定 AWS Lambda 是否支持与 Sql Server 的连接。

任何 cmets/链接都会有所帮助。

【问题讨论】:

  • 您好,您确定 Lambda 是适合此应用程序的环境吗?
  • 你的应用是用什么写的?

标签: sql-server amazon-web-services aws-lambda


【解决方案1】:

这里是一些示例样板,其中 cmets 用于从 Lambda 连接到 MS SQL Server 数据库(假设使用 NodeJS 作为您的语言)。

const sql = require('mssql');

exports.handler = async (event, context, callback) => {

    let lookupValue = event.lookupValue;

    // Take DB Config from environment variables set in Lambda config
    const config = {
        user: process.env.DB_USERNAME,
        password: process.env.DB_PASSWORD,
        server: process.env.DB_SERVER,
        database: process.env.DB_DATABASE,
        options: {
            encrypt: true // Use this if you're on Windows Azure
        }
    }

    try {
        // Open DB Connection
        let pool = await sql.connect(config)

        // Query Database
        let result = await pool.request()
            .input('lookupValue', sql.Int, lookupValue)
            .query('select * from exampleTable where id = @lookupValue');

        // Close DB Connection
        pool.close();

        // The results of our query
        console.log("Results:", result.recordset);

        // Use callback if you need to return values from your lambda function.
        // Callback takes (error, response?) as params.
        callback(null, result.recordset);
    } catch (err) {
        // Error running our SQL Query
        console.error("ERROR: Exception thrown running SQL", err);
    }

    sql.on('error', err => console.error(err, "ERROR: Error raised in MSSQL utility"));
}

注意:您需要将运行 mssql 所需的 node_modules 上传到您的函数。我发现执行此操作的最简单方法是压缩整个文件夹(您的主 [通常是 index.js] 函数文件,以及 package.json 和您的 node_modules 文件夹),然后使用 aws-cli 上传它:

aws lambda update-function-code --function-name your-function-name-here --zip-file your-zipped-project-directory.zip 

最后,确保您的数据库能够接受来自 AWS Lambda 函数的连接。最好的方法是结合使用 AWS 的 VPC、NAT 和弹性 IP 设置 - 此博客文章中描述了其中的示例:https://medium.com/@matthewleak/aws-lambda-functions-with-a-static-ip-89a3ada0b471

【讨论】:

    【解决方案2】:

    是的,您可以从 lambda 连接到 sql server,据我所知,几乎可以连接任何其他数据库。您可以在 lambda 函数中执行的操作几乎没有限制。

    【讨论】:

    • 能否请您分享我可以阅读更多内容的网址。 Lambda 还支持 C#.Net 吗?谢谢
    • Lambda 不支持 C#。目前只有 NodeJS、Java 和 Python。我没有链接,但如果你可以用这 3 种语言中的一种编写代码,你可以在 Lambda 中运行它。
    • 如果我不能用 C# 编写我的 Lambda 函数,那么我如何连接到 SQL DB 呢?是否有任何可用于 JAVA、Python 或 NodeJS 的库可供我使用?
    • 你不需要 C# 来连接到 sql server。这是一个python到sql server的链接,例如:pypi.python.org/pypi/pymssql
    • 我想在这里澄清一下 Lambda 确实支持 c#,但你必须制作一个 .net Core Lambda。好吧,之前的答案没有错,因为 c# 是在 2016 年 12 月 1 日添加的,而那些答案是在 10 月。 aws.amazon.com/blogs/compute/…
    猜你喜欢
    • 1970-01-01
    • 2019-08-01
    • 2020-06-14
    • 1970-01-01
    • 1970-01-01
    • 2023-01-30
    • 2018-08-02
    • 2018-02-22
    • 1970-01-01
    相关资源
    最近更新 更多