【发布时间】:2020-10-21 13:29:57
【问题描述】:
目前我的 serverless.yml 文件如下所示:
service: bbb
provider:
name: aws
runtime: go1.x
stage: dev
package:
exclude:
- ./**
include:
- ./bin/**
functions:
ccc:
handler: bin/executable
name: my1minutelambda
role:
'Fn::GetAtt':
- mylambdaexecutionrole
- Arn
resources:
Resources:
mylambdaexecutionrole:
Type: AWS::IAM::Role
Properties:
RoleName: my-basiclambdaexec-role
Description: This is my basiclambdaexecution role
AssumeRolePolicyDocument:
Version: "2012-10-17"
Statement:
-
Effect: Allow
Principal:
Service:
- "lambda.amazonaws.com"
Action:
- "sts:AssumeRole"
ManagedPolicyArns:
- "arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"
myminschedulerevent:
Type: AWS::Events::Rule
Properties:
Description: This is my 1 minute rate scheduler.
Name: my-1-min-trigger-event-scheduler
ScheduleExpression: rate(1 hour)
Targets:
-
Arn: "arn:aws:lambda:us-east-1:111111111111:function:my1minutelambda" #update your a/c Id
Id: "TargetFunctionV1"
用于部署的命令:sls deploy
部署完成后,我可以在 aws 管理控制台上看到我的所有资源都已创建。
但是我看不到我的 lambda 函数的 cloudwatch 触发器扩展。
请看下面的截图:
- CloudWatch 事件规则创建成功。 (目标部分指向我的 lambda 函数)
- 没有为我的 lambda 建立触发链接:
请让我知道我在这里缺少什么。谢谢。
更新#1:
添加以下行后(按照 Marcin 的建议),我可以看到“CloudWatch 事件”。
EventsPermission:
Type: AWS::Lambda::Permission
Properties:
FunctionName: my1minutelambda
Action: lambda:InvokeFunction
Principal: events.amazonaws.com
SourceAccount: !Ref 'AWS::AccountId'
SourceArn: !GetAtt myminschedulerevent.Arn
但是,我看不到 CloudWatch 日志!!所以,我无法确定我的 lambda 函数是否正在执行。请看下图:
【问题讨论】:
-
但这有效吗? Lambda 控制台有时不显示触发器,即使它们有效。
-
您是否为 cloudwatch 事件定义了 aws 权限:
Type: AWS::Lambda::Permission以调用 serverless.yaml 文件中的 lambda? docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/… -
@Marcin - 我点击“监控”->“在 CloudWatch 中查看日志”。但我的 lambda 函数没有看到任何“日志流”。
-
@salazarin:我附上了我的 serverless.yml 文件。我想,我没有定义任何这样的许可。您能帮我解决更新的 serverless.yml 文件或缺少的 yml 部分吗?我对 aws 很陌生。
标签: amazon-web-services serverless-framework serverless