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

Lambda触发的Micronaut应用无法从AWS Secrets Manager获取属性求助

解决Micronaut Lambda应用无法从AWS Secrets Manager获取配置的问题

问题概述

当前遇到连接超时错误:

Unable to execute HTTP request: Connect to secretsmanager.eu-central-1.amazonaws.com:443 [secretsmanager.eu-central-1.amazonaws.com/ipaddress, secretsmanager.eu-central-1.amazonaws.com/ipaddress] failed: connect timed out", "errorType": "software.amazon.awssdk.core.exception.SdkClientException"

场景:基于Micronaut的AWS Lambda函数,需从Secrets Manager的/config/micronautguide/details中获取menuEventTest: testingData配置项,现有配置及代码如下:

现有配置与代码

bootstrap.yml

micronaut:
  config-client:
    enabled: true
  application:
    name: micronautguide
aws:
  secretsmanager:
    secrets:
      - secret-name: /config/micronautguide/details

application.yml

menuEventTest: ${menuEventTest}

Micronaut代码

public class FunctionRequestHandler extends MicronautRequestHandler<Object, Object> {
  private static final Logger LOG = LoggerFactory.getLogger(FunctionRequestHandler.class);
  @Value("${menuEventTest}")
  private String menuEventTest;
  
  @Override
  public Object execute(Object payload) {
    LOG.info("Request menuEvent: {} ", menuEventTest);
    return null;
  }
}

依赖

implementation("io.micronaut.aws:micronaut-aws-secretsmanager")
implementation("io.micronaut.aws:micronaut-function-aws")

解决方案

1. 修正Lambda网络配置(核心解决超时问题)

超时的核心原因是Lambda无法访问Secrets Manager的端点,分两种情况处理:

  • Lambda配置了VPC:
    • 给VPC添加Secrets Manager的Interface类型VPC端点(服务名称com.amazonaws.eu-central-1.secretsmanager),确保子网能通过内网访问Secrets Manager。
    • 确保Lambda所在安全组允许出站443端口到VPC端点的IP范围。
  • 无需VPC:
    • 将Lambda的VPC配置改为无VPC,默认Lambda有访问AWS公共服务的权限,可直接连接Secrets Manager。

2. 配置正确的IAM权限

给Lambda执行角色添加Secrets Manager读取权限,示例策略:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "secretsmanager:GetSecretValue",
      "Resource": "arn:aws:secretsmanager:eu-central-1:<你的账号ID>:secret:/config/micronautguide/details-*"
    }
  ]
}

注意:Secret的ARN后缀可能带有随机字符,需匹配实际ARN。

3. 优化Micronaut配置

  • 显式指定AWS区域,避免自动探测失败:
    aws:
      region: eu-central-1
      secretsmanager:
        secrets:
          - secret-name: /config/micronautguide/details
    
  • 移除application.yml中冗余的menuEventTest: ${menuEventTest}配置,@Value可直接从Secrets Manager注入值。

4. 确认Secret格式有效性

确保Secrets Manager中的Secret值为JSON格式:

{
  "menuEventTest": "testingData"
}

纯文本格式无法被Micronaut解析为键值对,必须使用JSON结构。

5. 验证依赖版本兼容性

确保micronaut-aws-secretsmanager、micronaut-function-aws与Micronaut核心版本保持兼容,避免SDK调用异常。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 03:57:46