modules/accelerator/notifications/policies.tf (54 lines of code) (raw):

resource "aws_iam_role" "lambda" { name_prefix = "${var.repo_name}-${var.region_name}-lambda_sns" assume_role_policy = jsonencode({ Version = "2012-10-17" Statement = [ { Action = "sts:AssumeRole" Effect = "Allow" Sid = "" Principal = { Service = [ "lambda.amazonaws.com", ] } }, ] }) } data "aws_iam_policy_document" "topic" { statement { actions = [ "sns:Publish" ] effect = "Allow" resources = [ aws_sns_topic.notif.arn ] sid = "emailsnsid" } } resource "aws_iam_role_policy" "allow_lambda_to_publish_sns_topic" { policy = data.aws_iam_policy_document.topic.json role = aws_iam_role.lambda.id name_prefix = "${var.repo_name}-lambda-policy" } resource "aws_iam_role_policy_attachment" "AWSLambdaVPCAccessExecutionRole" { role = aws_iam_role.lambda.id policy_arn = "arn:aws:iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole" } resource "aws_sns_topic_policy" "default" { arn = aws_sns_topic.notif.arn policy = data.aws_iam_policy_document.sns_topic_policy.json } data "aws_iam_policy_document" "sns_topic_policy" { statement { effect = "Allow" actions = ["SNS:Publish"] principals { type = "Service" identifiers = ["events.amazonaws.com"] } resources = [aws_sns_topic.notif.arn] } }