рдХреЗрд╡рд▓ рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдореВрд▓ рд░реВрдк рд╕реЗ hashicorp / terraform # 15579 @kfrn рджреНрд╡рд╛рд░рд╛ рдЦреЛрд▓рд╛ рдЧрдпрд╛ рдерд╛ред рдкреНрд░рджрд╛рддрд╛ рд╡рд┐рднрд╛рдЬрди рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдЗрд╕реЗ рдпрд╣рд╛рдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдореВрд▓ рдирд┐рдХрд╛рдп рдиреАрдЪреЗ рд╣реИ ред_
рдЬрдм рднреА рдореИрдВ terraform plan
рдЪрд▓рд╛рддрд╛ рд╣реВрдВ, рддреЛ рдореЗрд░реА SQS рдХрддрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдиреАрддрд┐рдпреЛрдВ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рдЙрдирдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЛрдИ рдкрд░рд┐рд╡рд░реНрддрди рди рд╣реЛред
рдореИрдВ рдЕрдкрдиреА SQS рдХрддрд╛рд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
resource "aws_sqs_queue" "sqs_queue" {
name = "${var.environment}_${var.name}"
message_retention_seconds = "${var.sqs_queue["message_retention_seconds"]}"
visibility_timeout_seconds = "${var.sqs_queue["visibility_timeout_seconds"]}"
redrive_policy = <<-JSON
{
"deadLetterTargetArn": "${aws_sqs_queue.sqs_dead_queue.arn}",
"maxReceiveCount": "${var.sqs_queue["max_receive_count"]}"
}
JSON
}
resource "aws_sqs_queue" "sqs_dead_queue" {
name = "${var.environment}_${var.name}_dead"
message_retention_seconds = "${var.sqs_dead_queue["message_retention_seconds"]}"
visibility_timeout_seconds = "${var.sqs_dead_queue["visibility_timeout_seconds"]}"
}
maxReceiveCount
рдореЙрдбреНрдпреВрд▓ рдЪрд░ рдореЗрдВ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
variable "sqs_queue" {
type = "map"
default = {
message_retention_seconds = 1209600
visibility_timeout_seconds = 30
max_receive_count = 10
}
}
рдЯреЗрд░рд╛рдлреЙрд░реНрдо v0.9.8
рдХрд┐рд╕реА рднреА рдмрджрд▓рд╛рд╡ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рднреА рдмрджрд▓рд╛рд╡ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХреЛрдИ рднреА рдмрджрд▓рд╛рд╡ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдЪрд░рдгреЛрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░реЗрдВ:
terraform get
terraform plan -var-file=<var-file>.tfvars -out=<my-update>.plan -state=<current-state-file>.tfstate
terraform apply -state-out=<new-state-file>.tfstate <my-update>.plan
рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдкрд░ рдлрд░рд╡рд░реА 2016 рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рдереА, рдпрд╣рд╛рдВ рд╣реИрд╢рд┐рдХреЙрд░реНрдк / рдЯреЗрд░рд╛рдлреЙрд░реНрдо # 5119
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЙрд╕ рд╡реНрдпрдХреНрддрд┐ рдХреЗ рдХреЛрдб рдореЗрдВ maxReceiveCount
рдПрдХ рд╕рдВрдЦреНрдпрд╛ рдирд╣реАрдВ рдереА; рдмрдЧ рдиреЗ рддрдм рдПрдХ рдкреИрдЪ (# 5888) рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ред
рдЗрд╕рд▓рд┐рдП рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдирд┐рд╢реНрдЪрд┐рдд рд╣реВрдВ рдХрд┐ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХреНрдпреЛрдВ рд╣реЛ рд░рд╣рд╛ рд╣реИред рд░рд┐рдХреЙрд░реНрдб рдХреЗ рд▓рд┐рдП, рдореЗрд░рд╛ maxReceiveCount
рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдкреВрд░реНрдгрд╛рдВрдХ рд╣реИред
@kfrn рдХреНрдпрд╛ рдЖрдкрдиреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛?
рдКрдкрд░ рдЖрдкрдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ, рдЖрдкрдХреЗ рдкрд╛рд╕ "${var.sqs_queue["max_receive_count"]}"
ред JSON heredoc рдХреЗ рдЕрдВрджрд░ рдХреЗ рдЙрджреНрдзрд░рдг рд╡рд┐рд▓рдХреНрд╖рдг рд╣реИрдВ рдФрд░ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЪрд░ рдкреНрд░рдХреНрд╖реЗрдк рдХреЛ рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЯреЗрд░рд╛рдлреЙрд░реНрдо рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХрд╛ JSON рдЬреИрд╕рд╛ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ:
redrive_policy = <<-JSON
{
"deadLetterTargetArn": "${aws_sqs_queue.sqs_dead_queue.arn}",
"maxReceiveCount": ${var.sqs_queue["max_receive_count"]}
}
JSON
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рдХрдореА рдФрд░ рдКрдкрд░ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рди рдХреЗ рдХрд╛рд░рдг рд╕рдорд╛рдкрдиред
рдмрд╕ рдЗрд╕ рдкрд░ рдПрдХ рдЕрдиреБрд╡рд░реНрддреАред
рдореИрдВ рдПрдХ рд╣реА рдореБрджреНрджреЗ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рдерд╛ рдФрд░ ${var.sqs_queue["max_receive_count"]
рдкрд░ рд╡рд┐рд▓реБрдкреНрдд рдЙрджреНрдзрд░рдгреЛрдВ рдХреЛ рд╣рдЯрд╛рдХрд░ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рддрдп рдХрд┐рдпрд╛
рдереИрдВрдХреНрд╕ @bflad
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
@kfrn рдХреНрдпрд╛ рдЖрдкрдиреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛?
рдКрдкрд░ рдЖрдкрдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ, рдЖрдкрдХреЗ рдкрд╛рд╕
"${var.sqs_queue["max_receive_count"]}"
ред JSON heredoc рдХреЗ рдЕрдВрджрд░ рдХреЗ рдЙрджреНрдзрд░рдг рд╡рд┐рд▓рдХреНрд╖рдг рд╣реИрдВ рдФрд░ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЪрд░ рдкреНрд░рдХреНрд╖реЗрдк рдХреЛ рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЯреЗрд░рд╛рдлреЙрд░реНрдо рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХрд╛ JSON рдЬреИрд╕рд╛ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ: