0

我在 JetBrains Rider 上编写了一个 lambda aws 函数,在尝试部署 template.yaml 文件时,我收到一个 aws 工具错误的内容

在 SAM 模板 project_path/template.yaml 中找不到任何资源

.yaml 文件内容:

Transform: AWS::Serverless-2016-10-31
Description: >
  Sample SAM Template for lambda
Globals:
  Function:
    Timeout: 900
    
    
Metadata:
  AWS::ServerlessRepo::Application:
    Name: report_serverless
    Description: report_serverless
    Author: user
    
Resources:
  ReportServerlessFunction:
    Type: AWS::Serverless::Function  
    Properties:
      CodeUri: ./data/
      Handler: report_serverless::report_serverless.Function::FunctionHandler
      Runtime: dotnetcore3.1
      Architectures:
        - x86_64
      Environment: 
        Variables:
          VaultApiHost: *******
          VaultApiToken: *******
          VaultCertificate: ****
          ASPNETCORE_ENVIRONMENT: Development
          
      VpcConfig:
        SecurityGroupIds:
          - *******
        SubnetIds:
          - *********
          - *********
          - *********

      FileSystemConfigs:
        - Arn: !GetAtt AccessPoint.Arn 
          LocalMountPath: /mnt/efs
          
      Events:
        ReportServerless:
          Type: Api 
          Properties:
            Path: /report
            Method: get
      Policies:
        - Statement:
            - Sid: AWSLambdaVPCAccessExecutionRole
              Effect: Allow
              Action:
                - logs:CreateLogGroup
                - logs:CreateLogStream
                - logs:PutLogEvents
                - ec2:CreateNetworkInterface
                - ec2:DescribeNetworkInterfaces
                - ec2:DeleteNetworkInterface
              Resource: "*"
            - Sid: AmazonElasticFileSystemClientFullAccess
              Effect: Allow
              Action:
                - elasticfilesystem:ClientMount
                - elasticfilesystem:ClientRootAccess
                - elasticfilesystem:ClientWrite
                - elasticfilesystem:DescribeMountTargets
              Resource: "*"
  MyMountTarget:
    Type: AWS::EFS::MountTarget
    Properties:
      FileSystemId: *********
      SecurityGroups:
        - *********
      SubnetId: ********
      
  AccessPoint:
    Type: AWS::EFS::AccessPoint
    Properties:
      FileSystemId: ***********

Outputs:
  ReportServerlessApi:
    Description: "API Gateway endpoint URL for Prod stage for Report Serverless function"
    Value: !Sub "https://${ServerlessRestApi}.execute-api.${AWS::Region}.amazonaws.com/Prod/hello/"
  ReportServerlessFunction:
    Description: "Report Serverless Lambda Function ARN"
    Value: !GetAtt ReportServerlessFunction.Arn
  ReportServerlessFunctionIamRole:
    Description: "Implicit IAM Role created for Report Serverless function"
    Value: !GetAtt ReportServerlessRole.Arn

并尝试从控制台返回部署

错误:无法为堆栈创建变更集:sam-app,例如:Waiter ChangeSetCreateComplete 失败:Waiter 遇到终端故障状态:对于表达式“状态”,我们匹配预期路径:“FAILED”状态:FAILED。原因:模板错误:Fn::GetAtt 的实例引用了未定义的资源 ReportServerlessRole

使用 Sam 验证代码回复文件有效,并且还创建了 ReportServerlessRole.Arn

4

1 回答 1

0

也许是复制/粘贴问题,但您的模板是否在最顶部缺少一行?

AWSTemplateFormatVersion: '2010-09-09'
于 2021-12-19T20:36:38.590 回答