@@ -15,7 +15,7 @@ Parameters:
1515 SqsQueueArn :
1616 Type : String
1717Resources :
18- ApiLambdaIAMRole :
18+ SqsLambdaIAMRole :
1919 Type : AWS::IAM::Role
2020 Properties :
2121 ManagedPolicyArns :
@@ -30,28 +30,89 @@ Resources:
3030 Service :
3131 - lambda.amazonaws.com
3232 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 :
44+ Fn::Sub : " membership@${SesEmailDomain}"
45+ ForAllValues:StringLike :
46+ ses:Recipients :
47+ - " *@illinois.edu"
48+ PolicyName : ses-membership
3349 - PolicyDocument :
3450 Version : " 2012-10-17"
3551 Statement :
3652 - Action :
37- - ses:SendEmail
38- - ses:SendRawEmail
53+ - logs:CreateLogGroup
54+ - logs:CreateLogStream
55+ - logs:PutLogEvents
56+ Effect : Allow
57+ Resource :
58+ - Fn::Sub : arn:aws:logs:${AWS::Region}:${AWS::AccountId}:log-group:/aws/lambda/${LambdaFunctionName}:*
59+ - PolicyDocument :
60+ Version : 2012-10-17
61+ Statement :
62+ - Action :
63+ - secretsmanager:GetSecretValue
3964 Effect : Allow
65+ Resource :
66+ - Fn::Sub : arn:aws:secretsmanager:${AWS::Region}:${AWS::AccountId}:secret:infra-core-api-config*
67+ PolicyName : lambda-db-secrets
68+
69+ - PolicyDocument :
70+ Version : 2012-10-17
71+ Statement :
72+ - Sid : DynamoDBTableAccess
73+ Effect : Allow
74+ Action :
75+ - dynamodb:BatchGetItem
76+ - dynamodb:BatchWriteItem
77+ - dynamodb:ConditionCheckItem
78+ - dynamodb:PutItem
79+ - dynamodb:DescribeTable
80+ - dynamodb:DeleteItem
81+ - dynamodb:GetItem
82+ - dynamodb:Scan
83+ - dynamodb:Query
84+ - dynamodb:UpdateItem
85+ Resource :
86+ - Fn::Sub : arn:aws:dynamodb:${AWS::Region}:${AWS::AccountId}:table/infra-core-api-cache
87+
88+ - Sid : DynamoDBDescribeLimitsAccess
89+ Effect : Allow
90+ Action :
91+ - dynamodb:DescribeLimits
4092 Resource : " *"
41- Condition :
42- StringEquals :
43- ses:FromAddress : !Sub "membership@${SesEmailDomain}"
44- ForAllValues:StringLike :
45- ses:Recipients :
46- - " *@illinois.edu"
47- PolicyName : ses-membership
93+ PolicyName : lambda-dynamo
94+
95+ ApiLambdaIAMRole :
96+ Type : AWS::IAM::Role
97+ Properties :
98+ AssumeRolePolicyDocument :
99+ Version : " 2012-10-17"
100+ Statement :
101+ - Action :
102+ - sts:AssumeRole
103+ Effect : Allow
104+ Principal :
105+ Service :
106+ - lambda.amazonaws.com
107+ Policies :
48108 - PolicyDocument :
49109 Version : " 2012-10-17"
50110 Statement :
51111 - Action :
52112 - sqs:SendMessage
53113 Effect : Allow
54- Resource : !Ref SqsQueueArn
114+ Resource :
115+ Fn::Ref : SqsQueueArn
55116 PolicyName : lambda-sqs
56117 - PolicyDocument :
57118 Version : " 2012-10-17"
@@ -63,16 +124,6 @@ Resources:
63124 Effect : Allow
64125 Resource :
65126 - 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 : " *"
76127 PolicyName : lambda
77128 - PolicyDocument :
78129 Version : 2012-10-17
@@ -81,36 +132,60 @@ Resources:
81132 - secretsmanager:GetSecretValue
82133 Effect : Allow
83134 Resource :
84- - ! Sub arn:aws:secretsmanager:${AWS::Region}:${AWS::AccountId}:secret:infra-core-api-config*
135+ - Fn:: Sub: arn:aws:secretsmanager:${AWS::Region}:${AWS::AccountId}:secret:infra-core-api-config*
85136 PolicyName : lambda-db-secrets
86137 - PolicyDocument :
87138 Version : 2012-10-17
88139 Statement :
89- - Action :
90- - dynamodb:*
140+ - Sid : DynamoDBIndexAccess
91141 Effect : Allow
142+ Action :
143+ - dynamodb:Query
144+ Resource :
145+ - Fn::Sub : arn:aws:dynamodb:${AWS::Region}:${AWS::AccountId}:table/infra-core-api-stripe-links/index/*
146+ - Fn::Sub : arn:aws:dynamodb:${AWS::Region}:${AWS::AccountId}:table/infra-core-api-events/index/*
147+
148+ - Sid : DynamoDBStreamAccess
149+ Effect : Allow
150+ Action :
151+ - dynamodb:GetShardIterator
152+ - dynamodb:DescribeStream
153+ - dynamodb:GetRecords
154+ - dynamodb:ListStreams
92155 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/*
156+ - Fn::Sub : arn:aws:dynamodb:${AWS::Region}:${AWS::AccountId}:table/infra-core-api-stripe-links/stream/*
157+ - Fn::Sub : arn:aws:dynamodb:${AWS::Region}:${AWS::AccountId}:table/infra-core-api-events/stream/*
113158
159+ - Sid : DynamoDBTableAccess
160+ Effect : Allow
161+ Action :
162+ - dynamodb:BatchGetItem
163+ - dynamodb:BatchWriteItem
164+ - dynamodb:ConditionCheckItem
165+ - dynamodb:PutItem
166+ - dynamodb:DescribeTable
167+ - dynamodb:DeleteItem
168+ - dynamodb:GetItem
169+ - dynamodb:Scan
170+ - dynamodb:Query
171+ - dynamodb:UpdateItem
172+ Resource :
173+ - Fn::Sub : arn:aws:dynamodb:${AWS::Region}:${AWS::AccountId}:table/infra-core-api-events
174+ - Fn::Sub : arn:aws:dynamodb:${AWS::Region}:${AWS::AccountId}:table/infra-core-api-cache
175+ - Fn::Sub : arn:aws:dynamodb:${AWS::Region}:${AWS::AccountId}:table/infra-merchstore-purchase-history
176+ - Fn::Sub : arn:aws:dynamodb:${AWS::Region}:${AWS::AccountId}:table/infra-events-tickets
177+ - Fn::Sub : arn:aws:dynamodb:${AWS::Region}:${AWS::AccountId}:table/infra-events-ticketing-metadata
178+ - Fn::Sub : arn:aws:dynamodb:${AWS::Region}:${AWS::AccountId}:table/infra-merchstore-metadata
179+ - Fn::Sub : arn:aws:dynamodb:${AWS::Region}:${AWS::AccountId}:table/infra-core-api-iam-userroles
180+ - Fn::Sub : arn:aws:dynamodb:${AWS::Region}:${AWS::AccountId}:table/infra-core-api-iam-grouproles
181+ - Fn::Sub : arn:aws:dynamodb:${AWS::Region}:${AWS::AccountId}:table/infra-core-api-stripe-links
182+ - Fn::Sub : arn:aws:dynamodb:${AWS::Region}:${AWS::AccountId}:table/infra-core-api-membership-provisioning
183+
184+ - Sid : DynamoDBDescribeLimitsAccess
185+ Effect : Allow
186+ Action :
187+ - dynamodb:DescribeLimits
188+ Resource : " *"
114189 PolicyName : lambda-dynamo
115190Outputs :
116191 MainFunctionRoleArn :
@@ -119,3 +194,9 @@ Outputs:
119194 Fn::GetAtt :
120195 - ApiLambdaIAMRole
121196 - Arn
197+ SqsFunctionRoleArn :
198+ Description : Sqs IAM role ARN
199+ Value :
200+ Fn::GetAtt :
201+ - SqsLambdaIAMRole
202+ - Arn
0 commit comments