You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Golang编写的AWS Lambda函数连接Redis ElastiCache

问题解答

  • 不使用EC2实例的连接可行性:AWS ElastiCache Redis默认仅分配VPC内网私有地址,无公网访问入口。如果你使用的Linux环境已经通过VPN、专线、VPC对等连接等方式和Redis所在的VPC网络打通,无需EC2即可直接连接;如果是公网环境下的Linux主机,没有打通VPC网络的话无法直接连接。RDM(Redis Desktop Manager)的连接逻辑一致,只要运行RDM的设备网络能直达Redis私有端点,就可以正常测试连接,否则无法访问。
  • Golang代码中配置Redis端点,需要结合你的ElastiCache配置调整参数:如果你的Redis未开启传输加密(TLS)、未开启AUTH,仅需要填写端点+默认端口6379即可;如果开启了传输加密,需要额外加TLS配置,否则会出现连接超时的问题。
  • 未开启AUTH的情况下,也需要满足两个前提才能仅通过端点连接:一是运行代码的环境和Redis网络互通,二是Redis没有开启传输加密。如果开启了传输加密哪怕没有设置AUTH,也需要在代码中配置TLS参数才能成功连接,否则会出现连接超时/失败的问题。

Golang连接示例

以常用的github.com/go-redis/redis/v8库为例,Lambda处理函数参考实现如下:

未开启TLS、未开启AUTH场景

package main

import (
	"context"
	"github.com/aws/aws-lambda-go/lambda"
	"github.com/go-redis/redis/v8"
)

var redisClient *redis.Client
var ctx = context.Background()

func init() {
	// 替换为你的Redis主节点端点,默认端口为6379
	redisAddr := "xxxxxx:6379"
	redisClient = redis.NewClient(&redis.Options{
		Addr: redisAddr,
		DB:   0, // 使用默认DB
	})
}

func handler() (string, error) {
	// 测试连通性
	pong, err := redisClient.Ping(ctx).Result()
	if err != nil {
		return "", err
	}
	return "Redis连接成功:" + pong, nil
}

func main() {
	lambda.Start(handler)
}

开启传输加密、未开启AUTH场景(超时问题高发场景)

package main

import (
	"context"
	"crypto/tls"
	"github.com/aws/aws-lambda-go/lambda"
	"github.com/go-redis/redis/v8"
)

var redisClient *redis.Client
var ctx = context.Background()

func init() {
	// 替换为你的Redis主节点端点,开启TLS时默认仍使用6379端口,部分特殊配置使用6380
	redisAddr := "xxxxxx:6379"
	redisClient = redis.NewClient(&redis.Options{
		Addr: redisAddr,
		DB:   0,
		TLSConfig: &tls.Config{
			InsecureSkipVerify: false, // 生产环境请勿修改为true,AWS官方证书默认可信
		},
	})
}

func handler() (string, error) {
	pong, err := redisClient.Ping(ctx).Result()
	if err != nil {
		return "", err
	}
	return "Redis连接成功:" + pong, nil
}

func main() {
	lambda.Start(handler)
}

超时问题快速排查

  • 确认Lambda的超时时间设置大于3秒,避免连接还未建立就被Lambda强制终止
  • 确认Redis所在安全组的入站规则,允许Lambda关联的安全组访问6379端口
  • 确认ElastiCache控制台的传输加密配置,和代码中的TLS参数保持一致

内容的提问来源于stack exchange,提问作者rulisastra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 13:24:02