-
Notifications
You must be signed in to change notification settings - Fork 7
/
serverless-infrastructure-resources.yml
70 lines (66 loc) · 1.83 KB
/
serverless-infrastructure-resources.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
Resources:
LambdaSecurityGroup:
Type: 'AWS::EC2::SecurityGroup'
Properties:
GroupDescription: 'Security Group for GraphQL Lambda functions'
SecurityGroupEgress:
- CidrIp: '0.0.0.0/0'
IpProtocol: -1
FromPort: 0
ToPort: 65535
VpcId: ${env:VPC_ID}
ApplicationRole:
Type: "AWS::IAM::Role"
Properties:
ManagedPolicyArns:
- arn:aws:iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole
PermissionsBoundary:
Fn::Join: [
"", [
"arn:aws:iam::",
{
"Ref": "AWS::AccountId"
},
":policy/NGAPShRoleBoundary"
]
]
AssumeRolePolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Principal:
Service:
- lambda.amazonaws.com
Action: sts:AssumeRole
Policies:
- PolicyName: LambdaBase
PolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Action:
- lambda:InvokeFunction
Resource: '*'
# Output the following resources so that other stacks can access the values
Outputs:
GraphQLLambdaSecurityGroup:
Value:
Ref: LambdaSecurityGroup
Export:
Name: ${self:provider.stage}-GraphQLLambdaSecurityGroup
GraphQLApplicationRoleDev:
Description: Role used to execute commands across the application
Value:
Fn::GetAtt:
- ApplicationRole
- Arn
Export:
Name: dev-GraphQLApplicationRole
GraphQLApplicationRole:
Description: Role used to execute commands across the application
Value:
Fn::GetAtt:
- ApplicationRole
- Arn
Export:
Name: ${self:provider.stage}-GraphQLApplicationRole