使用cdk从帐户B中的lambda调用帐户A中的步骤函数

2024-07-03 07:45:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我在帐户a中部署了一个lambda堆栈,在帐户B中部署了一个stepfunction堆栈部署器。现在我如何使用python cdk从lambda调用这个stepfunction?具体来说,我需要给他们什么权限


Tags: lambda权限堆栈部署帐户cdkstepfunction
2条回答

lambda(账户A)已分配IAM角色(RoleA)。步骤功能(帐户B)已分配IAM角色(角色B)

权限

  1. lambda的IAM角色应具有从(帐户B)承担该角色的权限

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": "sts:AssumeRole",
          "Resource": "*"
        }
      ]
    }
    
  2. 步骤功能IAM角色(角色B)应具有允许Lambda的IAM角色承担的受信任策略。在以下信任策略中123456789012是帐户A的帐号

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "AWS": [
              "arn:aws:iam::123456789012:root"
            ]
          },
          "Action": "sts:AssumeRole"
        }
      ]
    }
    

lambda内部

  1. lambda应该具有从帐户B承担角色(角色B)并获取临时凭据的代码

  2. 使用这些凭证,lambda应该调用step函数

How to assume an IAM role in a different account from lambda

如果要在cdk部署发生时触发某些事件:

这似乎是一个奇怪的用例,但我认为这里的解决方案是定义一个自定义资源。 cdk和cloudformation都支持:

https://docs.aws.amazon.com/cdk/api/latest/docs/custom-resources-readme.html

https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-custom-resources.html

因为您使用的是自定义资源,所以需要自己进一步处理创建、更新和删除事件。同样,发送完成响应,我建议您使用cfnresponsemodule发回完成响应,否则cdk将无法判断您的自定义资源功能何时完成:

https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-lambda-function-code-cfnresponsemodule.html

相关问题 更多 >