【发布时间】:2022-11-03 04:23:46
【问题描述】:
在 AWS 中,我创建了一个 CloudTrail,然后由 Eventbridge 规则过滤,以仅在 CloudTrail 中查找与在 AWS 上创建的资源相对应的某些事件。原因是我为 Lambda 创建了一些代码,这些代码将根据从 Eventbridge 传递给它的事件自动标记资源。当我手动将 eventbridge 规则和 lambda 连接在一起时,一切正常。但是,当我使用 Cloudformation 部署我的堆栈时,我的 Lambda 没有将 Eventbridge 显示为该函数的事件源/触发器,我不知道为什么。下面是我的 Cloudformation 模板以及 AWS Lambda 上显示的内容与我期望看到的内容。
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
# ---------------------------------------------------------------------------- #
# Input parameters #
# ---------------------------------------------------------------------------- #
Parameters:
ProjectName:
Type: String
Default: 'AutoTagger'
Description: ""
# ---------------------------------------------------------------------------- #
# Resources #
# ---------------------------------------------------------------------------- #
Resources:
AutoTaggerLambda:
Type: AWS::Serverless::Function
Name: auto-tagger-lambda
Properties:
CodeUri: release/archive.zip
Handler: auto-tagger/main.lambda_handler
Runtime: python3.9
Policies: [AWSLambda_FullAccess]
MemorySize: 128
Timeout: 30
Tags:
- Key: "project_name"
Value: !Ref ProjectName
TagEvents:
Type: "AWS::Events::Rule"
Properties:
Description: "Rule to trigger lambda"
Name: "TagEvents"
EventPattern: {
"detail-type": ["AWS API Call via CloudTrail"],
"detail": {
"eventSource": ["ec2.amazonaws.com", "rds.amazonaws.com", "lambda.amazonaws.com", "s3.amazonaws.com", "dynamodb.amazonaws.com", "elasticfilesystem.amazonaws.com"],
"eventName": ["CreateVolume", "RunInstances", "CreateImage", "CreateSnapshot", "CreateDBInstance", "CreateFunction20150331", "UpdateFunctionConfiguration20150331v2", "UpdateFunctionCode20150331v2", "CreateBucket", "CreateTable", "CreateMountTarget"]
}
}
State: "ENABLED"
Targets:
- Arn: !GetAtt AutoTaggerLambda.Arn
Id: "TagEventsTargetLambda"
我还需要向 lambda 添加事件吗?我有点困惑。
【问题讨论】:
标签: amazon-web-services aws-lambda amazon-cloudformation aws-sam aws-event-bridge