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

如何通过AWS CDK为Lambda函数添加AWSStepFunctionsFullAccess托管策略

在AWS CDK中为Lambda添加AWSStepFunctionsFullAccess托管策略

要替换手动定义的权限策略,直接给Lambda的执行角色添加AWS托管策略AWSStepFunctionsFullAccess即可,具体实现分两种场景:

场景1:Lambda使用自定义创建的角色

如果你手动创建了Lambda的执行角色,直接给该角色添加托管策略:

import * as cdk from 'aws-cdk-lib';
import * as lambda from 'aws-cdk-lib/aws-lambda';
import * as iam from 'aws-cdk-lib/aws-iam';
import { Construct } from 'constructs';

export class YourStack extends cdk.Stack {
  constructor(scope: Construct, id: string, props?: cdk.StackProps) {
    super(scope, id, props);

    // 1. 创建Lambda执行角色
    const lambdaRole = new iam.Role(this, 'MachineLambdaRole', {
      assumedBy: new iam.ServicePrincipal('lambda.amazonaws.com'),
      // 可添加Lambda基础日志权限
      managedPolicies: [
        iam.ManagedPolicy.fromAwsManagedPolicyName('service-role/AWSLambdaBasicExecutionRole')
      ]
    });

    // 2. 添加AWSStepFunctionsFullAccess托管策略
    lambdaRole.addManagedPolicy(
      iam.ManagedPolicy.fromAwsManagedPolicyName('AWSStepFunctionsFullAccess')
    );

    // 3. 创建Lambda并关联该角色
    const MachineLambda = new lambda.Function(this, 'MachineLambda', {
      runtime: lambda.Runtime.NODEJS_20_X,
      code: lambda.Code.fromAsset('path/to/your/lambda/code'),
      handler: 'index.handler',
      role: lambdaRole
    });
  }
}

场景2:Lambda使用自动生成的角色

如果创建Lambda时未指定自定义角色,CDK会自动生成执行角色,此时通过Lambda实例的role属性获取角色并添加托管策略:

import * as cdk from 'aws-cdk-lib';
import * as lambda from 'aws-cdk-lib/aws-lambda';
import * as iam from 'aws-cdk-lib/aws-iam';
import { Construct } from 'constructs';

export class YourStack extends cdk.Stack {
  constructor(scope: Construct, id: string, props?: cdk.StackProps) {
    super(scope, id, props);

    // 创建Lambda函数(自动生成执行角色)
    const MachineLambda = new lambda.Function(this, 'MachineLambda', {
      runtime: lambda.Runtime.NODEJS_20_X,
      code: lambda.Code.fromAsset('path/to/your/lambda/code'),
      handler: 'index.handler'
    });

    // 给自动生成的角色添加托管策略
    MachineLambda.role?.addManagedPolicy(
      iam.ManagedPolicy.fromAwsManagedPolicyName('AWSStepFunctionsFullAccess')
    );
  }
}

注意事项

  • 删除你之前手动定义PolicyStatement并调用addToRolePolicy的代码,避免权限重复。
  • 确保已导入aws-cdk-lib/aws-iam模块,否则无法使用ManagedPolicy相关API。
  • 可选链操作符?.用于处理自动生成角色可能为undefined的情况,若确认角色一定存在,也可直接调用MachineLambda.role.addManagedPolicy(...)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 16:31:14