gpt4 book ai didi

yaml - 无法在 AWS::ApiGateway::Model 资源的输出部分中引用 API

转载 作者:行者123 更新时间:2023-12-05 06:31:05 25 4
gpt4 key购买 nike

我能够使用 Cloudformation/无服务器应用程序模型定义和部署我的 API 网关 + Lambda 堆栈,并希望向我的 API 添加模型。

我已在 YAML 中创建了模型,但它似乎无法引用我文件的 Outputs 部分中定义的 API。

我看到的错误是

Failed to create the changeset: Waiter ChangeSetCreateComplete failed: Waiter encountered a terminal failure state Status: FAILED.

Reason: Template format error: Unresolved resource dependencies [MyApi] in the Resources block of the template

是否可以引用Output对象,或者在此上下文中它不被视为资源?即我是否需要显式定义 AWS::Serverless::Api 而不是使用 Output

AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Resources:
PutItemFunction:
Type: AWS::Serverless::Function
Properties:
FunctionName: put_item
Handler: handlers.put_item
Runtime: python3.6
Events:
PutResource:
Type: Api
Properties:
Path: /
Method: put
ModelResource:
Type: AWS::ApiGateway::Model
Properties:
RestApiId:
Ref: MyApi
ContentType: "application/json"
Name: MyModel
Schema:
"$schema": "http://json-schema.org/draft-04/schema#"
type: object
properties:
id:
type: string
Outputs:
MyApi:
Value: !Sub "https://${ServerlessRestApi}.execute-api.${AWS::Region}.amazonaws.com/s/"

最佳答案

首先,模板的“输出”部分用于显示模板执行后的信息。创建资源时,您无法获取对该部分中任何内容的引用。

无服务器函数中 Events 属性的 Api 类型的文档位于: https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-property-function-api.html

有一个名为 RequestModel 的属性,可以将其添加到您的 PathMethod 属性下方以引用您的 ModelResource模型。因此您的事件部分可能如下所示:

      Events:
PutResource:
Type: Api
Properties:
Path: /
Method: put
RequestModel: MyModel

...并取出 RestApiId 属性。

我还没有测试过这个,所以我不知道它是否有效,但是试一试。而且,由于我是在你提出这个问题两年后才回答这个问题的,所以你可能已经明白了。

关于yaml - 无法在 AWS::ApiGateway::Model 资源的输出部分中引用 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51902484/

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