python - 由于 lambda 权限问题,AWS Lambda 引发内部服务器错误,尽管权限是通过 boto3 添加的
问题描述
我正在为现有 API 网关和 lambda(它们由 Cloud Formation 创建)创建新的 API 资源和方法。通过 boto3 我正在尝试添加新的资源和方法。还有 lambda 权限。我能够创建所有,我可以确认在 lambda 控制台中添加了 lambda 权限。但是,当尝试调用 API 时,我得到内部服务器错误。
下面的代码
client = boto3.client('apigateway', region_name=region)
client.create_resource(restApiId='api_id',parentId='resource_id', pathPart='resource')
client.put_method(restApiId='api_id',resourceId='resource_id', httpMethod='GET', authorizationType='NONE')
uri = "arn:aws:apigateway:{0}:lambda:path/2015-03-31/functions/{1}/invocations".format(region, lambda_arn)
client.put_integration(restApiId='api_id',resourceId='resource_id', httpMethod='GET',type='AWS',
integrationHttpMethod='GET', uri=uri, passthroughBehavior='WHEN_NO_TEMPLATES',
requestTemplates={'application/json': json.dumps({"statusCode":200})})
lambda_client = boto3.client('lambda', region_name=region)
source_arn = "arn:aws:execute-api:{0}:{1}:{2}/*/GET/odm/users8".format(region, account, api_id)
client.add_permission(FunctionName='my_function_name', StatementId="my-statement-id",
Action="lambda:InvokeFunction", Principal="apigateway.amazonaws.com",
SourceArn=source_arn)
client.create_deployment(restApiId='api_id',stageName='prod')
如果我再次从 API 网关控制台手动将 lambda 与 API 网关集成,一切正常。请让我知道我错在哪里。
解决方案
推荐阅读
- apache-spark - “避免每个集群有多个 Kudu 客户端”是什么意思?
- jquery - 使用 jQuery 会话在页面更改时保持购物车总数
- python - Python PIL 完全删除每个 alpha 通道
- flutter - 间接导出的类不可见
- java - 使用 WebElement 对象检查元素是否存在
- python - 是否有根据带有索引的向量进行排序的 numpy 函数?
- tcl - 如何检查变量的值在 32 位操作系统的 MAX_INT 和 MIN_INT 之间
- php - 为什么 time()-$_SERVER["REQUEST_TIME_FLOAT"] 在 php-cli 中关闭 1 秒?
- javascript - 在 Chrome 扩展中构建 ContextMenu 时如何将变量传递给另一个 HTML 页面?
- mongodb - MongoDB 指南针简单分组查询