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

如何在SST中为所有Lambda函数配置通用角色?

解决SST中Lambda函数复用通用IAM角色的问题

方法一:提前创建通用角色,全局引用

先在SST栈中定义一个包含所有Lambda所需权限的通用IAM角色,之后所有Lambda函数都直接引用这个角色即可。

示例代码:

import { StackContext, Role, Function } from "@serverless-stack/resources";

export default function MyStack({ stack }: StackContext) {
  // 创建通用Lambda角色,配置基础权限
  const commonLambdaRole = new Role(stack, "CommonLambdaRole", {
    assumedBy: "lambda.amazonaws.com",
    permissions: [
      "s3:GetObject",
      "dynamodb:Query",
      // 按需添加所有Lambda共用的权限
    ],
  });

  // 单个Lambda引用通用角色
  new Function(stack, "UserHandler", {
    handler: "src/user.handler",
    role: commonLambdaRole,
  });

  // 批量创建200个Lambda时用循环复用角色
  for (let i = 0; i < 200; i++) {
    new Function(stack, `BatchLambda${i}`, {
      handler: `src/batch/${i}.handler`,
      role: commonLambdaRole,
    });
  }
}

方法二:通过基础配置批量复用

如果需要统一更多Lambda的配置(比如内存、超时),可以先定义一个包含通用角色的基础配置对象,后续所有Lambda都继承这个配置。

示例代码:

import { StackContext, Role, Function } from "@serverless-stack/resources";

export default function MyStack({ stack }: StackContext) {
  // 定义通用角色
  const commonRole = new Role(stack, "CommonLambdaRole", {
    assumedBy: "lambda.amazonaws.com",
    permissions: ["s3:ListBucket", "dynamodb:Scan"],
  });

  // 封装通用Lambda配置
  const baseLambdaConfig = {
    role: commonRole,
    memorySize: 256,
    timeout: 30,
  };

  // 批量创建Lambda时复用配置
  for (let i = 0; i < 200; i++) {
    new Function(stack, `WorkerLambda${i}`, {
      handler: `src/workers/${i}.handler`,
      ...baseLambdaConfig,
    });
  }
}

注意事项

  • 通用角色的权限要覆盖所有Lambda的需求,避免出现权限不足;若个别Lambda需要特殊权限,可在通用角色基础上追加附加权限,或单独为其创建角色(尽量减少单独角色数量)。
  • 遵循最小权限原则,不要给通用角色赋予不必要的权限,降低安全风险。
  • 更新通用角色权限后,所有引用该角色的Lambda会自动生效,无需逐个修改配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 08:53:11