当前位置: 首页 > 知识库问答 >
问题:

使用AWS RDS代理的序列

凌蕴藉
2023-03-14

我正在尝试在我的lambda上使用AWS RDS代理来代理我们的数据库(Aurora MySQL)。我找不到 Sequelize 的任何具体说明,但似乎 RDS 代理工作所需要的只是创建一个签名者,使用它来获取我的令牌,然后将令牌作为我的密码传递给 Sequelize 构造函数

const signer = new RDS.Signer({
  region: process.env.REGION,
  hostname: process.env.DB_PROXY_ENDPOINT,
  port: 3306,
  username: process.env.DB_PROXY_USERNAME,
});

const token = signer.getAuthToken({
  username: process.env.DB_PROXY_USERNAME,
});

const connection = new Sequelize(process.env.DB_DATABASE, process.env.DB_PROXY_USERNAME, token, {
  dialect: 'mysql',
  host: process.env.DB_HOSTNAME,
  port: process.env.DB_PORT,
  pool: {
    acquire: 15000,
    idle: 9000,
    max: 10
  },
});

RDS 代理已附加到我的 lambda,我可以记录令牌,但是一旦我对数据库发出请求,我的连接就会超时。有谁知道我在此设置中是否可能缺少某些内容?

共有1个答案

薛弘阔
2023-03-14

以下是我如何使用 MySql 从 AWS Lambda 连接到 RDS 代理(在打字稿中)

import { APIGatewayProxyEvent, APIGatewayProxyResult } from "aws-lambda";
import { Signer } from "@aws-sdk/rds-signer";
import { Sequelize } from "sequelize";

//other code

const signer = new Signer({
  hostname: host
  port: port,
  region: region,
  username: username,
});

const sequelize = new Sequelize({
  username,
  host,
  port,
  dialect: "mysql",
  dialectOptions: {
    ssl: "Amazon RDS",
    authPlugins: {
      mysql_clear_password: () => () => signer.getAuthToken(),
    },
  },
});

// some more code

您的连接超时可能是由于一些身份验证错误,可能是您传递令牌的方式。我会仔细检查您的RDS代理IAM角色对数据库用户凭据的机密管理器资源是否具有< code > Secrets Manager:GetSecretValue 权限,以及对用于加密机密的密钥是否具有< code>kms:Decrypt权限。并且您的lambda(或者您的代码在其中运行的任何上下文)具有< code>rds-db:connect权限。

注意:这不包括连池选项,我仍在尝试弄清楚如何优化它。查看AWS Lambda文档中的使用续集以获取开始的地方。

 类似资料:
  • 13.1 代理服务的介绍: 我们在做爬虫的过程中经常最初爬虫都正常运行,正常爬取数据,一切看起来都是美好,然而一杯茶的功夫就出现了错误。 如:403 Forbidden错误,“您的IP访问频率太高”错误,或者跳出一个验证码让我们输入,之后解封,但过一会又出现类似情况。 出现这个现象的原因是因为网站采取了一些反爬中措施,如:服务器检测IP在单位时间内请求次数超过某个阀值导致,称为封IP。 为了解决此

  • 本文向大家介绍webpack proxy 使用(代理的使用),包括了webpack proxy 使用(代理的使用)的使用技巧和注意事项,需要的朋友参考一下 为什么要写篇文章 这两天的开发中遇到一些需要代理才能解决的问题, 在这里记录一下, 方便以后的查阅. 为什么要用代理 跨域 在开发过程中, 我们的开发环境一般都是http:// localhost, 但是如果需要请求的数据不在本地, 那么我们就

  • 本文向大家介绍Java中的代理原理及代理使用示例,包括了Java中的代理原理及代理使用示例的使用技巧和注意事项,需要的朋友参考一下 今天再测试Socket编程时,无法连接外网。公司用的是Http的代理。上网搜索也没看太懂,所以花了大量时间来学习。看了HTTP和TCP协议的关系好,才有所明白。现在能通过Socket使用HTTP代理了,结果很简单,过程却好难。 1. 先简要说说HTTP和TCP(具体内

  • http代理 <?php $http = HttpRequest::newSession(); $response = $http->proxy('127.0.0.1', 808) // 常见的http代理这样用 ->get('https://www.baidu.com/'); $content = $response->body(); // 网页源码 sock

  • 我有代理反应应用程序的问题。目标:我有两个反应应用,第一个应用在localhost:3000,第二个在localhost:3001。我想要什么?= 然后url将从localhost:3000更改为localhost:3000/app2,第二个react应用程序将显示url localhost:3001中包含的内容。 我导入了http代理中间件库,并创建了src方向文件setupProxy。js和内

  • 随着家庭网络的增长,我发现我想从外部世界获得更多的访问,这似乎要求我在路由器中扩展到端口转发之外。我有几个系统(大部分是虚拟化的)使用端口80和443(大部分),我不能将这些端口转发到多个IP地址。这就是我打算使用反向代理的地方。 我正在运行Apache2的Ubuntu12.04 LTS系统上测试这一点。我已经在/etc/apache2/sites中创建了一个名为reverseprox的文件,可用

  • 假设您想对某个网站执行https请求,但中间有一个代理。 上述代理不查看请求,只是在用户代理使用HTTP连接方法后将所有流量中继到实际的HTTPS服务器(如中所示http://www.web-cache.com/Writings/Internet-Drafts/draft-luotonen-web-proxy-tunneling-01.txt)。 现在我的问题是:在代理打开到目标Web服务器的SS

  • 连接到上游时,我收到一个nginx错误。 我已经阅读并应用了导致504网关超时问题的Nginx反向代理。然而,我的情况略有不同,因为我有三个endpoint要代理。 我的nginx.conf: 我的"/"和带有端口: 8080代理的应用程序是预期的,但是我的带有端口: 8000的应用程序没有代理,并且得到了上面提到的超时异常。如果我尝试用端口请求应用程序: 8000,应用程序会按预期工作。 什么可