Skip to content

Instantly share code, notes, and snippets.

@nehiljain
Last active July 15, 2019 11:35
Show Gist options
  • Save nehiljain/82494325d595df39901a0242429e370a to your computer and use it in GitHub Desktop.
Save nehiljain/82494325d595df39901a0242429e370a to your computer and use it in GitHub Desktop.
Terraform to create kinesis firehose to s3
provider "aws" {
region = "us-east-1"
}
resource "aws_s3_bucket" "pipeline_bucket" {
bucket = "pipeline-logs"
acl = "private"
force_destroy = false
}
resource "aws_iam_role" "firehose_role" {
name = "firehose_uel_role"
assume_role_policy = <<EOF
{
"Version": "2012-10-17",
"Statement": [
{
"Action": "sts:AssumeRole",
"Principal": {
"Service": "firehose.amazonaws.com"
},
"Effect": "Allow",
"Sid": ""
}
]
}
EOF
}
resource "aws_iam_role_policy" "firehose_role_policy" {
name = "firehose_uel_role_policy"
role = aws_iam_role.firehose_role.id
policy = <<EOF
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Action": [
"s3:AbortMultipartUpload",
"s3:GetBucketLocation",
"s3:GetObject",
"s3:ListBucket",
"s3:ListBucketMultipartUploads",
"s3:PutObject"
],
"Resource": [
"${aws_s3_bucket.pipeline_bucket.arn}",
"${aws_s3_bucket.pipeline_bucket.arn}/*"
]
}
]
}
EOF
}
resource "aws_kinesis_firehose_delivery_stream" "pipeline_stream_production" {
name = "pipeline-stream-production"
destination = "extended_s3"
extended_s3_configuration {
prefix = "production/"
role_arn = aws_iam_role.firehose_role.arn
bucket_arn = aws_s3_bucket.pipeline_bucket.arn
compression_format = "GZIP"
buffer_size = 15
buffer_interval = 300
}
}
resource "aws_kinesis_firehose_delivery_stream" "pipeline_stream_staging" {
name = "pipeline-stream-staging"
destination = "extended_s3"
extended_s3_configuration {
prefix = "staging/"
role_arn = aws_iam_role.firehose_role.arn
bucket_arn = aws_s3_bucket.pipeline_bucket.arn
compression_format = "GZIP"
buffer_size = 15
buffer_interval = 300
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment