我有一个用复合主体定义的角色,但我不能添加我的Lambda函数,因为没有非空断言,例如,this失败:

assumedBy: new CompositePrincipal(
                ...
                new ArnPrincipal(this.cleLambdaFunction.role?.roleArn!)
            ),

如何将lambda函数的角色添加到assumbedBy/CompositePrincipal? 在定义了目标角色之后,我可以让我的Lambda功能角色承担我的目标角色吗?我想知道有没有像这样工作的方法

onboardingLambdaCle.lambdaFunc.lambdaFunction.role?.assumeRole(targetRole.roleArn);

推荐答案

我建议您利用TypeScrip control flow analysis,只需像这样判断属性的存在:

import { CompositePrincipal, ArnPrincipal } from 'aws-cdk-lib/aws-iam';
import { Function } from 'aws-cdk-lib/aws-lambda';

declare const func: Function;

if (func.role) {
    const assumedBy = new CompositePrincipal(
        new ArnPrincipal(func.role.roleArn)
    )
}

TypeScript playground

Typescript相关问答推荐

为什么在将条件返回类型的字符串赋给数字时没有类型错误?

Angular -使用Phone Directive将值粘贴到控件以格式化值时验证器不工作

脉轮ui打字脚本强制执行图标按钮的咏叹调标签-如何关闭

如何在ts中使用函数重载推断参数类型

带有联合参数的静态大小数组

参数类型undefined不能分配给参数类型字符串|未定义

如何访问Content UI的DatePicker/中的sx props of year picker?'<>

使用泛型keyof索引类型以在if-condition内类型推断

对扩展某种类型的属性子集进行操作的函数

如何以Angular 形式显示验证错误消息

TS2339:类型{}上不存在属性消息

为什么不能使用$EVENT接收字符串数组?

在数据加载后,如何使用NgFor在使用异步管道的可观测对象上生成子组件?

如何使所有可选字段在打印脚本中都是必填字段,但不能多或少?

在类型脚本中将泛型字符串数组转换为字符串字母并集

我怎样才能正确地输入这个函数,使它在没有提供正确的参数时出错

map 未显示控制台未显示任何错误@reaction-google-map/api

为什么`map()`返回类型不能维护与输入相同数量的值?

使用NextJS中间件重定向,特定页面除外

当并非所有歧视值都已知时,如何缩小受歧视联盟的范围?