gpt4 book ai didi

amazon-web-services - AWS CloudFormation w/AWS::ApiGateway::RestApi 给出指定的无效 REST API 标识符

转载 作者:行者123 更新时间:2023-12-04 03:56:48 25 4
gpt4 key购买 nike

我正在尝试使用 CloudFormation 创建 AWS::ApiGateway::RestApi 资源,但在运行时

aws cloudformation deploy --template-file lorem.json --stack-name lorem

这最终失败了,在 CloudFormation 控制台中查看时,我发现错误是指定的 REST API 标识符无效

enter image description here

这是我的 lorem.json 文件:

{
"AWSTemplateFormatVersion": "2010-09-09",
"Description": "lorem.io Stack",
"Resources": {
"API": {
"Type" : "AWS::ApiGateway::RestApi",
"Properties" : {
"FailOnWarnings": true,
"BodyS3Location": {
"Bucket": "cloudformation.lorem.io",
"Key": "open-api.json"
}
}
}
}
}

这里我指定 BodyS3Loc​​ation 指向包含以下内容的 S3 对象:

{
"swagger": "2.0",
"info": {
"title": "Lorem.IO API",
"version": "1.0.0"
},
"definitions": {
"Generator": {
"type": "object",
"properties": {
"title": {
"type": "string"
}
}
}
},
"produces": [
"application/json"
],
"paths": {
"/generators": {
"get": {
"responses": {
"200": {
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/Generator"
}
}
}
}
}
}
}
}

因为我根据 documentation 提供此文件我不必提供 RestApi 的名称,所以我认为这不是问题。知道我将如何去调试它不满意的地方吗?

更新#1

我已经删除了很多配置,因此我现在指定的唯一属性是 name,但我仍然收到相同的错误(指定的 REST API 标识符无效):

{
"AWSTemplateFormatVersion": "2010-09-09",
"Description": "lorem.io Stack",
"Resources": {
"API": {
"Type" : "AWS::ApiGateway::RestApi",
"Properties" : {
"FailOnWarnings": true,
"Name": "Hello World"
}
}
}
}

根据documentation Name 是唯一必需的属性 - 这是 CloudFormation 的错误还是我遗漏了什么?

最佳答案

原始模板和您提供的“Update 1”最小示例都在我的本地测试中成功创建,并且我没有发现它们有任何明显的问题。

我注意到上面的事件日志屏幕截图显示的是 UPDATE_FAILED 而不是 CREATE_FAILED,并且认为问题出在尝试“更新”现有资源的某个地方。

原始 RestAPI 资源是否可能在 CloudFormation 堆栈初始创建后被手动修改/删除?如果是这样,请注意这违反了“Manage All Stack Resources Through AWS CloudFormation”最佳实践,并且可能是错误的根源:

Do not make changes to stack resources outside of AWS CloudFormation. Doing so can create a mismatch between your stack's template and the current state of your stack resources, which can cause errors if you update or delete the stack.

要恢复,您可以更改资源的逻辑名称(例如,从 API 更改为 API2)并再次更新堆栈。这将导致与旧资源分开创建新的 RestAPI 资源。

关于amazon-web-services - AWS CloudFormation w/AWS::ApiGateway::RestApi 给出指定的无效 REST API 标识符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41108375/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com