gpt4 book ai didi

amazon-web-services - 这是为 SQS 触发的 lambda 编写 CFT 的正确方法吗?

转载 作者:行者123 更新时间:2023-12-03 07:44:17 24 4
gpt4 key购买 nike

您好,我最近为我的 lambda 和 sqs(都在同一账户/区域)制作了一个 CFT,但我注意到当我进入 aws 控制台时,它在“输入端”和“我的 lambda 的输出端”。这是故意的吗?或者我只是错误地进行了 CFT。下面是相关的 JSON 代码。

 "MyLambdaFunctionRole": {
"Type": "AWS::IAM::Role",
"Properties": {
"AssumeRolePolicyDocument": {
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": [
"lambda.amazonaws.com"
]
},
"Action": [
"sts:AssumeRole"
]
}
]
},
"Path": "/",
"Policies": [
{
"PolicyName": "root",
"PolicyDocument": {
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"sqs:ReceiveMessage",
"sqs:DeleteMessage",
"sqs:GetQueueAttributes"
],
"Resource": {
"Fn::Sub": "arn:aws:sqs:${AWS::Region}:${AWS::AccountId}:test-${Environment}-my-queue"
}
}
]
}
}
]
}
},

    "OutputRouterEventSource": {
"Type": "AWS::Lambda::EventSourceMapping",
"Properties": {
"BatchSize": 10,
"Enabled" : true,
"EventSourceArn": {
"Fn::Sub": "arn:aws:sqs:${AWS::Region}:${AWS::AccountId}:test-${Environment}-my-queue"
},
"FunctionName": {
"Fn::GetAtt": [
"MyLambdaFunction",
"Arn"
]
}
}
},
    "OutputRouterLambdaInvokePermission": {
"Type": "AWS::Lambda::Permission",
"Properties": {
"Action": "lambda:InvokeFunction",
"Principal": "sns.amazonaws.com",
"SourceArn": {
"Fn::Sub": "arn:aws:sqs:${AWS::Region}:${AWS::AccountId}:test-${Environment}-my-queue"
},
"FunctionName": {
"Fn::Sub": "test-${Environment}-my-lambda"
}
}
}

最佳答案

在这种情况下,两侧都有 SQS 是正常的:SQS 触发您的 Lambda 函数(左侧),并且您的 Lambda 函数的角色必须具有从队列(右侧)接收和删除消息的权限。

(我认为您正在 OutputRouterLambdaInvokePermission 资源中混合服务,其中主体是 SNS 并且源引用 SQS 队列的 arn,您可以删除此资源,因为 SQS 触发器不需要它)

关于amazon-web-services - 这是为 SQS 触发的 lambda 编写 CFT 的正确方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55731520/

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