简体   繁体   English

为使用 for_each 创建的死信队列添加 SQS 重新驱动策略时如何修复错误消息

[英]How to fix error message when adding SQS redrive policy for deadletter queue created using for_each

I want terraform to associate my SQS Management Event with my DLQ management event and i want the same thing done with SQS Data Event and DLQ Data Event.I am getting error messages when i run apply on my code below.please I need some help.我希望 terraform 将我的 SQS 管理事件与我的 DLQ 管理事件相关联,并且我希望对 SQS 数据事件和 DLQ 数据事件做同样的事情。当我在下面的代码上运行应用程序时,我收到错误消息。请我需要一些帮助。

.tfvars

sqs_queue_names = ["CloudTrail_SQS_Management_Event", "CloudTrail_SQS_Data_Event"]

dead_queue_names = ["CloudTrail_DLQ_Management_Event", "CloudTrail_DLQ_Data_Event"]
main.tf

resource "aws_sqs_queue" "CloudTrail_SQS"{

    for_each                   = var.sqs_queue_names
    name                       = each.value
    redrive_policy = jsonencode({
        deadLetterTargetArn    = values(aws_sqs_queue.CloudTrail_SQS_DLQ)[*].arn
        maxReceiveCount        = var.max_receive_count
    })

    tags = var.default_tags
    
}

resource "aws_sqs_queue" "CloudTrail_SQS_DLQ"{

    for_each                   = var.dead_queue_names
    name                       = each.value
   
    tags = var.default_tags
}
Error: error creating SQS Queue (CloudTrail_SQS_Management_Event): InvalidParameterValue: Value {"deadLetterTargetArn":["arn:aws:sqs:us-east-1:123456789012:CloudTrail_DLQ_Data_Event","arn:aws:sqs:us-east-1:123456789012:CloudTrail_DLQ_Management_Event"],"maxReceiveCount":10} for parameter RedrivePolicy is invalid. Reason: Invalid value for deadLetterTargetArn.
│       status code: 400, request id: 9663b896-d86f-569e-92e2-e17152c2db26
│ 
│   with aws_sqs_queue.CloudTrail_SQS["CloudTrail_SQS_Management_Event"],
│   on main.tf line 5, in resource "aws_sqs_queue" "CloudTrail_SQS":
│    5: resource "aws_sqs_queue" "CloudTrail_SQS"{
│ 
╵
╷
│ Error: error creating SQS Queue (CloudTrail_SQS_Data_Event): InvalidParameterValue: Value {"deadLetterTargetArn":["arn:aws:sqs:us-east-1:123456789012:CloudTrail_DLQ_Data_Event","arn:aws:sqs:us-east-1:123456789012:CloudTrail_DLQ_Management_Event"],"maxReceiveCount":10} for parameter RedrivePolicy is invalid. Reason: Invalid value for deadLetterTargetArn.
│       status code: 400, request id: 88b8e4c5-1d50-5559-92f8-bd2297fd231f
│ 
│   with aws_sqs_queue.CloudTrail_SQS["CloudTrail_SQS_Data_Event"],
│   on main.tf line 5, in resource "aws_sqs_queue" "CloudTrail_SQS":
│    5: resource "aws_sqs_queue" "CloudTrail_SQS"{

There are few ways of doing this.有几种方法可以做到这一点。 One way would be as follows:一种方法如下:

resource "aws_sqs_queue" "CloudTrail_SQS"{

    for_each                   = {for idx, val in var.sqs_queue_names: idx => val}
    name                       = each.value
    redrive_policy = jsonencode({
        deadLetterTargetArn    = values(aws_sqs_queue.CloudTrail_SQS_DLQ)[each.key].arn
        maxReceiveCount        = var.max_receive_count
    })

    tags = var.default_tags   
}

In the above, you create index variable as key for for_each and use that to reference DLQ values.在上面,您创建index变量作为for_each键并使用它来引用 DLQ 值。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何解决为使用 for_each 创建的死信队列添加 SQS 重新驱动策略时的错误消息 - How to resolve the error message when adding SQS redrive policy for deadletter queue created using for_each CloudFormation SQS队列Redrive策略依赖于创建的DLQ - CloudFormation SQS Queue Redrive policy dependency on a DLQ created 使用 AWS CLI 命令添加 SQS 重新驱动策略 - Adding SQS redrive policy using AWS CLI command 在死信队列中有消息时如何阻止 AWS SQS FIFO? - How to block AWS SQS FIFO while having a message in the deadletter queue? AWS SQS重新驱动策略,请在队列的末尾进行混乱 - AWS SQS redrive policy, which end of the queue do messges go to AWS SQS 死信队列重新驱动策略 - AWS SQS dead-letter queue redrive policy 如果没有设置重新驱动策略,AWS SQS 中的失败消息会发生什么情况? - What happends to a failed message in AWS SQS if there is no redrive policy set? 如何将使用 for_each 创建的每个 SQS 和 DLQ 以有序格式相互关联 - how to associate each SQS and DLQ created using for_each with one another in orderly format 如何确保在相应死信队列中有消息时阻塞 SQS FIFO - How to ensure SQS FIFO is blocked while having a message in the corresponding deadletter queue 无服务器:配置死信 SQS 队列 - serverless: configure deadletter SQS queue
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM