我在 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