|
@@ -0,0 +1,97 @@
|
|
|
+resource "aws_iam_role" "fcm-analysis-EbsEncryptionByDefault" {
|
|
|
+ name = "fcm-analysis-EbsEncryptionByDefault"
|
|
|
+
|
|
|
+ assume_role_policy = <<ASSUMEROLEDOC
|
|
|
+{
|
|
|
+ "Version": "2012-10-17",
|
|
|
+ "Statement": [
|
|
|
+ {
|
|
|
+ "Action": "sts:AssumeRole",
|
|
|
+ "Principal": {
|
|
|
+ "Service": "lambda.amazonaws.com"
|
|
|
+ },
|
|
|
+ "Effect": "Allow",
|
|
|
+ "Sid": ""
|
|
|
+ }
|
|
|
+ ]
|
|
|
+}
|
|
|
+ASSUMEROLEDOC
|
|
|
+}
|
|
|
+
|
|
|
+resource "aws_iam_policy" "fcm-analysis-EbsEncryptionByDefault" {
|
|
|
+ name = "fcm-analysis-EbsEncryptionByDefault"
|
|
|
+ path = "/fcm/"
|
|
|
+ description = "FCM policy for EbsEncryptionByDefault Enforcement Analysis"
|
|
|
+
|
|
|
+ policy = <<POLICYDOC
|
|
|
+{
|
|
|
+ "Version": "2012-10-17",
|
|
|
+ "Statement": [
|
|
|
+ {
|
|
|
+ "Effect": "Allow",
|
|
|
+ "Action": "logs:CreateLogGroup",
|
|
|
+ "Resource": "
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "Effect": "Allow",
|
|
|
+ "Action": [
|
|
|
+ "logs:CreateLogStream",
|
|
|
+ "logs:PutLogEvents"
|
|
|
+ ],
|
|
|
+ "Resource": [
|
|
|
+ "arn:aws:logs:us-east-2:082012130604:log-group:/aws/lambda/*"
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "Sid": "RequiredLambdaAccess",
|
|
|
+ "Effect": "Allow",
|
|
|
+ "Action": [
|
|
|
+ "kms:Decrypt",
|
|
|
+ "kms:GenerateDataKey*",
|
|
|
+ "sqs:ReceiveMessage",
|
|
|
+ "sqs:DeleteMessage",
|
|
|
+ "sqs:GetQueueAttributes"
|
|
|
+ ],
|
|
|
+ "Resource": "*"
|
|
|
+ }
|
|
|
+ ]
|
|
|
+}
|
|
|
+POLICYDOC
|
|
|
+}
|
|
|
+
|
|
|
+resource "aws_iam_role_policy_attachment" "fcm-analysis-EbsEncryptionByDefault" {
|
|
|
+ role = "${aws_iam_role.fcm-analysis-EbsEncryptionByDefault.name}"
|
|
|
+ policy_arn = "${aws_iam_policy.fcm-analysis-EbsEncryptionByDefault.arn}"
|
|
|
+}
|
|
|
+
|
|
|
+resource "aws_lambda_function" "fcm-analysis-EbsEncryptionByDefault" {
|
|
|
+ filename = "fcm-analysis-EbsEncryptionByDefault.zip"
|
|
|
+ function_name = "fcm-analysis-EbsEncryptionByDefault"
|
|
|
+ role = "${aws_iam_role.fcm-analysis-EbsEncryptionByDefault.arn}"
|
|
|
+ handler = "EbsEncryptionByDefault.lambda_handler"
|
|
|
+
|
|
|
+ # The filebase64sha256() function is available in Terraform 0.11.12 and later
|
|
|
+ # For Terraform 0.11.11 and earlier, use the base64sha256() function and the file() function:
|
|
|
+ # source_code_hash = "${base64sha256(file("lambda_function_payload.zip"))}"
|
|
|
+ source_code_hash = "${data.archive_file.fcm-analysis-EbsEncryptionByDefault.output_base64sha256}"
|
|
|
+
|
|
|
+ runtime = "python3.7"
|
|
|
+
|
|
|
+ environment {
|
|
|
+ variables = {
|
|
|
+ LOGLEVEL = "DEBUG"
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+resource "aws_lambda_event_source_mapping" "example" {
|
|
|
+ event_source_arn = "${aws_sqs_queue.fcm-analysis-EbsEncryptionByDefault.arn}"
|
|
|
+ function_name = "${aws_lambda_function.fcm-analysis-EbsEncryptionByDefault.arn}"
|
|
|
+ batch_size = 1 # How many messages to process at a time
|
|
|
+}
|
|
|
+
|
|
|
+data "archive_file" "fcm-analysis-EbsEncryptionByDefault" {
|
|
|
+ type = "zip"
|
|
|
+ source_dir = "fcm-analysis-EbsEncryptionByDefault"
|
|
|
+ output_path = "fcm-analysis-EbsEncryptionByDefault.zip"
|
|
|
+}
|