CloudwatchカスタムイベントSQSが機能しない

ジュードフェルナンデス

Cloudwatchイベントルールを作成し、キューの1つをルールのターゲットとして設定しながら、テラフォームを使用してキューを作成しています。

要約すると、3つの別々のクラウドウォッチイベントのターゲットとなる単一のキューがあります。問題は、cloudwatchイベントルールが同一であっても、テラフォームを介して作成されたときに機能するのは1つだけであり、他のルールは、ログやデバッグ可能な情報がないコンソールでの呼び出しに失敗することです。カスタムイベントがawsコンソールから作成されている場合、すべてが正常に機能します。

テラフォームでのキューの作成

resource "aws_sqs_queue" "queue_cron" {
  name                       = "cron"
  visibility_timeout_seconds = 300 # 5 minutes
  delay_seconds              = 0
  message_retention_seconds  = 1800 # 30 minutes
  receive_wait_time_seconds  = 20
}

唯一の作業ブロック

resource "aws_cloudwatch_event_rule" "eve_vendors_bot_sync" {
  name                = "vendors-bot-sync"
  schedule_expression = "rate(1 minute)"
  description         = "Notify cron queue for vendors bot sync"
  is_enabled          = true
}

resource "aws_cloudwatch_event_target" "sqs_cron_vendors_bot_sync" {
  rule      = aws_cloudwatch_event_rule.eve_vendors_bot_sync.name
  arn       = var.queue_cron_arn
  target_id = "sqsCronVendorBotSync"

  input_transformer {
    input_template = <<EOF
{
   "messageType":"cron",
   "cronType":"vendors-bot-sync"
}
EOF
  }
}

上記と構造が同じでも動作しません。

resource "aws_cloudwatch_event_rule" "eve_restos_sync" {
  name                = "restos-sync"
  schedule_expression = "rate(1 minute)"
  description         = "Notify cron queue for restos sync"
  is_enabled          = true
}

resource "aws_cloudwatch_event_target" "sqs_cron_restos_sync" {
  rule      = aws_cloudwatch_event_rule.eve_restos_sync.name
  arn       = var.queue_cron_arn
  target_id = "sqsCronRestosSync"

  input_transformer {
    input_template = <<EOF
{
   "messageType":"cron",
   "cronType":"restaurant-hours-open-close-management"
}
EOF
  }
}

上記と同様に、機能しません

resource "aws_cloudwatch_event_rule" "eve_vendors_orders_sync" {
  name                = "vendors-orders-sync"
  schedule_expression = "rate(1 minute)"
  description         = "Notify cron queue for vendors orders sync"
  is_enabled          = true
}
resource "aws_cloudwatch_event_target" "target_cron_vendors_sync" {
  rule      = aws_cloudwatch_event_rule.eve_vendors_orders_sync.name
  arn       = var.queue_cron_arn
  target_id = "sqsCronVendorsOrderSync"

  input_transformer {
    input_template = <<EOF
{
   "messageType":"cron",
   "cronType":"vendors-orders-sync"
}
EOF
  }
}

回答

@Marchinが正しく指摘しているように、パズルに欠けている部分は、cloudwatchがSQSにメッセージを送信するのを妨げていたポリシーでした。これが機能するようになった更新された構成です。

  1. キューを作成する
  2. cloudwatchがメッセージをキューに送信できるようにするポリシーを作成します
  3. ポリシーをキューに添付します
resource "aws_sqs_queue" "queue_cron" {
  name                       = "cron"
  visibility_timeout_seconds = 300 # 5 minutes
  delay_seconds              = 0
  message_retention_seconds  = 1800 # 30 minutes
  receive_wait_time_seconds  = 20
}

data "aws_iam_policy_document" "policy_sqs" {
  statement {

    sid    = "AWSEvents_"
    effect = "Allow"
    actions = [
      "sqs:SendMessage",
    ]

    principals {
      type        = "Service"
      identifiers = ["events.amazonaws.com"]
    }

    resources = [aws_sqs_queue.queue_cron.arn]

  }
}

resource "aws_sqs_queue_policy" "cron_sqs_policy" {

  queue_url = aws_sqs_queue.queue_cron.id
  policy    = data.aws_iam_policy_document.policy_sqs.json

}

マーシン

SQSキューに対するアクセス許可が欠落しているか、正しくないと思います。queue_cronテラフォーム(質問には表示されていません)を作成しているとすると、キューと、CWイベントがそれにメッセージを送信することを許可するポリシーは次のようになります。

data "aws_caller_identity" "current" {}

data "aws_region" "current" {}

resource "aws_sqs_queue" "queue_cron" {
  name   = "queue_cron"
}

resource "aws_sqs_queue_policy" "test" {

  queue_url = aws_sqs_queue.queue_cron.id

  policy = <<POLICY
{
  "Version": "2012-10-17",
  "Id": "sqspolicy",
  "Statement": [
    {
      "Sid": "First",
      "Effect": "Allow",
      "Principal": {
        "AWS": "${data.aws_caller_identity.current.account_id}"
      },
      "Action": "sqs:*",
      "Resource": "${aws_sqs_queue.queue_cron.arn}"
    },
    {
      "Sid": "AWSEvents_",
      "Effect": "Allow",
      "Principal": {
        "Service": "events.amazonaws.com"
      },
      "Action": "sqs:SendMessage",
      "Resource": "${aws_sqs_queue.queue_cron.arn}",
      "Condition": {
        "ArnEquals": {
          "aws:SourceArn": "arn:aws:events:${data.aws_region.current.name}:${data.aws_caller_identity.current.account_id}:rule/*"
        }
      }
    }  
  ]
}
POLICY
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

GoogleAnalyticsカスタムイベントが機能しない

分類Dev

カスタムコントロールイベントが機能しない

分類Dev

ローカルインベントリ用のAnsibleAWXカスタムスクリプトが機能しない

分類Dev

Pyqt5マウスイベントがカスタムタブバーで機能しない

分類Dev

xamarin andriodpopupwindowカスタムリストビューitemclickイベントが機能しない

分類Dev

他のドキュメントへのJqueryカスタムイベントが機能しない

分類Dev

Cloudwatchカスタムイベントがトリガーされない

分類Dev

Symfony4カスタムイベントディスパッチャーが機能しない

分類Dev

カスタムイベントのページへの移動が正しく機能しない

分類Dev

Vimカスタムハイライトが機能しない

分類Dev

Herokuカスタムドメインが機能しない

分類Dev

Azureカスタムドメインが機能しない

分類Dev

カスタムドメインがGoogleAppEngineで機能しない

分類Dev

WKWebViewSwiftでカスタムフォントが機能しない

分類Dev

iOSのカスタムフォントが機能しない

分類Dev

xcodeカスタムttfフォントが機能しない

分類Dev

Phonegap:カスタムフォントが機能しない

分類Dev

Wordpress:カスタムフォントが機能しない

分類Dev

カスタムTextviewフォントが機能しない

分類Dev

マウスイベントボタンが機能しない

分類Dev

Cloudwatchカスタムメトリクス-メモリ使用率--from-cronが機能しない

分類Dev

CloudWatch カスタム メトリクスが期待どおりに機能しない

分類Dev

ImmutableJSが新しいカスタムオブジェクトインスタンスで機能しない

分類Dev

jQuery on。( 'click')イベントリスターが機能しない

分類Dev

C#カスタムイベントはフォーム、部分クラスで機能したくない

分類Dev

カスタムソート機能が機能しない

分類Dev

カスタムダイアログフラグメントのスタイリングが機能しない

分類Dev

カスタムリソースのプライベートメソッドが機能しない

分類Dev

Kentico DateTimeWebPartがカスタムタイムゾーンで機能しない

Related 関連記事

  1. 1

    GoogleAnalyticsカスタムイベントが機能しない

  2. 2

    カスタムコントロールイベントが機能しない

  3. 3

    ローカルインベントリ用のAnsibleAWXカスタムスクリプトが機能しない

  4. 4

    Pyqt5マウスイベントがカスタムタブバーで機能しない

  5. 5

    xamarin andriodpopupwindowカスタムリストビューitemclickイベントが機能しない

  6. 6

    他のドキュメントへのJqueryカスタムイベントが機能しない

  7. 7

    Cloudwatchカスタムイベントがトリガーされない

  8. 8

    Symfony4カスタムイベントディスパッチャーが機能しない

  9. 9

    カスタムイベントのページへの移動が正しく機能しない

  10. 10

    Vimカスタムハイライトが機能しない

  11. 11

    Herokuカスタムドメインが機能しない

  12. 12

    Azureカスタムドメインが機能しない

  13. 13

    カスタムドメインがGoogleAppEngineで機能しない

  14. 14

    WKWebViewSwiftでカスタムフォントが機能しない

  15. 15

    iOSのカスタムフォントが機能しない

  16. 16

    xcodeカスタムttfフォントが機能しない

  17. 17

    Phonegap:カスタムフォントが機能しない

  18. 18

    Wordpress:カスタムフォントが機能しない

  19. 19

    カスタムTextviewフォントが機能しない

  20. 20

    マウスイベントボタンが機能しない

  21. 21

    Cloudwatchカスタムメトリクス-メモリ使用率--from-cronが機能しない

  22. 22

    CloudWatch カスタム メトリクスが期待どおりに機能しない

  23. 23

    ImmutableJSが新しいカスタムオブジェクトインスタンスで機能しない

  24. 24

    jQuery on。( 'click')イベントリスターが機能しない

  25. 25

    C#カスタムイベントはフォーム、部分クラスで機能したくない

  26. 26

    カスタムソート機能が機能しない

  27. 27

    カスタムダイアログフラグメントのスタイリングが機能しない

  28. 28

    カスタムリソースのプライベートメソッドが機能しない

  29. 29

    Kentico DateTimeWebPartがカスタムタイムゾーンで機能しない

ホットタグ

アーカイブ