/
massdriver.yaml
147 lines (140 loc) · 4.58 KB
/
massdriver.yaml
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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
# This file will be used to generate all of the schema-*.json files in a bundle
schema: draft-07
name: "aws-kinesis-stream"
description: "Amazon Kinesis is a fully-managed real-time data streaming and processing service offered by Amazon Web Services."
source_url: github.com/massdriver-cloud/aws-kinesis-stream
access: "private"
type: "infrastructure"
params:
# Examples will show up as configuration presets in the UI _and_
# they will be used to test configurations of the bundle.
examples:
- __name: Development
capacity:
stream_mode: "PROVISIONED"
shard_count: 4
- __name: Production
capacity:
stream_mode: "PROVISIONED"
shard_count: 16
- __name: Managed Capacity
capacity:
stream_mode: "ON_DEMAND"
required:
- stream
- observability
- capacity
properties:
stream:
title: Stream Configuration
Description: "General configuration for AWS Kinesis"
required:
- region
type: object
properties:
region:
title: Region
type: string
$md.immutable: true
retention_hours:
title: Retention
description: "The number of hours in which to keep data in a Kinesis stream"
type: integer
maximum: 8760
minimum: 24
default: 24
capacity:
type: object
title: Stream Capacity
description: "Capacity settings for managed or manualy sharding"
dependencies:
stream_mode:
oneOf:
- properties:
stream_mode:
const: PROVISIONED
shard_count:
title: Shard Count
description: "Each shard can support up to 5 transactions per second for reads, up to a maximum total data read rate of 2 MB per second and up to 1,000 records per second for writes, up to a maximum total data write rate of 1 MB per second (including partition keys)"
type: integer
minimum: 1
maximum: 4096
$md.immutable: true
required:
- stream_mode
- shard_count
- properties:
stream_mode:
const: ON_DEMAND
properties:
stream_mode:
title: Stream Mode
type: string
enum:
- ON_DEMAND
- PROVISIONED
$md.immutable: true
observability:
type: object
title: Observability
dependencies:
enable_shard_level_metrics:
oneOf:
- properties:
enable_shard_level_metrics:
const: true
shard_level_metrics:
title: "Shard Level Metrics"
description: "In advanced usecases shard level metrics allow you to observe individual shards in your stream to programmatically optimize sharding strategy. Best practice indicates that you should be restrictive in the metrics you expose."
type: array
items:
type: string
enum:
- IncomingBytes
- IncomingRecords
- IteratorAgeMilliseconds
- OutgoingBytes
- OutgoingRecords
- ReadProvisionedThroughputExceeded
- WriteProvisionedThroughputExceeded
uniqueItems: true
- properties:
enable_shard_level_metrics:
const: false
properties:
enable_shard_level_metrics:
title: Enable Shard Level Metrics?
description: Shard level metrics give insight in to per partition metrics. Only use these in advanced usecases of kinesis.
type: boolean
default: false
# schema-connections.json
# Named list of input connections (artifacts) (map[name]artifact)
connections:
required :
- aws_authentication
properties:
aws_authentication:
$ref: massdriver/aws-iam-role
# schema-artifacts.json
# Named list of output artifacts (map[name]artifact)
artifacts:
required:
- stream
properties:
stream:
$ref: massdriver/aws-kinesis-stream
# schema-ui.json
# List of form customizations for params-schema
# learn more about widgets & fields: https://docs.massdriver.cloud/bundles/custom-widgets-and-fields
ui:
ui:order:
- stream
- capacity
- observability
stream:
region:
ui:field: supportedCloudLocationsDropdown
cloudService: aws
retention_hours:
ui:field: conversionFieldTime
unit: Hours