由于Lambda权限问题,AWS Lambda引发内部服务器错误,尽管权限是通过boto3添加的

2024-05-16 18:18:27 发布

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

我正在为现有的API网关和lambda创建新的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网关集成,那么一切都会正常工作。 请让我知道我错在哪里


Tags: lambdanameclientapiid网关geturi