【发布时间】:2018-06-02 04:00:22
【问题描述】:
我们使用 Cloud Formation 来定义一堆 Lambda 函数:
AWSTemplateFormatVersion: '2010-09-09'
Transform:
- 'AWS::Serverless-2016-10-31'
Resources:
MyLambda:
Type: 'AWS::Serverless::Function'
Properties:
Handler: com.handler::MyLambda
Runtime: java8
CodeUri: .
Description: Some desc
MemorySize: 512
Timeout: 15
Role: !Ref LambdaRole
FunctionName: MyLambda
Events:
MyLambdaEvt:
Type: Api
Properties:
RestApiId: !Ref MyApiDef
Path: /lambda/my
Method: get
MyApiDef:
Type: AWS::Serverless::Api
Properties:
DefinitionUri: s3://a-bucket/api-gateway.yml
StageName: prod
Outputs:
ApiUrl:
Description: URL of your API endpoint
Value: !Join
- ''
- - https://
- !Ref MyApiDef
- '.execute-api.'
- !Ref 'AWS::Region'
- '.amazonaws.com/prod'
CodePipeline 生成一个变更集并执行它。
这样,所有的 Lambda 函数都正确更新了,但 API Gateway 端点没有正确更新,我们需要手动导入和部署 s3://a-bucket/api-gateway.yml 中的 YML。
【问题讨论】:
-
堆栈创建/更新过程中是否有任何错误? “API 网关端点未正确更新”是什么意思?
-
堆栈创建/更新期间没有错误。 Lambda 函数(在 CloudFormation 中定义)已更新,API 端点(在 Swagger 中定义,带有 API Gateway 扩展)根本没有更新。
标签: amazon-web-services aws-lambda aws-api-gateway amazon-cloudformation aws-codepipeline