【问题标题】:AWS STS temporary credentials InvokeFunction lambda not workingAWS STS 临时凭证 InvokeFunction lambda 不起作用
【发布时间】:2019-12-13 04:41:06
【问题描述】:

我正在为包含以下 lambda 权限语句的用户界面颁发 STS 令牌:

   {
     "Sid" : "AllowUserInvokeLambda",
     "Action": [
        "lambda:InvokeAsync",
        "lambda:InvokeFunction"
     ],
     "Effect": "Allow",
     "Resource": [
         "arn:aws:lambda:us-east-2:*:function:CreateThumbnail",
         "arn:aws:lambda:us-east-2:*:function:ImageScanner"
     ]
   },

当我尝试从浏览器中的 aws-sdk.js 调用该函数时,我收到一条错误消息:

"User: arn:aws:sts::123456789012:assumed-role/test_sts_role/user-12345 is not authorized to perform: lambda:InvokeFunction on resource: arn:aws:lambda:us-east-2:198765432109:function:ImageScanner"

我是否遗漏了该政策中的某些内容?

【问题讨论】:

  • 我不需要我的 lambda 函数来承担其他角色。我需要另一个角色来调用 lambda 函数
  • (除其他外,该链接包括在 lambda 函数内运行的代码,并且权限只允许代码工作 - 我得到的错误意味着它甚至无法运行 lambda 函数)

标签: amazon-web-services aws-lambda aws-sdk aws-sts


【解决方案1】:

我发现了问题,您的保单缺少帐号。应该是这样的,

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowUserInvokeLambda",
      "Action": [
        "lambda:InvokeAsync",
        "lambda:InvokeFunction"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:lambda:ap-southeast-2:012345678901:function:*"
      ]
    }
  ]
}

注意:您还应该将此策略分配给您担任的角色,而不是分配给正在担任的用户。你能确认那部分吗?

参考:https://aws.amazon.com/premiumsupport/knowledge-center/iam-assume-role-cli/

【讨论】:

  • 是这个问题吗?
  • 出于测试目的,我将角色设置为 LambdaFullAccess
  • 我在帖子中包含的策略来自获取临时凭证的请求。还有权限修改运行正常的特定 S3 存储桶。我也首先尝试使用通配函数名称,结果也相同。我最近没有测试过,但我很确定 CreateThumbnail 在之前的测试中运行良好。
  • 顺便说一下LambdaFullAccess没有InvokeFunction
  • LambdaFullAccess 有 lambda:*(这意味着它有 InvokeFunction)
猜你喜欢
  • 1970-01-01
  • 2018-05-25
  • 2017-07-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-17
  • 2017-03-25
相关资源
最近更新 更多