Terraform-provider-aws: рдпреЛрдЬрдирд╛ рдореЗрдВ, redrive_policy рдХреЛ рд╣рдореЗрд╢рд╛ рд╕рдВрд╢реЛрдзрд┐рдд рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 18 рдЬреБрд▓ре░ 2017  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: hashicorp/terraform-provider-aws

рдХреЗрд╡рд▓ рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдореВрд▓ рд░реВрдк рд╕реЗ 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

рдЕрдкреЗрдХреНрд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░

рдХрд┐рд╕реА рднреА рдмрджрд▓рд╛рд╡ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рднреА рдмрджрд▓рд╛рд╡ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХреЛрдИ рднреА рдмрджрд▓рд╛рд╡ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡реНрдпрд╡рд╣рд╛рд░

screen shot 2017-07-18 at 4 39 38 pm

рдкреНрд░рдЬрдирди рдХреЗ рдЪрд░рдг

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдЪрд░рдгреЛрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░реЗрдВ:

  1. terraform get
  2. terraform plan -var-file=<var-file>.tfvars -out=<my-update>.plan -state=<current-state-file>.tfstate
  3. 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

рд╕рднреА 3 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

@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

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

modax picture modax  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

gothrek22 picture gothrek22  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

hashibot picture hashibot  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

reedloden picture reedloden  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

andywirv picture andywirv  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ