如何在Lambda函数中使用PowerShell连接到RDS PostgreSQL数据库?

pkmbmrz7  于 2023-05-28  发布在  PostgreSQL
关注(0)|答案(2)|浏览(169)

我们正在尝试编写一个powershell脚本,可以从Aurora PostgreSQL集群读取数据。我们希望在Lambda dotnetcore3.1环境中完成此操作。我在google空间中没有看到任何文档给出任何关于可以使用什么程序/cmdlet/模块的指示。在Windows中,我们可以使用ODBC驱动程序和/或psql。然而,这两种情况似乎都不存在于Lambda生态系统中。
有没有人使用powershell在Lambda中成功连接到PostgreSQL?如果是的话,你是用什么做的?

bxjv4tth

bxjv4tth1#

我认为核心问题是如何让你的Lambda函数访问RDS PostgreSQL示例,我可以想到两种方法:
1.使用AWS Secretes Manager安全地管理数据库用户名和密码,并在Lambda执行期间通过AWS SDK检索它们:https://aws.amazon.com/blogs/security/how-to-securely-provide-database-credentials-to-lambda-functions-by-using-aws-secrets-manager/
1.使用RDS IAM身份验证向RDS授予Lambda函数访问权限:https://aws.amazon.com/blogs/database/iam-role-based-authentication-to-amazon-aurora-from-serverless-applications/
就我个人而言,我推荐方法#2,尽管在过去我只使用方法#1。

vlju58qv

vlju58qv2#

我在windows上运行powershell时找到了答案。这需要一段时间的整理,但以下是步骤:从npgsql home page开始。从那里,有一个link to the NuGet package。在NuGet页面上,使用下载链接获取软件包(例如:npgsql.7.0.4.nupkg)。一旦你下载了这个包,用.zip扩展名重命名它,打开它并导航到正确的lib子文件夹(例如:将npgsql.dll文件复制到您记得并可以访问的位置(例如:c:\temp)。
类似地,找到Microsoft.Extensions.Logging.Abstractions nuget package。下载软件包并复制相应的.dll文件。
在powershell中,添加-键入两个.dll文件。例如

Add-Type -Path c:\temp\npgsql.dll
Add-Type -Path c:\temp\Microsoft.Extensions.Logging.Abstractions.dll

这些文件足以使本示例运行。其他nuget包可能必须解包才能使所有类型都工作。

add-type -path c:\temp\npgsql.dll
add-type -path c:\temp\Microsoft.Extensions.Logging.Abstractions.dll
$db = [npgsql.npgsqlConnection]::new()
$db.ConnectionString = 'Host=postgre.server; Database=Example; Username=postgre; Password=Example'
$query = $db.CreateCommand()
$query.CommandText = 'select count(*) from public.example'
$cursor = $query.ExecuteReader()
$cursor.Read()
$count = $cursor.GetInt32(0)
$cursor.dispose()
$db.dispose()

相关问题