Amazon web services Lambda函数可以';t访问机密管理器

Amazon web services Lambda函数可以';t访问机密管理器,amazon-web-services,aws-lambda,amazon-vpc,aws-nat-gateway,secretsmanager,Amazon Web Services,Aws Lambda,Amazon Vpc,Aws Nat Gateway,Secretsmanager,我编写了一个lambda函数来访问数据库,所以第一步是从AWS secrets Manager获取机密。我有一个专用VPC以及与lambda功能相关联的子网、NAT网关和安全组。我还有secretsmanager.Secret.grantrade(lambda\u exec\u角色),因此lambda应该可以访问Secrets管理器 出于某种原因,当我在API网关中测试它时,我在CloudWatch中得到了“errno”:“ETIMEDOUT”和“code”:“NetworkingError”。

我编写了一个lambda函数来访问数据库,所以第一步是从AWS secrets Manager获取机密。我有一个专用VPC以及与lambda功能相关联的子网、NAT网关和安全组。我还有
secretsmanager.Secret.grantrade(lambda\u exec\u角色)
,因此lambda应该可以访问Secrets管理器

出于某种原因,当我在API网关中测试它时,我在CloudWatch中得到了“errno”:“ETIMEDOUT”和“code”:“NetworkingError”。从API中打印的日志来看,获取机密失败了

我还尝试为Secrets Manager添加VPC端点,如中所示,但仍然出现相同的错误

如果这里有人能帮我或给我一些提示,我将不胜感激


非常感谢

我也曾与一个兰姆达争吵过,因为他得到了秘密内容

您可以尝试以下几种方法:

#1确保您有权获取机密值,我将为您提供我的机密值,用于工作配置:

  • 允许:secretsmanager:GetSecretValue访问您的机密
  • 允许:秘密管理员:描述你的秘密
  • 允许:secretsmanager:在所有资源上列出机密
#2我的VPC和子网也有问题。如果设置错误,您将无法调用Secret Manager API

  • 切换到无专有网络为您的lambda和检查,如果你可以得到你的秘密确定。如果有效,则表示VPC/子网配置有问题
  • 检查您的子网配置:
    • 在公共子网上,您可以为secret manager配置特定的端点,尽管我无法使其工作,但我不知道为什么
    • 在专用子网上,您需要配置NAT网关,以便能够调用Secret Manager API

希望有一天它能帮助别人。:)

下面是我如何让它在
serverless.yml
中工作的

AWS参考:

下面的yml显示在路径
resources.resources.YourVPCEndpointNameHere
下:

# Provides access from the VPC to Secrets Manager
# See https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html#vpc-endpoint
Type: AWS::EC2::VPCEndpoint
Properties:
  VpcEndpointType: Interface
  ServiceName: com.amazonaws.#{AWS::Region}.secretsmanager
  PrivateDnsEnabled: true

  # Reference your VPC here
  VpcId: !Ref EC2VPC

  # Reference your subnet ids here
  SubnetIds:
    - !Ref EC2SubnetA
    - !Ref EC2SubnetB
    - !Ref EC2SubnetC

  # Reference your security group(s) here
  SecurityGroupIds:
    - !Ref EC2SecurityGroup

提示:您需要插件
无服务器伪参数
才能使
{AWS::Region}
工作。

在控制台中测试lambda函数时,不使用API网关,它工作吗?还是什么都不起作用?@Marcin不,它也不起作用。它给出了“errorType”:“NetworkingError”,“errorMessage”:“connect ETIMEDOUT”消息。因此,您的lambda vpc集成不正确。您必须检查vpc端点的SSM、nat网关设置、路由表、安全组。与其创建nat网关,不如将Secrets Manager添加到vpc中。