1- resource "aws_iam_role" "lambda_role" {
1+ data "aws_iam_policy_document" "lambda_trust_policy" {
2+ statement {
3+ actions = [" sts:AssumeRole" ]
4+ effect = " Allow"
5+ principals {
6+ type = " Service"
7+ identifiers = [" lambda.amazonaws.com" ]
8+ }
9+ }
10+ }
11+
12+
13+ resource "aws_iam_role" "iam_role_for_lambda" {
214 name = " ${ var . prefix } _${ var . stage } _Lambda_Function_Role"
15+ assume_role_policy = data. aws_iam_policy_document . lambda_trust_policy . json
16+ }
17+
18+
19+ data "aws_iam_policy_document" "iam_for_lambda_policy_document" {
20+ statement {
21+ actions = [
22+ " logs:CreateLogGroup" ,
23+ " logs:CreateLogStream" ,
24+ " logs:PutLogEvents"
25+ ]
26+ effect = " Allow"
27+ resources = [" *" ]
28+ sid = " CreateCloudWatchLogs"
29+ }
30+
31+ statement {
32+ actions = [
33+ " s3:GetObject" ,
34+ ]
35+ effect = " Allow"
36+ resources = [" *" ]
37+ sid = " ReadS3"
38+ }
39+
40+
41+
342
4- assume_role_policy = << EOF
5- {
6- "Version": "2012-10-17",
7- "Statement": [
8- {
9- "Action": "sts:AssumeRole",
10- "Principal": {
11- "Service": "lambda.amazonaws.com"
12- },
13- "Effect": "Allow",
14- "Sid": ""
15- }
16- ]
1743}
18- EOF
44+
45+ resource "aws_iam_policy" "lambda_logging_policy" {
46+ name = " ${ var . prefix } -${ var . stage } -lambda-logging-policy"
47+ path = " /"
48+ description = " IAM policy for logging from a lambda"
49+ policy = data. aws_iam_policy_document . iam_for_lambda_policy_document . json
50+ }
51+
52+ resource "aws_iam_role_policy_attachment" "lambda_logging_policy_attachment" {
53+ role = aws_iam_role. iam_role_for_lambda . name
54+ policy_arn = aws_iam_policy. lambda_logging_policy . arn
1955}
2056
2157resource "aws_iam_policy" "iam_policy_for_lambda" {
2258 name = " ${ var . prefix } _${ var . stage } _aws_iam_policy_for_terraform_aws_lambda_role"
2359 path = " /"
2460 description = " AWS IAM Policy for managing aws lambda role"
25- policy = << EOF
26- {
27- "Version": "2012-10-17",
28- "Statement": [
29- {
30- "Action": [
31- "logs:CreateLogGroup",
32- "logs:CreateLogStream",
33- "logs:PutLogEvents"
34- ],
35- "Resource": "arn:aws:logs:*:*:*",
36- "Effect": "Allow"
37- }
38- ]
39- }
40- EOF
61+ policy = data. aws_iam_policy_document . iam_for_lambda_policy_document . json
4162}
4263
4364resource "aws_iam_role_policy_attachment" "basic" {
4465 policy_arn = " arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"
45- role = aws_iam_role. lambda_role . name
66+ role = aws_iam_role. iam_role_for_lambda . name
4667}
0 commit comments