使用自定义 http 调用 (curl) 的 AWS Aurora 无服务器 DataApi 访问

问题描述

我正在尝试使用 aurora 无服务器数据 API 功能来减少无服务器应用程序中的数据库连接时间。但是构建客户端需要时间。

我想通过 lambda 调用 rds HTTP 服务来获取/发布数据。

我遇到了一些帖子,但我仍然收到错误,缺少身份验证令牌

https://docs.aws.amazon.com/rdsdataservice/latest/APIReference/API_ExecuteStatement.html

我的示例请求如下是针对 MysqL 的。我已经通过 AWS 云 shell 运行了它。

curl --location --request POST 'https://rds-data.us-west-2.amazonaws.com/Execute' \
--header 'Content-Type: application/json' \
--data-raw '{
"continueAfterTimeout": false,
"database": "demo_data",
"includeResultMetadata": true,
"parameters": [],
"resourceArn": "arn:aws:rds:us-west-2:*******:cluster:rds-serverless",
"schema": "demo_data",
"secretArn": "arn:aws:secretsmanager:us-west-2:******:secret:serverless/user_u-cMt2Q4",
"sql": "select Now()"
}'

解决方法

如果我能推荐一个不同的方法——AWS 已经为你做了很多工作,所以你应该不需要为数据 api 构建自己的访问机制。

例如,您可以从命令行使用 aws cli 应用程序(可用于 macwindowslinux 等)like this 访问数据 API:

aws rds-data execute-statement --resource-arn "arn:aws:rds:us-east-1:123456789012:cluster:mydbcluster" \
--database "mydb" --secret-arn "arn:aws:secretsmanager:us-east-1:123456789012:secret:mysecret" \
--sql "select * from mytable"

为了从 lambda 中访问数据 api,您通常希望为您的 lambda 设置运行的任何语言拉入 sdk,然后使用它们的库来访问数据 api 和其他服务。

如果您在 lambda 中使用命令行是死定的,那么 could even create a lambda layer 包括上面提到的 aws cli,然后使用系统命令以这种方式调用 api,尽管我不推荐它.

希望这些更简单的解决方案之一比 curl 更适合您!

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...