Amazon web services Lambda函数可以';t访问机密管理器
我编写了一个lambda函数来访问数据库,所以第一步是从AWS secrets Manager获取机密。我有一个专用VPC以及与lambda功能相关联的子网、NAT网关和安全组。我还有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”。
secretsmanager.Secret.grantrade(lambda\u exec\u角色)
,因此lambda应该可以访问Secrets管理器
出于某种原因,当我在API网关中测试它时,我在CloudWatch中得到了“errno”:“ETIMEDOUT”和“code”:“NetworkingError”。从API中打印的日志来看,获取机密失败了
我还尝试为Secrets Manager添加VPC端点,如中所示,但仍然出现相同的错误
如果这里有人能帮我或给我一些提示,我将不胜感激
非常感谢 我也曾与一个兰姆达争吵过,因为他得到了秘密内容 您可以尝试以下几种方法: #1确保您有权获取机密值,我将为您提供我的机密值,用于工作配置:
- 允许:secretsmanager:GetSecretValue访问您的机密
- 允许:秘密管理员:描述你的秘密
- 允许:secretsmanager:在所有资源上列出机密
- 切换到无专有网络为您的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中。