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

使用SST的VPC中Lambda无法访问AWS Systems Manager Parameter Store

问题分析

Lambda部署在VPC内,使用SST的Config.Secret获取密钥时触发超时,注释掉获取配置的代码后恢复正常。核心原因是VPC内的Lambda无法访问存储SST Secret的AWS Secrets Manager服务,导致请求超时。

解决方案

1. 检查Secret Manager VPC端点配置

你提到VPC已有Secret Manager的VPC端点,需确认以下配置:

  • 端点已关联Lambda所在的子网(subnet-XXXXXX)
  • 端点的安全组允许Lambda安全组(sg-XXXXXX)发起的HTTPS(443端口)流量
  • 端点为接口类型,服务名称格式为com.amazonaws.<你的区域>.secretsmanager

2. 验证Lambda安全组的出站规则

确保Lambda使用的安全组包含出站规则:允许HTTPS(443)流量到Secret Manager的VPC端点IP,或AWS Secrets Manager的服务前缀列表(Prefix List)。

3. 确认Lambda权限

SST的bind方法会自动为Lambda添加读取Secrets Manager的权限,但可手动验证:
在AWS控制台查看Lambda执行角色,确认包含secretsmanager:GetSecretValue权限,且目标资源为MONGODB_PROD_URL对应的Secret ARN。

4. 改用SSM Parameter Store(适配你的使用场景)

既然你原本使用Systems Manager Parameter Store,可将SST的Config.Secret替换为Config.Parameter,让密钥存储在SSM中,无需依赖Secret Manager:

修改MyStack.ts代码

import * as ec2 from 'aws-cdk-lib/aws-ec2';
import { Config, Function, StackContext } from 'sst/constructs';

export function MyStack({ stack }: StackContext) {
  const secrets = {
    MONGODB_PROD_URL: new Config.Parameter(stack, 'MONGODB_PROD_URL', {
      type: 'SECRET', // 标记为敏感参数,存储为SecureString
    }),
  };
  const securityGroup = ec2.SecurityGroup.fromSecurityGroupId(stack, 'default', 'sg-XXXXXX');
  const subnet = ec2.Subnet.fromSubnetId(stack, 'my-subnet', 'subnet-XXXXXX');

  const vpc = ec2.Vpc.fromLookup(stack, 'db-vpc', {
    vpcId: 'vpc-XXXXXX',
  });

  const myLambda = new Function(stack, 'hello-function', {
    handler: 'src/functions/hello/handler.main',
    runtime: 'nodejs20.x',
    bind: [secrets.MONGODB_PROD_URL],
    vpc,
    vpcSubnets: {
      subnets: [subnet],
    },
    securityGroups: [securityGroup],
    timeout: 5,
    memorySize: 2048,
    enableLiveDev: true,
  });

  stack.addOutputs({
    LambdaName: myLambda.functionName,
  });
}

同时需为VPC添加SSM Parameter Store的接口端点(服务名称com.amazonaws.<你的区域>.ssm),并配置关联子网和安全组规则,允许Lambda通过端点访问SSM。

handler.ts无需修改,依然使用Config.MONGODB_PROD_URL.toString()获取值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 09:33:32