Resource: aws_pipes_pipe

Terraform resource for managing an AWS EventBridge Pipes Pipe.

You can find out more about EventBridge Pipes in the User Guide.

EventBridge Pipes are very configurable, and may require IAM permissions to work correctly. More information on the configuration options and IAM permissions can be found in the User Guide.

Example Usage

Basic Usage

data "aws_caller_identity" "main" {}

resource "aws_iam_role" "example" {
  assume_role_policy = jsonencode({
    Version = "2012-10-17"
    Statement = {
      Effect = "Allow"
      Action = "sts:AssumeRole"
      Principal = {
        Service = "pipes.amazonaws.com"
      }
      Condition = {
        StringEquals = {
          "aws:SourceAccount" = data.aws_caller_identity.main.account_id
        }
      }
    }
  })
}

resource "aws_iam_role_policy" "source" {
  role = aws_iam_role.example.id
  policy = jsonencode({
    Version = "2012-10-17"
    Statement = [
      {
        Effect = "Allow"
        Action = [
          "sqs:DeleteMessage",
          "sqs:GetQueueAttributes",
          "sqs:ReceiveMessage",
        ],
        Resource = [
          aws_sqs_queue.source.arn,
        ]
      },
    ]
  })
}

resource "aws_sqs_queue" "source" {}

resource "aws_iam_role_policy" "target" {
  role = aws_iam_role.example.id
  policy = jsonencode({
    Version = "2012-10-17"
    Statement = [
      {
        Effect = "Allow"
        Action = [
          "sqs:SendMessage",
        ],
        Resource = [
          aws_sqs_queue.target.arn,
        ]
      },
    ]
  })
}

resource "aws_sqs_queue" "target" {}

resource "aws_pipes_pipe" "example" {
  depends_on = [aws_iam_role_policy.source, aws_iam_role_policy.target]
  name       = "example-pipe"
  role_arn   = aws_iam_role.example.arn
  source     = aws_sqs_queue.source.arn
  target     = aws_sqs_queue.target.arn
}

Enrichment Usage

resource "aws_pipes_pipe" "example" {
  name     = "example-pipe"
  role_arn = aws_iam_role.example.arn
  source   = aws_sqs_queue.source.arn
  target   = aws_sqs_queue.target.arn

  enrichment = aws_cloudwatch_event_api_destination.example.arn

  enrichment_parameters {
    http_parameters {
      path_parameter_values = ["example-path-param"]

      header_parameters = {
        "example-header"        = "example-value"
        "second-example-header" = "second-example-value"
      }

      query_string_parameters = {
        "example-query-string"        = "example-value"
        "second-example-query-string" = "second-example-value"
      }
    }
  }
}

Filter Usage

resource "aws_pipes_pipe" "example" {
  name     = "example-pipe"
  role_arn = aws_iam_role.example.arn
  source   = aws_sqs_queue.source.arn
  target   = aws_sqs_queue.target.arn

  source_parameters {
    filter_criteria {
      filter {
        pattern = jsonencode({
          source = ["event-source"]
        })
      }
    }
  }
}

SQS Source and Target Configuration Usage

resource "aws_pipes_pipe" "example" {
  name     = "example-pipe"
  role_arn = aws_iam_role.example.arn
  source   = aws_sqs_queue.source.arn
  target   = aws_sqs_queue.target.arn

  source_parameters {
    sqs_queue_parameters {
      batch_size                         = 1
      maximum_batching_window_in_seconds = 2
    }
  }

  target_parameters {
    sqs_queue {
      message_deduplication_id = "example-dedupe"
      message_group_id         = "example-group"
    }
  }
}

Argument Reference

The following arguments are required:

The following arguments are optional:

enrichment_parameters Configuration Block

You can find out more about EventBridge Pipes Enrichment in the User Guide.

enrichment_parameters.http_parameters Configuration Block

source_parameters Configuration Block

You can find out more about EventBridge Pipes Sources in the User Guide.

source_parameters.filter_criteria Configuration Block

source_parameters.filter_criteria.filter Configuration Block

source_parameters.activemq_broker_parameters Configuration Block

source_parameters.activemq_broker_parameters.credentials Configuration Block

source_parameters.dynamodb_stream_parameters Configuration Block

source_parameters.dynamodb_stream_parameters.dead_letter_config Configuration Block

source_parameters.kinesis_stream_parameters Configuration Block

source_parameters.kinesis_stream_parameters.dead_letter_config Configuration Block

source_parameters.managed_streaming_kafka_parameters Configuration Block

source_parameters.managed_streaming_kafka_parameters.credentials Configuration Block

source_parameters.rabbitmq_broker_parameters Configuration Block

source_parameters.rabbitmq_broker_parameters.credentials Configuration Block

source_parameters.self_managed_kafka_parameters Configuration Block

source_parameters.self_managed_kafka_parameters.credentials Configuration Block
source_parameters.self_managed_kafka_parameters.vpc Configuration Block

source_parameters.sqs_queue_parameters Configuration Block

target_parameters Configuration Block

You can find out more about EventBridge Pipes Targets in the User Guide.

target_parameters.batch_job_parameters Configuration Block

target_parameters.batch_job_parameters.array_properties Configuration Block
target_parameters.batch_job_parameters.container_overrides Configuration Block
target_parameters.batch_job_parameters.container_overrides.environment Configuration Block
target_parameters.batch_job_parameters.container_overrides.resource_requirement Configuration Block
target_parameters.batch_job_parameters.depends_on Configuration Block
target_parameters.batch_job_parameters.retry_strategy Configuration Block

target_parameters.cloudwatch_logs_parameters Configuration Block

target_parameters.ecs_task_parameters Configuration Block

target_parameters.ecs_task_parameters.capacity_provider_strategy Configuration Block
target_parameters.ecs_task_parameters.network_configuration Configuration Block
target_parameters.ecs_task_parameters.network_configuration.aws_vpc_configuration Configuration Block
target_parameters.ecs_task_parameters.overrides Configuration Block
target_parameters.ecs_task_parameters.overrides.container_override Configuration Block
target_parameters.ecs_task_parameters.overrides.container_override.environment Configuration Block
target_parameters.ecs_task_parameters.overrides.container_override.environment_file Configuration Block
target_parameters.ecs_task_parameters.overrides.container_override.resource_requirement Configuration Block
target_parameters.ecs_task_parameters.overrides.ephemeral_storage Configuration Block
target_parameters.ecs_task_parameters.overrides.inference_accelerator_override Configuration Block
target_parameters.ecs_task_parameters.placement_constraint Configuration Block
target_parameters.ecs_task_parameters.placement_strategy Configuration Block

target_parameters.eventbridge_event_bus_parameters Configuration Block

target_parameters.http_parameters Configuration Block

target_parameters.kinesis_stream_parameters Configuration Block

target_parameters.lambda_function_parameters Configuration Block

target_parameters.redshift_data_parameters Configuration Block

target_parameters.sagemaker_pipeline_parameters Configuration Block

target_parameters.sagemaker_pipeline_parameters.parameters Configuration Block

target_parameters.sqs_queue_parameters Configuration Block

target_parameters.step_function_state_machine_parameters Configuration Block

Attribute Reference

This resource exports the following attributes in addition to the arguments above:

Timeouts

Configuration options:

Import

In Terraform v1.5.0 and later, use an import block to import pipes using the name. For example:

import {
  to = aws_pipes_pipe.example
  id = "my-pipe"
}

Using terraform import, import pipes using the name. For example:

% terraform import aws_pipes_pipe.example my-pipe