gpt4 book ai didi

amazon-web-services - 是什么导致我的 SAM 模板生成这么多错误

转载 作者:行者123 更新时间:2023-12-03 07:41:48 24 4
gpt4 key购买 nike

我一直在尝试让我的 SAM 模板正常工作。我大致了解 SAM 模板,但我不明白从 CloudFormation 不断收到的错误背后的逻辑我的输出正确吗?我只使用 API(而不是函数?)。我可以执行 GET 请求,但 CORS 阻止我执行 PUT 和 POST 请求。什么是多余的,我缺少什么?

错误:“状态原因模板的输出 block 中 Unresolved 资源依赖关系 [ServerlessRestApi]”

我也经常收到以下错误:“REST API 不包含任何方法(服务:AmazonApiGateway;状态代码:400;错误代码:BadRequestException;请求 ID:abad588e -02ee-4fc6-a668-43b30bec6aaf;代理:空)”

模板.yaml:

AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: >
SAM Template

# More info about Globals: https://github.com/awslabs/serverless-application-model/blob/master/docs/globals.rst
Globals:
Function:
Timeout: 10

Resources:
ApiGatewayApi:
Type: AWS::Serverless::Api
Properties:
Name: ApiGatewayApi
StageName: Prod
Cors:
AllowMethods: "'OPTIONS,POST,GET,PUT,PATCH,DELETE'"
AllowHeaders: "'Content-Type'"
AllowOrigin: "'*'"
DeclineSituationFunction:
Type: AWS::Serverless::Function # More info about Function Resource: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction
Properties:
FunctionName: DeclineSituation
CodeUri: decline-situation/
Handler: app.lambda_handler
Runtime: python3.8
Events:
DeclineSituationAPI:
Type: Api # More info about API Event Source: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#api
Properties:
Path: /decline-situation
Method: put
RestApiId: !Ref ApiGatewayApi
AcceptSituationFunction:
Type: AWS::Serverless::Function # More info about Function Resource: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction
Properties:
FunctionName: AcceptSituation
CodeUri: accept-situation/
Handler: app.lambda_handler
Runtime: python3.8
Events:
AcceptSituationAPI:
Type: Api # More info about API Event Source: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#api
Properties:
Path: /accept-situation
Method: post
RestApiId: !Ref ApiGatewayApi
GetIncidentsFunction:
Type: AWS::Serverless::Function # More info about Function Resource: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction
Properties:
FunctionName: GetIncidents
CodeUri: get-incidents/
Handler: app.lambda_handler
Runtime: python3.8
Events:
GetIncidentsAPI:
Type: Api # More info about API Event Source: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#api
Properties:
Path: /incidents
Method: get
RestApiId: !Ref ApiGatewayApi
GetSituationsFunction:
Type: AWS::Serverless::Function # More info about Function Resource: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction
Properties:
FunctionName: GetSituations
CodeUri: get-situations/
Handler: app.lambda_handler
Runtime: python3.8
Policies: AWSLambdaDynamoDBExecutionRole
Events:
GetSituationsAPI:
Type: Api # More info about API Event Source: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#api
Properties:
Path: /situations
Method: get
RestApiId: !Ref ApiGatewayApi
GetRecoveriesFunction:
Type: AWS::Serverless::Function # More info about Function Resource: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction
Properties:
FunctionName: GetRecoveries
CodeUri: get-recoveries/
Handler: app.lambda_handler
Runtime: python3.8
Policies: AWSLambdaDynamoDBExecutionRole
Events:
GetRecoveriesAPI:
Type: Api # More info about API Event Source: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#api
Properties:
Path: /recoveries
Method: get
RestApiId: !Ref ApiGatewayApi
ReadNotificationFunction:
Type: AWS::Serverless::Function
Properties:
FunctionName: ReadNotification
CodeUri: read-notification/
Handler: app.lambda_handler
Runtime: python3.8
Policies:
- DynamoDBCrudPolicy:
TableName: Situations
Incidents:
Type: AWS::DynamoDB::Table
Properties:
TableName: AIMAS-Incidents
AttributeDefinitions:
- AttributeName: incidentId
AttributeType: S
- AttributeName: situationId
AttributeType: S
KeySchema:
- AttributeName: incidentId
KeyType: HASH
ProvisionedThroughput:
ReadCapacityUnits: 5
WriteCapacityUnits: 5
Situations:
Type: AWS::DynamoDB::Table
Properties:
TableName: AIMAS-Situations
AttributeDefinitions:
- AttributeName: situationId
AttributeType: S
KeySchema:
- AttributeName: situationId
KeyType: HASH
ProvisionedThroughput:
ReadCapacityUnits: 5
WriteCapacityUnits: 5
Recoveries:
Type: AWS::DynamoDB::Table
Properties:
TableName: AIMAS-Recoveries
AttributeDefinitions:
- AttributeName: recoveryId
AttributeType: S
- AttributeName: situationId
AttributeType: S
- AttributeName: incidentId
AttributeType: S
KeySchema:
- AttributeName: recoveryId
KeyType: HASH
ProvisionedThroughput:
ReadCapacityUnits: 5
WriteCapacityUnits: 5
Outputs:
# ServerlessRestApi is an implicit API created out of Events key under Serverless::Function
# Find out more about other implicit resources you can reference within SAM
# https://github.com/awslabs/serverless-application-model/blob/master/docs/internals/generated_resources.rst#api
#Incidents
GetIncidentsAPI:
Description: "API Gateway endpoint URL for Prod stage for GetIncidentsAPI"
Value: !Sub "https://${ServerlessRestApi}.execute-api.${AWS::Region}.amazonaws.com/Prod/incidents/"
GetIncidentsFunction:
Description: "GetIncidents Lambda Function ARN"
Value: !GetAtt GetIncidentsFunction.Arn
#Recoveries
GetRecoveriesAPI:
Description: "API Gateway endpoint URL for Prod stage for GetRecoveriesAPI"
Value: !Sub "https://${ServerlessRestApi}.execute-api.${AWS::Region}.amazonaws.com/Prod/recoveries/"
GetRecoveriesFunction:
Description: "GetRecoveries Lambda Function ARN"
Value: !GetAtt GetRecoveriesFunction.Arn
#Situations
AcceptSituationFunction:
Description: "AcceptSituationFunction Lambda Function ARN"
Value: !GetAtt AcceptSituationFunction.Arn
AcceptSituationAPI:
Description: "API Gateway endpoint URL for GetSituationsAPI"
Value: !Sub "https://${ServerlessRestApi}.execute-api.${AWS::Region}.amazonaws.com/Prod/accept-situation/"
DeclineSituationFunction:
Description: "DeclineSituationFunction Lambda Function ARN"
Value: !GetAtt DeclineSituationFunction.Arn
DeclineSituationAPI:
Description: "API Gateway endpoint URL for GetSituationsAPI"
Value: !Sub "https://${ServerlessRestApi}.execute-api.${AWS::Region}.amazonaws.com/Prod/decline-situation/"
GetSituationsAPI:
Description: "API Gateway endpoint URL for GetSituationsAPI"
Value: !Sub "https://${ServerlessRestApi}.execute-api.${AWS::Region}.amazonaws.com/Prod/situations/"
GetSituationsFunction:
Description: "GetSituations Lambda Function ARN"
Value: !GetAtt GetSituationsFunction.Arn
#Read Notifications
ReadNotificationFunction:
Description: "ReadNotification Lambda Function ARN"
Value: !GetAtt ReadNotificationFunction.Arn

最佳答案

您的模板中存在多个错误。

    E3039 The set of Attributes in AttributeDefinitions: ['incidentId', 'situationId'] and KeySchemas: ['incidentId'] must match at Resources/Incidents/Properties

E3039 The set of Attributes in AttributeDefinitions: ['incidentId', 'recoveryId', 'situationId'] and KeySchemas: ['recoveryId'] must match at Resources/Recoveries/Properties

E1019 Parameter ServerlessRestApi for Fn::Sub not found at Outputs/GetIncidentsAPI/Value/Fn::Sub
x.yml:156:5

E1019 Parameter ServerlessRestApi for Fn::Sub not found at Outputs/GetRecoveriesAPI/Value/Fn::Sub
x.yml:163:5

E1019 Parameter ServerlessRestApi for Fn::Sub not found at Outputs/AcceptSituationAPI/Value/Fn::Sub
x.yml:173:5

E1019 Parameter ServerlessRestApi for Fn::Sub not found at Outputs/DeclineSituationAPI/Value/Fn::Sub
x.yml:179:5

E1019 Parameter ServerlessRestApi for Fn::Sub not found at Outputs/GetSituationsAPI/Value/Fn::Sub
x.yml:182:5

使用cfn-linterdocumentation对于生成模板,文档中也有很多很好的示例。

关于amazon-web-services - 是什么导致我的 SAM 模板生成这么多错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65627672/

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