【问题标题】:Cross-account access to invoke AWS lambda in CDK跨账户访问以在 CDK 中调用 AWS lambda
【发布时间】:2020-06-18 18:35:27
【问题描述】:

这就是我授予外部 AWS 账户对我的 lambda 调用权限的方式。

    myLambda.grantInvoke(new iam.AccountPrincipal('account_id_b'));

cdk部署

基于资源的策略在控制台中具有以下 json

{
  "Version": "2012-10-17",
  "Id": "default",
  "Statement": [
    {
      "Sid": "generated_Sid",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::account_id_b:root"
      },
      "Action": "lambda:InvokeFunction",
      "Resource": "my_lambda_arn"
    }
  ]
}

我按照https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-cross-account-lambda-integrations.html 此处的步骤创建了可以从 account_id_b 帐户调用此 lambda 的 API 网关。

从 account_id_b 测试 API 网关会产生以下日志:

Fri Mar 06 03:00:07 UTC 2020 : Execution failed due to configuration error: Invalid permissions on Lambda function
Fri Mar 06 03:00:07 UTC 2020 : Method completed with status: 500

我还需要做什么才能正确设置?

【问题讨论】:

    标签: amazon-web-services amazon-cloudformation aws-cdk


    【解决方案1】:

    政策应采用以下形式:

    {
      "Version": "2012-10-17",
      "Id": "default",
      "Statement": [
        {
          "Sid": "what-ever-sid",
          "Effect": "Allow",
          "Principal": {
            "Service": "apigateway.amazonaws.com"
          },
          "Action": "lambda:InvokeFunction",
          "Resource": "my_lambda_arn",
          "Condition": {
            "ArnLike": {
              "AWS:SourceArn": "api_gateway_arn"
            }
          }
        }
      ]
    }
    

    基本上在这里您授予 api 网关服务调用您的函数的权限。 api 可以与您的函数在不同的帐户中。

    为了测试和简单,你可以去掉Condition

    希望这会有所帮助。

    【讨论】:

    • 那行得通。添加 Condition 并没有。这是一个错误?尝试像这样添加:const invokePrincipal = new iam.ServicePrincipal('apigateway.amazonaws.com', { conditions: { ArnLike: { 'AWS:SourceArn': 'arn:aws:execute-api:us-west-2:account_id_b:*/*/GET/' } }
    • @rake 对你有用吗?你介意分享一些代码,即使它是匿名的?我正在尝试配置跨账户授权方,但一直收到错误消息。
    猜你喜欢
    • 1970-01-01
    • 2020-07-17
    • 1970-01-01
    • 1970-01-01
    • 2020-09-08
    • 1970-01-01
    • 2022-01-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多