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

如何在AWS Lambda与Serverless Framework中管理Google API凭证?

问题解答

1. Serverless Framework 是否支持从项目外路径复制文件到部署包?

是的,完全支持。你可以通过配置 serverless.yml 的打包规则,将项目外的凭证文件纳入部署包,同时保证源码仓库不包含敏感文件:

  • 核心配置方式:在 package 段中使用 include 或 patterns 指定外部文件路径,支持相对路径(比如上级目录)或绝对路径:
    package:
      # 单文件示例
      include:
        - ../credentials/google-service-account.json
      # 多文件匹配示例
      # patterns:
      #   - "../credentials/*.json"
    
  • 安全保障:将外部凭证路径(比如 ../credentials/)添加到项目根目录的 .gitignore 文件中,避免敏感文件被提交到源码控制。
  • 注意事项:确保本地路径正确,Serverless Framework 会自动解析相对路径;如果使用 CI/CD 部署,要保证部署环境能访问到该外部路径(或在流程中动态生成文件)。

2. 处理此类凭证的更优方案

除了将凭证打包进部署包,还有几种更安全、更易维护的方案:

AWS Secrets Manager

  • 直接将 Google 服务账号的 JSON 字符串存入 Secrets Manager(无需转义),Lambda 运行时通过内置的 boto3 客户端读取:
    import boto3
    import json
    import os
    import tempfile
    
    def get_google_credentials():
        secrets_manager = boto3.client('secretsmanager')
        secret_value = secrets_manager.get_secret_value(SecretId='google-service-account')
        credentials = json.loads(secret_value['SecretString'])
        
        # 将凭证写入临时文件,兼容GOOGLE_APPLICATION_CREDENTIALS环境变量
        with tempfile.NamedTemporaryFile(mode='w', delete=False, suffix='.json') as f:
            json.dump(credentials, f)
        os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = f.name
    
  • 优势:凭证与代码解耦,可单独更新权限、轮换凭证,无需重新部署 Lambda 代码包。

Lambda 层

  • 将 Google 服务账号 JSON 文件打包为独立的 Lambda 层,在 serverless.yml 中配置 Lambda 使用该层:
    functions:
      your-flask-function:
        handler: wsgi_handler.handler
        layers:
          - arn:aws:lambda:us-east-1:123456789012:layer:google-credentials:1
    
  • 优势:层可复用给多个 Lambda,凭证文件与业务代码分离,更新凭证只需重新发布层,无需修改业务代码。

CI/CD 流程动态注入

  • 在 GitHub Actions、GitLab CI 等 CI/CD 工具中,将 Google 服务账号 JSON 作为加密的秘密变量存储,部署阶段动态写入项目目录:
    # GitHub Actions 示例片段
    - name: Inject Google Credentials
      run: echo "${{ secrets.GOOGLE_SERVICE_ACCOUNT_JSON }}" > ./google-service-account.json
    - name: Deploy with Serverless
      run: npx serverless deploy
    
  • 优势:本地开发环境无需存储敏感凭证,部署过程自动化,凭证只在 CI/CD 环境中临时存在。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 15:50:17