【问题标题】:How to connect Golang Lambda function with Redis Elasticache AWS如何将 Golang Lambda 函数与 Redis Elasticache AWS 连接
【发布时间】:2021-11-08 22:33:54
【问题描述】:

我是 golang 新手。

我一直在寻找 lambda-golang-AWS 的 documentation,但在调用该函数时仍然出现此超时。

我一直在配置:

  1. Elasticache 集群(1 个主节点),
  2. VPC(用于 redis 和 lambda 的同一 VPC),
  3. 安全组,
  4. 子网,
  5. 入站和出站,
  6. 角色

我有这个主要的 Redis 端点 xxxxxx

我只需要一个例子。

所以,我的问题是:

  1. 我们可以在没有 EC2 实例的情况下在 Linux 中连接 Redis 吗?可以尝试使用 RDM。
  2. 我们如何将AWS redis的endpoint放到main函数中? (我们只需要端点吗?或者其他)
  3. 是否可以仅使用端点(无 AUTH)连接到 Redis Elasticache?

非常感谢!

【问题讨论】:

  • 您可以利用 lambda 执行角色。你有tried this吗?
  • @nitrin0 执行角色只是在 VPC 中部署 Lambda 函数的一部分,仅此一项并不能为其提供特殊的 Redis 访问权限。
  • @MarkB 我的印象是这样做就足够了(意思是:允许 lambdas 访问 VPC 中的资源,即弹性缓存),但我会在一个较旧的项目中查看我的设置。感谢您的提醒!
  • 谢谢@nitrin0。从链接中,我正在添加角色但仍然超时。我想知道......这是否意味着,我需要设置 NAT 网关才能使用 go.mod 中的外部模块列表?连接到 Redis 集群有关系吗?
  • @rulisastra 我不确定你所说的外部模块是什么意思。您必须在 Lambda 函数的部署包中包含所有模块。在 Lambda 函数开始运行后,您无法在它中下载和安装东西,因为文件系统是只读的。

标签: linux api go aws-lambda redis


【解决方案1】:

我们可以在没有 EC2 实例的情况下在 Linux 中连接 Redis 吗?

是的,当然,为什么 EC2 实例是额外的要求?您只需在 Lambda 函数的部署工件中包含一个 Redis 客户端库,并将 Elasticache 集群配置为允许来自分配给 Lambda 函数的安全组的入站流量。

我们如何将 AWS redis 的端点放在 main 函数中? (我们只 需要端点?否则)

我会将端点配置为 Lambda 函数的环境变量之一。

是否可以仅使用端点连接到 Redis Elasticache (没有 AUTH)?

如果您没有在 Elasticache 上启用 AUTH,那么您可以在没有 AUTH 的情况下进行连接。 AUTH 是一个可选的配置设置。

【讨论】:

  • 感谢您的确认!这有助于限制我的选择。我当然将它包含在 env 中,但仍然超时。你有关于在 golang 上实现配置的文档吗?
猜你喜欢
  • 2020-06-20
  • 2017-05-23
  • 2022-10-20
  • 2016-07-13
  • 2020-03-31
  • 2020-11-01
  • 2018-12-04
  • 2017-06-08
  • 2018-05-21
相关资源
最近更新 更多