【问题标题】:TypeScript - Indirect self-referencingTypeScript - 间接自引用
【发布时间】:2022-11-04 20:44:28
【问题描述】:

我正在为 AWS 构建我的第一个 CDK 代码,它使用 Typescript。

我收到以下错误:

“IAMManagedPolicy4”隐含类型为“任何”,因为它没有 类型注释,并在其自身中直接或间接引用 初始化器。”

代码如下所示:

const IAMManagedPolicy4 = new iam.CfnManagedPolicy(this, 'IAMManagedPolicy4', {
        managedPolicyName: IAMRole28.ref,
        path: "/" });


const IAMRole28 = new iam.CfnRole(this, 'IAMRole28', {
        managedPolicyArns: [
            "arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole",
            IAMManagedPolicy4.ref
        ]});

这是由Former2 生成的,它导出以TypeScript 格式的CDK 代码。但我猜错误存在是因为这两个元素在一个循环中相互引用。如何避免错误?

【问题讨论】:

    标签: typescript aws-cdk aws-devops


    【解决方案1】:

    是的,你有一个循环依赖。前 2 很棒,但有时可能会出现问题。

    我建议将两者组合成一个实例。 像这样的东西应该可以工作(我认为这是 lambda 的角色):

    const cfnRole = new iam.CfnRole(this, 'cfnRole', {
        assumeRolePolicyDocument: {
            Version: '2012-10-17',
            Statement: [
              {
                Sid: '',
                Effect: 'Allow',
                Principal: {
                  Federated: 'lambda.amazonaws.com',
                },
                Action: 'sts:AssumeRole',
              },
            ],
          },
        // the properties below are optional
        description: 'description',
        managedPolicyArns: ['arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole'],
        path: '/',
      });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-16
      • 2016-11-15
      • 2013-02-17
      • 2017-02-06
      • 2021-08-12
      • 2022-07-22
      相关资源
      最近更新 更多