AWS API Gateway RestAPI CloudFormation 更新不更新部署资源

Posted

技术标签:

【中文标题】AWS API Gateway RestAPI CloudFormation 更新不更新部署资源【英文标题】:AWS API Gateway RestAPI CloudFormation update does not update Deployment resource 【发布时间】:2017-08-03 12:34:34 【问题描述】:

当我使用 CloudFormation 更新堆栈更新 RestApi 资源时,它不会更新相应的部署资源。

我的初始堆栈如下所示

   Resources :
      RestApi 
         /create
         /delete
      Deployment
         DependsOn = RestApi 
         stage = latest

我更新堆栈看起来像这样

Resources :
  RestApi 
     /create
     /delete
     /update
  Deployment
     DependsOn = RestApi 
     StageName = latest

使用 AWS cloudformation update-stack 更新 RestApi 但不更新部署。我必须手动进入控制台并使用相同的 StageName 重新部署 API。这是一个已知问题吗?

【问题讨论】:

【参考方案1】:

这是 cloudformation 的一个已知问题。论坛上经常讨论的https://forums.aws.amazon.com/message.jspa?messageID=718403#718403

您可以单独创建阶段资源(不在部署资源内),然后引用最新的部署

Stage:
   Deployment: Ref Deployment1
Deployment1:
   RefApiId: RestApi

然后,当您更新配置时,您可以添加新部署。这会将最新的更改与阶段相关联。

Stage:
   Deployment: Ref Deployment2
Deployment2:
   RefApiId: RestApi

请注意,您仍然需要使用 DependsOn 字段来正确连接它们。

【讨论】:

感谢您的反馈。使用这种方法,我认为每次更新都需要为 Stage 资源使用不同的 StageName。否则,cloudformation 将无法识别更改。然后您的网关 URL 将更改每次更新(除非我们使用自定义域)。 您的网址不应更改。这将导致 cloudformation 创建新部署并将其与现有阶段相关联。

以上是关于AWS API Gateway RestAPI CloudFormation 更新不更新部署资源的主要内容,如果未能解决你的问题,请参考以下文章

我的带有 lambda 函数的 AWS API Gateway REST API 返回 Null,如何解决这个问题?

通过 ElasticBeansStalk 上托管的 API Gateway 在 AWS S3 上上传图像

[AWS DA] API Gateway: Mapping Templates

AWS API Gateway 的访问权限

如何将特定 AWS API Gateway 阶段连接到特定 AWS lambda 别名

通过 API Gateway 保护对 AWS Lambda 的访问