gpt4 book ai didi

amazon-web-services - 无法将 lambda 与 cloudwatch 事件触发器链接

转载 作者:行者123 更新时间:2023-12-03 07:32:05 26 4
gpt4 key购买 nike

我正在创建一个 ASG 组,该组具有用于终止的生命周期钩子(Hook):

  LifecycleHook:
Type: AWS::AutoScaling::LifecycleHook
Properties:
AutoScalingGroupName: !Ref NodeGroup
DefaultResult: CONTINUE
HeartbeatTimeout: 60
LifecycleHookName: !Sub "${AWS::StackName}-lifecycle-hook"
LifecycleTransition: autoscaling:EC2_INSTANCE_TERMINATING

现在我也创建了一个 lambda 函数:

  LambdaCreation:
Type: "AWS::Lambda::Function"
Properties:
Handler: "lambda_function.lambda_handler"
Environment:
Variables:
aws_region : !Ref AWSRegion
Role: !GetAtt LambdaExecutionRole.Arn
Code:
S3Bucket: !Ref LambdaCodeBucket
S3Key: "lambda-functions/function.zip"
Runtime: "python3.6"
Timeout: 60

在cloudwatch事件中,我为所述事件创建了一条规则:

  CloudwatchEvent:
Type: AWS::Events::Rule
Properties:
Description: ASG scale-in event to lambda
EventPattern: {
"source": [
"aws.autoscaling"
],
"detail-type": [
"EC2 Instance-terminate Lifecycle Action"
],
"detail": {
"AutoScalingGroupName":
[
{
"Fn::ImportValue" :
{
"Fn::Sub" : "${RootStackName}-nodes-asg-name"
}
}
]
}
}
State: ENABLED
Targets:
-
Arn:
!GetAtt LambdaCreation.Arn
Id:
!Ref LambdaCreation

但是 lambda 永远不会被触发。

现在,在 AWS 控制台上,我在设计器上看不到触发器。但是,如果我为创建的规则手动添加 cloudwatch 触发器,它就会开始工作...

为什么 lambda 端的触发器没有创建?我错过了什么?

谢谢大家!

最佳答案

我也面临着同样的挫败感。唯一的区别是我使用的是 terraform,但这无关紧要。

您缺少this :

{
"Type" : "AWS::Lambda::Permission",
"Properties" : {
"Action" : String,
"EventSourceToken" : String,
"FunctionName" : String,
"Principal" : String,
"SourceAccount" : String,
"SourceArn" : String
}
}

“手动方式”起作用的原因是它创建了触发器和权限。当您使用 Cloudformation/terraform 等 IaC 工具配置内容时,您需要显式指定此 Lambda 权限对象。

关于amazon-web-services - 无法将 lambda 与 cloudwatch 事件触发器链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56282790/

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