下面是我的cloudformation脚本:
AWSTemplateFormatVersion: 2010-09-09
Description: An API that proxies requests to another HTTP endpoint
Resources:
MyFunction:
Type: 'AWS::Lambda::Function'
Properties:
Handler: samplefunction.lambda_handler
Runtime: python2.7
Code:
S3Bucket: "ilya-lambdas"
S3Key: "lambda-code.zip"
Role: 'arn:aws:iam::acc-id:role/service-role/basic_lambda_role'
Api:
Type: 'AWS::ApiGateway::RestApi'
Properties:
Name: foo3
Resource:
Type: 'AWS::ApiGateway::Resource'
Properties:
ParentId: !GetAtt Api.RootResourceId
RestApiId: !Ref Api
PathPart: 'test'
RootMethod:
Type: 'AWS::ApiGateway::Method'
Properties:
AuthorizationType: NONE
HttpMethod: ANY
ResourceId: !GetAtt Api.RootResourceId
RestApiId: !Ref Api
Integration:
IntegrationHttpMethod: ANY
IntegrationResponses:
- StatusCode: 200
SelectionPattern: .*
Type: AWS_PROXY
PassthroughBehavior: WHEN_NO_MATCH
Uri: !Join ["", ["arn:aws:apigateway:", "us-east-1", ":lambda:path/2015-03-31/functions/", !GetAtt MyFunction.Arn, "/invocations"] ]
Credentials: 'arn:aws:iam::acc-id:role/service-role/basic_lambda_role'
ProxyMethod:
Type: 'AWS::ApiGateway::Method'
Properties:
HttpMethod: ANY
ResourceId: !Ref Resource
RestApiId: !Ref Api
AuthorizationType: NONE
Integration:
IntegrationHttpMethod: ANY
IntegrationResponses:
- StatusCode: 200
SelectionPattern: .*
Type: AWS_PROXY
Uri: !Join ["", ["arn:aws:apigateway:", "us-east-1", ":lambda:path/2015-03-31/functions/", !GetAtt MyFunction.Arn, "/invocations"] ]
PassthroughBehavior: WHEN_NO_MATCH
Credentials: 'arn:aws:iam::acc-id:role/service-role/basic_lambda_role'
FunctionPermissions:
Type: "AWS::Lambda::Permission"
Properties:
Action: "lambda:InvokeFunction"
FunctionName: !GetAtt MyFunction.Arn
Principal: "apigateway.amazonaws.com"
SourceArn: !Join [ "", ["arn:aws:execute-api:", !Ref "AWS::Region", ":", !Ref "AWS::AccountId", ":", !Ref Api, "/*/*/*" ] ]
Deployment:
DependsOn:
- MyFunction
- RootMethod
- ProxyMethod
Type: 'AWS::ApiGateway::Deployment'
Properties:
RestApiId: !Ref Api
StageName: prod
我已经被困在这一段时间了,任何的指针将非常感谢。
首先,我注意到您的IntegrationHttpMethod
是any
。对于lambda,除非您正在使用{proxy+}
配置,否则请尝试使用post
。我非常肯定CloudFormation文档在这方面仍然是过时的,但是您会在这个答案中找到一些有用的信息。
我注意到的第二件事是错误的代理响应,在您的例子中,这可能只是一个错误配置。为了排除这种情况,AWS支持中心会对错误的代理响应进行处理。基本上,您的lambda响应应该采用以下格式,包括不添加任何额外的键。
{
"isBase64Encoded": true|false,
"statusCode": httpStatusCode,
"headers": { "headerName": "headerValue", ... },
"body": "..."
}
您可以使用支持文档上的示例函数来代替常规函数,以便隔离问题。
我目前在lambda函数和API网关方面遇到了问题。我已经在API网关中启用了代理集成,以便返回Lambda函数的状态代码。现在我有一个问题,调用根本没有执行。错误图片 如果我测试Lambda,一切正常,数据库中的条目将被执行。不通过API网关。 我有什么问题? 非常感谢你的帮助! 测验 编辑: 我将此作为IAM政策添加: 但它仍然带来这个错误:
我有两个代码库。一个定义了一个服务(服务a),它包括一个查询dynamoDB表的AWS lambda。 另外,定义了一个需要调用多个服务lambda的聚合API网关。 API网关使用交叉堆栈引用导入服务A中定义的lambda并为其创建lambda集成: null null 当API被调用时,它会失败,这可能是因为没有向apigateway服务授予invoke权限。 在服务A的aws-cdk项目中,
我正在尝试在我的服务器上安装yeoman,但由于某些原因,我一直收到一个权限被拒绝的错误。 我曾尝试重新安装ubuntu(14.04),但没有任何效果。
在浏览了大量的页面(包括一些SO页面)后(参见下面的列表),我仍然无法通过AWS CLI命令行工具授予我的APIGateway访问权来执行新添加的Lambda函数。 也就是说,我正在尝试复制这个: 我使用以下集成设置创建了一个新的endpoint: 我也尝试过在这些更改之前和之后部署API,但没有效果? PS--我也读过将函数的集成类型更改为POST的建议(参见此URL),但我的要求是有一个GET
我正在尝试安装yii2alpha。下载composer并添加后运行以下命令时 去composer.json. 我得到以下错误。 问题1-在任何版本中都找不到请求的包最低稳定性,包名中可能有输入错误。 问题2-在任何版本中都找不到请求的包yiisoft/yii2 composer,包名中可能有输入错误。 问题3-在任何版本中都找不到请求的包yiisoft/yii2框架,包名中可能有输入错误。 潜在原
同步调用:如果函数被同步调用并被限制,Lambda将返回429错误,调用服务将负责重试。ThrottledReason错误代码解释了您是遇到了功能级节流(如果指定)还是帐户级节流(请参见下面的注释)。每个服务都可能有自己的重试策略。例如,CloudWatch日志会重试失败的批处理多达五次,每次重试之间会有延迟。有关事件源及其调用类型的列表,请参阅支持的事件源。 参考文献 我不确定我对以上句子的理解