如何在AWS Amplify Lambda后端的SAM模板中用参数替换MongoDB连接字符串?
AWS Amplify Lambda 替换硬编码MongoDB连接字符串为SSM参数配置方案
核心修改内容
将Lambda函数的硬编码MongoDB连接字符串,替换为AWS SSM参数存储的引用,同时为Lambda添加读取SSM参数的权限。
修正后的template.yaml片段
Resources: authenticateFunction: Type: AWS::Lambda::Function Properties: Handler: src/handlers/authenticate.handler Runtime: nodejs18.x Environment: Variables: # 引用SSM参数,替换为你的参数路径和版本号 MONGODB_CONNECTION_STRING: !Sub '{{resolve:ssm:/amplify/your-project/env/prod/mongodb-connection-string:1}}' Role: !GetAtt LambdaExecutionRole.Arn LambdaExecutionRole: Type: AWS::IAM::Role Properties: AssumeRolePolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Principal: Service: lambda.amazonaws.com Action: sts:AssumeRole Policies: - PolicyName: LambdaSSMAccessPolicy PolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Action: - ssm:GetParameter Resource: !Sub 'arn:aws:ssm:${AWS::Region}:${AWS::AccountId}:parameter/amplify/your-project/env/prod/mongodb-connection-string'
关键说明
- SSM参数引用:
!Sub '{{resolve:ssm:/path/to/your/parameter:version}}'中的路径和版本号需替换为你实际创建的SSM参数路径,版本号可选(不填默认取最新版本)。 - IAM权限:必须为Lambda执行角色添加
ssm:GetParameter权限,且资源范围限定到目标SSM参数的ARN,遵循最小权限原则。 - 提前创建SSM参数:需先在AWS SSM参数存储中创建对应的字符串类型参数(建议选安全字符串加密存储),存储你的MongoDB连接字符串。
内容的提问来源于stack exchange,提问作者Manny
相关产品推荐
相关产品推荐

