amazon-web-services - 由于配置错误 : Authorizer error,AWS 执行失败

标签 amazon-web-services aws-lambda

我为 API 网关端点创建了 2 个授权方。一个手动使用控制台,另一个使用 boto3。 手动创建的效果很好,但是使用脚本创建的会出现主题行中提到的错误。查看这2个authorizer的内容,是一样的。

可能缺少的部分是什么?我不认为这是对 lambda 的无效权限,因为它在手动配置时在一个授权方上工作。

相同的代码如下:
响应 = client.create_authorizer(
               restApiId=apiid,
               名称=授权名称,
               类型=' token ',
               authType='自定义',
               authorizerUri=authorizerUri,
               ##arn:aws:apigateway:us-west-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-west-2::function:CustomAuthorizer/调用
               identitySource='method.request.header.Authorization',
               identityValidationExpression='.*',
               authorizerResultTtlInSeconds=300
           )

获取错误: 2016 年 7 月 18 日星期一 11:53:04 UTC:由于配置错误导致执行失败:Lambda 函数的权限无效 2016 年 7 月 18 日星期一 11:53:04 UTC:由于配置错误导致执行失败:授权者错误 2016 年 7 月 18 日星期一 11:53:04 UTC:AuthorizerConfigurationException

最佳答案

刚刚进入这个兔子洞,遇到了一个解决方案(使用 boto3 和 python,希望它在不同的 sdk 中是相似的)。

问题是,当您通过控制台手动创建它时,会出现一个弹出窗口,要求启用 api 网关(确切地说是这个特定的授权方)作为您作为授权方使用的 lambda 函数的触发器。通过 sdk 执行时,显然没有弹出窗口,因此授权方无权调用该 lambda。

您可以通过两种方式启用权限:

  1. 在 lambda 中,在设计器面板中为您的授权方创建一个新触发器。指定一个 API 和阶段应该可以解决问题
  2. 创建一个将处理此权限的角色。授予它调用 lambda 的权限(您可以使用 AWSLambdaRole 模板角色)并确保将 api-gateway 添加为受信任的实体以在“信任关系”选项卡中使用此角色。您的政策应如下所示:

{“版本”:“2012-10-17”,“声明”:[{“效果”:“允许”,“主体”:{“服务”:“apigateway.amazonaws.com”} ,"Action": "sts:AssumeRole"}]}

现在,当使用 sdk 创建自定义授权器时,您必须提供一个 authorizerCredentials 参数,该参数被描述为“(字符串)指定所需的凭证作为 API 网关调用授权器的 IAM 角色。要指定一个 IAM API 网关承担的角色,使用角色的 Amazon 资源名称 (ARN)。要对 Lambda 函数使用基于资源的权限,请指定 null。”。

复制您新创建的角色的 arn 并将其用作 authorizerCredentials 参数的值。

中提琴!您现在拥有一个自定义授权方,该授权方可以使用允许它调用 lambda 函数的角色!

(抱歉格式不好,我不经常评论 :D)

关于amazon-web-services - 由于配置错误 : Authorizer error,AWS 执行失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38436444/

相关文章:

node.js - 在 AWS EC2 Ubuntu 实例上通过 iptables 重定向端口

linux - 使用 AWS cli 解析来自 AWS secret 管理器的 secret

linux - Amazon Linux AMI 上的 AWS Cloudformation cloud-init 在 util.py 中失败

python - AWS sam build 不构建 lambda 函数

amazon-web-services - 如何监控所有 aws lambda 函数执行是否正确完成

javascript - 为什么从未填充 AWS.Lambda.invoke `error` 回调参数?

amazon-web-services - 为 AWS 负载均衡器分配静态 IP 地址

java - AWS : Sending email through SES from Lambda

mysql - Lambda NodeJS MySQL 任务超时

java - 使用 AWS Secrets Manager 管理 RDS 访问