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

如何使用Serverless Framework部署指定AWS资源?

部署指定AWS资源的解决方案

1. 单资源定向部署(适配现有服务架构)

Serverless Framework支持通过CloudFormation逻辑ID单独部署指定资源,无需执行全量部署:

  • 先在serverless.yml中找到目标资源的逻辑ID(即resources.Resources下的配置键名),比如你的Cognito用户池定义:
    resources:
      Resources:
        MyCognitoUserPool: # 这就是资源逻辑ID
          Type: AWS::Cognito::UserPool
          Properties:
            # 你的具体配置项
    
  • 执行以下命令即可仅部署该资源:
    sls deploy --stack-resource-logical-id MyCognitoUserPool
    
  • 此方法适用于DynamoDB、SQS、Cognito等所有通过CloudFormation定义的资源,能大幅缩短部署耗时。

注意:如果目标资源依赖其他未变更的资源,需确保依赖资源已存在且状态正常,避免部署失败。

2. 拆分服务实现解耦部署

针对你有大量Lambda和多种资源的场景,更推荐将基础设施与业务函数拆分为独立的Serverless服务:

  • 基础设施服务:仅包含Cognito、DynamoDB、SQS等核心资源定义,部署后输出资源的ARN、ID等关键信息:
    # infrastructure/serverless.yml
    resources:
      Resources:
        MyCognitoUserPool:
          Type: AWS::Cognito::UserPool
          # 资源配置...
      Outputs:
        CognitoUserPoolArn:
          Value: !GetAtt MyCognitoUserPool.Arn
          Export:
            Name: ${self:service}-user-pool-arn
    
  • 业务服务:通过CloudFormation导出值引用基础设施资源,仅包含Lambda和API Gateway定义:
    # app/serverless.yml
    functions:
      myFunction:
        handler: handler.main
        environment:
          USER_POOL_ARN: ${cf:infrastructure-service-name.CognitoUserPoolArn}
    
  • 修改基础设施时,仅进入infrastructure目录执行sls deploy;修改Lambda或API时,仅部署app服务,两者独立部署彻底避免全量耗时问题。

3. 局部更新优化技巧

  • 针对API Gateway的变更,可添加--aws-s3-accelerate参数加速静态资源上传,进一步减少部署时间:
    sls deploy --aws-s3-accelerate
    
  • 若仅修改资源属性(而非新增/删除资源),使用--stack-resource-logical-id的部署效率会更高——CloudFormation仅更新该资源的属性,而非重建整个栈。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 08:15:34