-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtemplate.yml
97 lines (86 loc) · 2.23 KB
/
template.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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
---
AWSTemplateFormatVersion: "2010-09-09"
Description: Shorty
Parameters:
ProjectName:
Type: String
Default: shorty
Description: The project name
EnvironmentName:
Type: String
Default: development
Description: The environment name
Conditions:
IsProd: !Equals [!Ref EnvironmentName, production]
Resources:
LinkTable:
Type: AWS::DynamoDB::Table
Properties:
BillingMode: PAY_PER_REQUEST
KeySchema:
- AttributeName: id
KeyType: HASH
AttributeDefinitions:
- AttributeName: id
AttributeType: S
- AttributeName: owner
AttributeType: S
GlobalSecondaryIndexes:
- IndexName: OwnerIndex
KeySchema:
- AttributeName: owner
KeyType: HASH
Projection:
ProjectionType: ALL
DynamoUser:
Type: AWS::IAM::User
Properties:
Path: "/"
DynamoAccessKey:
Type: AWS::IAM::AccessKey
Properties:
UserName: !Ref DynamoUser
DynamoRole:
Type: AWS::IAM::Role
Properties:
AssumeRolePolicyDocument:
Version: "2012-10-17"
Statement:
- Effect: "Allow"
Principal:
Service: "apigateway.amazonaws.com"
Action:
- "sts:AssumeRole"
DynamoPolicy:
Type: AWS::IAM::Policy
Properties:
PolicyName: !Sub "${AWS::StackName}-dynamodb-access"
PolicyDocument:
Version: "2012-10-17"
Statement:
Action:
- dynamodb:GetItem
- dynamodb:Scan
- dynamodb:Query
- dynamodb:DeleteItem
- dynamodb:UpdateItem
Effect: Allow
Resource:
- !GetAtt LinkTable.Arn
- !Sub
- ${TableArn}/index/*
- { TableArn: !GetAtt LinkTable.Arn }
Roles:
- !Ref DynamoRole
Users:
- !Ref DynamoUser
Outputs:
LinkTableName:
Description: The DyanmoDB table name
Value: !Ref LinkTable
AccessKey:
Description: The DyanmoDB user access key
Value: !Ref DynamoAccessKey
SecretAccessKey:
Description: The DyanmoDB user secret access key (probably shouldn't export this value)
Value: !GetAtt [DynamoAccessKey, SecretAccessKey]