1- AWSTemplateFormatVersion : ' 2010-09-09'
1+ AWSTemplateFormatVersion : " 2010-09-09"
22Description : Stack IAM Roles
33Transform : AWS::Serverless-2016-10-31
44Parameters :
55 RunEnvironment :
66 Type : String
77 AllowedValues :
8- - dev
9- - prod
8+ - dev
9+ - prod
1010 LambdaFunctionName :
1111 Type : String
1212 AllowedPattern : ^[a-zA-Z0-9]+[a-zA-Z0-9-]+[a-zA-Z0-9]+$
@@ -21,99 +21,101 @@ Resources:
2121 ManagedPolicyArns :
2222 - arn:aws:iam::aws:policy/service-role/AWSLambdaSQSQueueExecutionRole
2323 AssumeRolePolicyDocument :
24- Version : ' 2012-10-17'
24+ Version : " 2012-10-17"
2525 Statement :
26- - Action :
27- - sts:AssumeRole
28- Effect : Allow
29- Principal :
30- Service :
31- - lambda.amazonaws.com
32- Policies :
33- - PolicyDocument :
34- Version : ' 2012-10-17'
35- Statement :
36- - Action :
37- - ses:SendEmail
38- - ses:SendRawEmail
39- Effect : Allow
40- Resource : " *"
41- Condition :
42- StringEquals :
43- ses:FromAddress : !Sub "membership@${SesEmailDomain}"
44- ForAllValues:StringLike :
45- ses:Recipients :
46- - " *@illinois.edu"
47- PolicyName : ses-membership
48- - PolicyDocument :
49- Version : ' 2012-10-17'
50- Statement :
5126 - Action :
52- - sqs:SendMessage
27+ - sts:AssumeRole
5328 Effect : Allow
54- Resource : !Ref SqsQueueArn
55- PolicyName : lambda-sqs
56- - PolicyDocument :
57- Version : ' 2012-10-17'
58- Statement :
59- - Action :
60- - logs:CreateLogGroup
61- - logs:CreateLogStream
62- - logs:PutLogEvents
63- Effect : Allow
64- Resource :
65- - Fn::Sub : arn:aws:logs:${AWS::Region}:${AWS::AccountId}:log-group:/aws/lambda/${LambdaFunctionName}:*
66- - Effect : Allow
67- Action :
68- - ec2:CreateNetworkInterface
69- - ec2:DescribeNetworkInterfaces
70- - ec2:DeleteNetworkInterface
71- - ec2:DescribeSubnets
72- - ec2:DeleteNetworkInterface
73- - ec2:AssignPrivateIpAddresses
74- - ec2:UnassignPrivateIpAddresses
75- Resource : ' *'
76- PolicyName : lambda
77- - PolicyDocument :
78- Version : 2012-10-17
79- Statement :
80- - Action :
81- - secretsmanager:GetSecretValue
82- Effect : Allow
83- Resource :
84- - !Sub arn:aws:secretsmanager:${AWS::Region}:${AWS::AccountId}:secret:infra-core-api-config*
85- PolicyName : lambda-db-secrets
86- - PolicyDocument :
87- Version : 2012-10-17
88- Statement :
89- - Action :
90- - dynamodb:*
91- Effect : Allow
92- Resource :
93- - !Sub arn:aws:dynamodb:${AWS::Region}:${AWS::AccountId}:table/infra-core-api-events/*
94- - !Sub arn:aws:dynamodb:${AWS::Region}:${AWS::AccountId}:table/infra-core-api-events
95- - !Sub arn:aws:dynamodb:${AWS::Region}:${AWS::AccountId}:table/infra-core-api-cache
96- - !Sub arn:aws:dynamodb:${AWS::Region}:${AWS::AccountId}:table/infra-core-api-cache/*
97- - !Sub arn:aws:dynamodb:${AWS::Region}:${AWS::AccountId}:table/infra-merchstore-purchase-history/*
98- - !Sub arn:aws:dynamodb:${AWS::Region}:${AWS::AccountId}:table/infra-merchstore-purchase-history
99- - !Sub arn:aws:dynamodb:${AWS::Region}:${AWS::AccountId}:table/infra-events-tickets
100- - !Sub arn:aws:dynamodb:${AWS::Region}:${AWS::AccountId}:table/infra-events-tickets/*
101- - !Sub arn:aws:dynamodb:${AWS::Region}:${AWS::AccountId}:table/infra-events-ticketing-metadata/*
102- - !Sub arn:aws:dynamodb:${AWS::Region}:${AWS::AccountId}:table/infra-events-ticketing-metadata
103- - !Sub arn:aws:dynamodb:${AWS::Region}:${AWS::AccountId}:table/infra-merchstore-metadata/*
104- - !Sub arn:aws:dynamodb:${AWS::Region}:${AWS::AccountId}:table/infra-merchstore-metadata
105- - !Sub arn:aws:dynamodb:${AWS::Region}:${AWS::AccountId}:table/infra-core-api-iam-userroles
106- - !Sub arn:aws:dynamodb:${AWS::Region}:${AWS::AccountId}:table/infra-core-api-iam-userroles/*
107- - !Sub arn:aws:dynamodb:${AWS::Region}:${AWS::AccountId}:table/infra-core-api-iam-grouproles
108- - !Sub arn:aws:dynamodb:${AWS::Region}:${AWS::AccountId}:table/infra-core-api-iam-grouproles/*
109- - !Sub arn:aws:dynamodb:${AWS::Region}:${AWS::AccountId}:table/infra-core-api-stripe-links
110- - !Sub arn:aws:dynamodb:${AWS::Region}:${AWS::AccountId}:table/infra-core-api-stripe-links/*
29+ Principal :
30+ Service :
31+ - lambda.amazonaws.com
32+ Policies :
33+ - PolicyDocument :
34+ Version : " 2012-10-17"
35+ Statement :
36+ - Action :
37+ - ses:SendEmail
38+ - ses:SendRawEmail
39+ Effect : Allow
40+ Resource : " *"
41+ Condition :
42+ StringEquals :
43+ ses:FromAddress : !Sub "membership@${SesEmailDomain}"
44+ ForAllValues:StringLike :
45+ ses:Recipients :
46+ - " *@illinois.edu"
47+ PolicyName : ses-membership
48+ - PolicyDocument :
49+ Version : " 2012-10-17"
50+ Statement :
51+ - Action :
52+ - sqs:SendMessage
53+ Effect : Allow
54+ Resource : !Ref SqsQueueArn
55+ PolicyName : lambda-sqs
56+ - PolicyDocument :
57+ Version : " 2012-10-17"
58+ Statement :
59+ - Action :
60+ - logs:CreateLogGroup
61+ - logs:CreateLogStream
62+ - logs:PutLogEvents
63+ Effect : Allow
64+ Resource :
65+ - Fn::Sub : arn:aws:logs:${AWS::Region}:${AWS::AccountId}:log-group:/aws/lambda/${LambdaFunctionName}:*
66+ - Effect : Allow
67+ Action :
68+ - ec2:CreateNetworkInterface
69+ - ec2:DescribeNetworkInterfaces
70+ - ec2:DeleteNetworkInterface
71+ - ec2:DescribeSubnets
72+ - ec2:DeleteNetworkInterface
73+ - ec2:AssignPrivateIpAddresses
74+ - ec2:UnassignPrivateIpAddresses
75+ Resource : " *"
76+ PolicyName : lambda
77+ - PolicyDocument :
78+ Version : 2012-10-17
79+ Statement :
80+ - Action :
81+ - secretsmanager:GetSecretValue
82+ Effect : Allow
83+ Resource :
84+ - !Sub arn:aws:secretsmanager:${AWS::Region}:${AWS::AccountId}:secret:infra-core-api-config*
85+ PolicyName : lambda-db-secrets
86+ - PolicyDocument :
87+ Version : 2012-10-17
88+ Statement :
89+ - Action :
90+ - dynamodb:*
91+ Effect : Allow
92+ Resource :
93+ - !Sub arn:aws:dynamodb:${AWS::Region}:${AWS::AccountId}:table/infra-core-api-events/*
94+ - !Sub arn:aws:dynamodb:${AWS::Region}:${AWS::AccountId}:table/infra-core-api-events
95+ - !Sub arn:aws:dynamodb:${AWS::Region}:${AWS::AccountId}:table/infra-core-api-cache
96+ - !Sub arn:aws:dynamodb:${AWS::Region}:${AWS::AccountId}:table/infra-core-api-cache/*
97+ - !Sub arn:aws:dynamodb:${AWS::Region}:${AWS::AccountId}:table/infra-merchstore-purchase-history/*
98+ - !Sub arn:aws:dynamodb:${AWS::Region}:${AWS::AccountId}:table/infra-merchstore-purchase-history
99+ - !Sub arn:aws:dynamodb:${AWS::Region}:${AWS::AccountId}:table/infra-events-tickets
100+ - !Sub arn:aws:dynamodb:${AWS::Region}:${AWS::AccountId}:table/infra-events-tickets/*
101+ - !Sub arn:aws:dynamodb:${AWS::Region}:${AWS::AccountId}:table/infra-events-ticketing-metadata/*
102+ - !Sub arn:aws:dynamodb:${AWS::Region}:${AWS::AccountId}:table/infra-events-ticketing-metadata
103+ - !Sub arn:aws:dynamodb:${AWS::Region}:${AWS::AccountId}:table/infra-merchstore-metadata/*
104+ - !Sub arn:aws:dynamodb:${AWS::Region}:${AWS::AccountId}:table/infra-merchstore-metadata
105+ - !Sub arn:aws:dynamodb:${AWS::Region}:${AWS::AccountId}:table/infra-core-api-iam-userroles
106+ - !Sub arn:aws:dynamodb:${AWS::Region}:${AWS::AccountId}:table/infra-core-api-iam-userroles/*
107+ - !Sub arn:aws:dynamodb:${AWS::Region}:${AWS::AccountId}:table/infra-core-api-iam-grouproles
108+ - !Sub arn:aws:dynamodb:${AWS::Region}:${AWS::AccountId}:table/infra-core-api-iam-grouproles/*
109+ - !Sub arn:aws:dynamodb:${AWS::Region}:${AWS::AccountId}:table/infra-core-api-stripe-links
110+ - !Sub arn:aws:dynamodb:${AWS::Region}:${AWS::AccountId}:table/infra-core-api-stripe-links/*
111+ - !Sub arn:aws:dynamodb:${AWS::Region}:${AWS::AccountId}:table/infra-core-api-membership-provisioning
112+ - !Sub arn:aws:dynamodb:${AWS::Region}:${AWS::AccountId}:table/infra-core-api-membership-provisioning/*
111113
112- PolicyName : lambda-dynamo
114+ PolicyName : lambda-dynamo
113115Outputs :
114116 MainFunctionRoleArn :
115117 Description : Main API IAM role ARN
116118 Value :
117119 Fn::GetAtt :
118- - ApiLambdaIAMRole
119- - Arn
120+ - ApiLambdaIAMRole
121+ - Arn
0 commit comments