首页 > 解决方案 > 调用参数存储时的 lambda 超时

问题描述

我有一个调用参数存储来检索凭据的 lambda 函数。代码如下:

import boto3
ssm = boto3.client('ssm')
parameter = ssm.get_parameter(Name='credentials', WithDecryption=True)
print(parameter['Parameter']['Value'])

我已将 AmazonSSMFullAccess 授予 lambda 角色。lambda 有一个 VPC,稍后我将使用它连接到 Redshift 数据库,而无需公共访问。入站和出站规则如下: 在此处输入图像描述

有一篇文章AWS Lambda cannot connect to Parameter Store提到如果 lambda 需要 VPC,则添加 NAT 网关。

在 lambda 子网路由表中:在此处输入图像描述似乎已经有一条通往互联网的路由?

但我仍然收到 lambda 超时错误:(

标签: amazon-web-servicesaws-lambda

解决方案


似乎已经有一条通往互联网的路线?

可悲的是,它没有。您似乎将您的 lambda 放置在一个公共子网中,并带有到 Internet 网关 (IGW) 的路由。但是,您必须使用带有到 NAT 网关的路由的私有子网。IGW 和 NAT 是两个不同的东西。看看这个 AWS 指南如何使它工作:

或者,您可以为参数存储设置 VPC 接口端点。然后,您的 Lambda 函数不需要互联网访问。


推荐阅读