【发布时间】:2020-02-16 12:18:32
【问题描述】:
显然,我已达到与 aws-cognito 和 aws-api-gateway 一起使用的 lambda 函数的策略限制:
The final policy size is bigger than the limit (20480)
所以我的 lambda 函数充满了来自 api 网关的所有允许的端点,f.e.:
{
"Sid": "eff74414-a6bd-4520-bf67-691ced3245d5",
"Effect": "Allow",
"Principal": {
"Service": "apigateway.amazonaws.com"
},
"Action": "lambda:InvokeFunction",
"Resource": "arn:aws:lambda:eu-central-1:ID:function:FUNCTION",
"Condition": {
"ArnLike": {
"AWS:SourceArn": "arn:aws:execute-api:eu-central-1:ID:API_ID/*/GET/company"
}
}
},
{
"Sid": "6d52e172-84b6-4196-b924-f83b78153bc5",
"Effect": "Allow",
"Principal": {
"Service": "apigateway.amazonaws.com"
},
"Action": "lambda:InvokeFunction",
"Resource": "arn:aws:lambda:eu-central-1:ID:function:FUNCTION",
"Condition": {
"ArnLike": {
"AWS:SourceArn": "arn:aws:execute-api:eu-central-1:ID:API_ID/*/GET/companies"
}
}
},
...
我知道有一种方法可以整合这些,使用 aws cli,f.e.:
aws lambda add-permission --function-name 'FUNCTION' --statement-id '7bd8e791-7d28-41d0-9ebd-7e2596574fd5' --action "lambda:InvokeFunction" --principal "apigateway.amazonaws.com" --source-arn "arn:aws:execute-api:eu-central-1:ID:API_ID/*/GET/*/*/*" --source-account "ID" --region 'eu-central-1'
虽然我可以添加这个权限,但它是无效的:
ID 为 API_ID 的 API 不包含路径为 ///* 的资源在 GET 方法上集成了 arn:aws:lambda:eu-central-1:ID:function:FUNCTION。
那么我可以做些什么来整合我的所有 api 权限?
【问题讨论】:
-
看来您应该尝试 arn:aws:execute-api:eu-central-1:ID:API_ID/*/GET/* 而不是 arn:aws:execute-api:eu-central -1:ID:API_ID/*/GET/*/*/*
标签: amazon-web-services aws-lambda aws-api-gateway amazon-cognito