@stacksjs/ts-cloud 0.1.8 → 0.1.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bin/cli.js +1 -1
- package/package.json +18 -16
- package/src/aws/acm.ts +768 -0
- package/src/aws/application-autoscaling.ts +845 -0
- package/src/aws/bedrock.ts +4074 -0
- package/src/aws/client.ts +891 -0
- package/src/aws/cloudformation.ts +896 -0
- package/src/aws/cloudfront.ts +1531 -0
- package/src/aws/cloudwatch-logs.ts +154 -0
- package/src/aws/comprehend.ts +839 -0
- package/src/aws/connect.ts +1056 -0
- package/src/aws/deploy-imap.ts +384 -0
- package/src/aws/dynamodb.ts +340 -0
- package/src/aws/ec2.ts +1385 -0
- package/src/aws/ecr.ts +621 -0
- package/src/aws/ecs.ts +615 -0
- package/src/aws/elasticache.ts +301 -0
- package/src/aws/elbv2.ts +942 -0
- package/src/aws/email.ts +928 -0
- package/src/aws/eventbridge.ts +248 -0
- package/src/aws/iam.ts +1689 -0
- package/src/aws/imap-server.ts +2100 -0
- package/src/aws/index.ts +213 -0
- package/src/aws/kendra.ts +1097 -0
- package/src/aws/lambda.ts +786 -0
- package/src/aws/opensearch.ts +158 -0
- package/src/aws/personalize.ts +977 -0
- package/src/aws/polly.ts +559 -0
- package/src/aws/rds.ts +888 -0
- package/src/aws/rekognition.ts +846 -0
- package/src/aws/route53-domains.ts +359 -0
- package/src/aws/route53.ts +1046 -0
- package/src/aws/s3.ts +2334 -0
- package/src/aws/scheduler.ts +571 -0
- package/src/aws/secrets-manager.ts +769 -0
- package/src/aws/ses.ts +1081 -0
- package/src/aws/setup-phone.ts +104 -0
- package/src/aws/setup-sms.ts +580 -0
- package/src/aws/sms.ts +1735 -0
- package/src/aws/smtp-server.ts +531 -0
- package/src/aws/sns.ts +758 -0
- package/src/aws/sqs.ts +382 -0
- package/src/aws/ssm.ts +807 -0
- package/src/aws/sts.ts +92 -0
- package/src/aws/support.ts +391 -0
- package/src/aws/test-imap.ts +86 -0
- package/src/aws/textract.ts +780 -0
- package/src/aws/transcribe.ts +108 -0
- package/src/aws/translate.ts +641 -0
- package/src/aws/voice.ts +1379 -0
- package/src/config.ts +35 -0
- package/src/deploy/index.ts +7 -0
- package/src/deploy/static-site-external-dns.ts +945 -0
- package/src/deploy/static-site.ts +1175 -0
- package/src/dns/cloudflare.ts +548 -0
- package/src/dns/godaddy.ts +412 -0
- package/src/dns/index.ts +205 -0
- package/src/dns/porkbun.ts +362 -0
- package/src/dns/route53-adapter.ts +414 -0
- package/src/dns/types.ts +119 -0
- package/src/dns/validator.ts +369 -0
- package/src/generators/index.ts +5 -0
- package/src/generators/infrastructure.ts +1660 -0
- package/src/index.ts +163 -0
- package/src/push/apns.ts +452 -0
- package/src/push/fcm.ts +506 -0
- package/src/push/index.ts +58 -0
- package/src/security/pre-deploy-scanner.ts +655 -0
- package/src/ssl/acme-client.ts +478 -0
- package/src/ssl/index.ts +7 -0
- package/src/ssl/letsencrypt.ts +747 -0
- package/src/types.ts +2 -0
- package/src/utils/cli.ts +398 -0
- package/src/validation/index.ts +5 -0
- package/src/validation/template.ts +405 -0
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AWS EventBridge Client
|
|
3
|
+
* Direct API calls for EventBridge operations
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { AWSClient } from './client'
|
|
7
|
+
|
|
8
|
+
export interface EventBridgeRule {
|
|
9
|
+
Name: string
|
|
10
|
+
Arn?: string
|
|
11
|
+
EventPattern?: string
|
|
12
|
+
ScheduleExpression?: string
|
|
13
|
+
State?: 'ENABLED' | 'DISABLED'
|
|
14
|
+
Description?: string
|
|
15
|
+
RoleArn?: string
|
|
16
|
+
EventBusName?: string
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export interface EventBus {
|
|
20
|
+
Name?: string
|
|
21
|
+
Arn?: string
|
|
22
|
+
Policy?: string
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export interface EventBridgeTarget {
|
|
26
|
+
Id: string
|
|
27
|
+
Arn: string
|
|
28
|
+
RoleArn?: string
|
|
29
|
+
Input?: string
|
|
30
|
+
InputPath?: string
|
|
31
|
+
InputTransformer?: {
|
|
32
|
+
InputPathsMap?: Record<string, string>
|
|
33
|
+
InputTemplate: string
|
|
34
|
+
}
|
|
35
|
+
RetryPolicy?: {
|
|
36
|
+
MaximumRetryAttempts?: number
|
|
37
|
+
MaximumEventAgeInSeconds?: number
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* EventBridge client for direct API calls
|
|
43
|
+
*/
|
|
44
|
+
export class EventBridgeClient {
|
|
45
|
+
private client: AWSClient
|
|
46
|
+
private region: string
|
|
47
|
+
|
|
48
|
+
constructor(region: string = 'us-east-1') {
|
|
49
|
+
this.region = region
|
|
50
|
+
this.client = new AWSClient()
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
private async request<T>(action: string, params: Record<string, any>): Promise<T> {
|
|
54
|
+
return this.client.request({
|
|
55
|
+
service: 'events',
|
|
56
|
+
region: this.region,
|
|
57
|
+
method: 'POST',
|
|
58
|
+
path: '/',
|
|
59
|
+
headers: {
|
|
60
|
+
'Content-Type': 'application/x-amz-json-1.1',
|
|
61
|
+
'X-Amz-Target': `AWSEvents.${action}`,
|
|
62
|
+
},
|
|
63
|
+
body: JSON.stringify(params),
|
|
64
|
+
})
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Create or update a rule
|
|
69
|
+
*/
|
|
70
|
+
async putRule(params: {
|
|
71
|
+
Name: string
|
|
72
|
+
ScheduleExpression?: string
|
|
73
|
+
EventPattern?: string
|
|
74
|
+
State?: 'ENABLED' | 'DISABLED'
|
|
75
|
+
Description?: string
|
|
76
|
+
RoleArn?: string
|
|
77
|
+
Tags?: Array<{ Key: string; Value: string }>
|
|
78
|
+
EventBusName?: string
|
|
79
|
+
}): Promise<{ RuleArn: string }> {
|
|
80
|
+
return this.request('PutRule', params)
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Delete a rule
|
|
85
|
+
*/
|
|
86
|
+
async deleteRule(params: {
|
|
87
|
+
Name: string
|
|
88
|
+
EventBusName?: string
|
|
89
|
+
Force?: boolean
|
|
90
|
+
}): Promise<void> {
|
|
91
|
+
return this.request('DeleteRule', params)
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* Describe a rule
|
|
96
|
+
*/
|
|
97
|
+
async describeRule(params: {
|
|
98
|
+
Name: string
|
|
99
|
+
EventBusName?: string
|
|
100
|
+
}): Promise<EventBridgeRule> {
|
|
101
|
+
return this.request('DescribeRule', params)
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* List rules
|
|
106
|
+
*/
|
|
107
|
+
async listRules(params?: {
|
|
108
|
+
NamePrefix?: string
|
|
109
|
+
EventBusName?: string
|
|
110
|
+
NextToken?: string
|
|
111
|
+
Limit?: number
|
|
112
|
+
}): Promise<{ Rules: EventBridgeRule[]; NextToken?: string }> {
|
|
113
|
+
return this.request('ListRules', params || {})
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* List event buses
|
|
118
|
+
*/
|
|
119
|
+
async listEventBuses(params?: {
|
|
120
|
+
NamePrefix?: string
|
|
121
|
+
NextToken?: string
|
|
122
|
+
Limit?: number
|
|
123
|
+
}): Promise<{ EventBuses: EventBus[]; NextToken?: string }> {
|
|
124
|
+
return this.request('ListEventBuses', params || {})
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* Enable a rule
|
|
129
|
+
*/
|
|
130
|
+
async enableRule(params: {
|
|
131
|
+
Name: string
|
|
132
|
+
EventBusName?: string
|
|
133
|
+
}): Promise<void> {
|
|
134
|
+
return this.request('EnableRule', params)
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
* Disable a rule
|
|
139
|
+
*/
|
|
140
|
+
async disableRule(params: {
|
|
141
|
+
Name: string
|
|
142
|
+
EventBusName?: string
|
|
143
|
+
}): Promise<void> {
|
|
144
|
+
return this.request('DisableRule', params)
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
/**
|
|
148
|
+
* Add targets to a rule
|
|
149
|
+
*/
|
|
150
|
+
async putTargets(params: {
|
|
151
|
+
Rule: string
|
|
152
|
+
EventBusName?: string
|
|
153
|
+
Targets: EventBridgeTarget[]
|
|
154
|
+
}): Promise<{
|
|
155
|
+
FailedEntryCount: number
|
|
156
|
+
FailedEntries: Array<{
|
|
157
|
+
TargetId: string
|
|
158
|
+
ErrorCode: string
|
|
159
|
+
ErrorMessage: string
|
|
160
|
+
}>
|
|
161
|
+
}> {
|
|
162
|
+
return this.request('PutTargets', params)
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
/**
|
|
166
|
+
* Remove targets from a rule
|
|
167
|
+
*/
|
|
168
|
+
async removeTargets(params: {
|
|
169
|
+
Rule: string
|
|
170
|
+
EventBusName?: string
|
|
171
|
+
Ids: string[]
|
|
172
|
+
Force?: boolean
|
|
173
|
+
}): Promise<{
|
|
174
|
+
FailedEntryCount: number
|
|
175
|
+
FailedEntries: Array<{
|
|
176
|
+
TargetId: string
|
|
177
|
+
ErrorCode: string
|
|
178
|
+
ErrorMessage: string
|
|
179
|
+
}>
|
|
180
|
+
}> {
|
|
181
|
+
return this.request('RemoveTargets', params)
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
/**
|
|
185
|
+
* List targets for a rule
|
|
186
|
+
*/
|
|
187
|
+
async listTargetsByRule(params: {
|
|
188
|
+
Rule: string
|
|
189
|
+
EventBusName?: string
|
|
190
|
+
NextToken?: string
|
|
191
|
+
Limit?: number
|
|
192
|
+
}): Promise<{ Targets: EventBridgeTarget[]; NextToken?: string }> {
|
|
193
|
+
return this.request('ListTargetsByRule', params)
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
/**
|
|
197
|
+
* Put events to EventBridge
|
|
198
|
+
*/
|
|
199
|
+
async putEvents(params: {
|
|
200
|
+
Entries: Array<{
|
|
201
|
+
Time?: string
|
|
202
|
+
Source: string
|
|
203
|
+
Resources?: string[]
|
|
204
|
+
DetailType: string
|
|
205
|
+
Detail: string
|
|
206
|
+
EventBusName?: string
|
|
207
|
+
}>
|
|
208
|
+
}): Promise<{
|
|
209
|
+
FailedEntryCount: number
|
|
210
|
+
Entries: Array<{
|
|
211
|
+
EventId?: string
|
|
212
|
+
ErrorCode?: string
|
|
213
|
+
ErrorMessage?: string
|
|
214
|
+
}>
|
|
215
|
+
}> {
|
|
216
|
+
return this.request('PutEvents', params)
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
/**
|
|
220
|
+
* Create a scheduler schedule (EventBridge Scheduler)
|
|
221
|
+
*/
|
|
222
|
+
async createSchedule(params: {
|
|
223
|
+
Name: string
|
|
224
|
+
ScheduleExpression: string
|
|
225
|
+
FlexibleTimeWindow: {
|
|
226
|
+
Mode: 'OFF' | 'FLEXIBLE'
|
|
227
|
+
MaximumWindowInMinutes?: number
|
|
228
|
+
}
|
|
229
|
+
Target: {
|
|
230
|
+
Arn: string
|
|
231
|
+
RoleArn: string
|
|
232
|
+
Input?: string
|
|
233
|
+
}
|
|
234
|
+
Description?: string
|
|
235
|
+
State?: 'ENABLED' | 'DISABLED'
|
|
236
|
+
GroupName?: string
|
|
237
|
+
}): Promise<{ ScheduleArn: string }> {
|
|
238
|
+
// Note: EventBridge Scheduler uses a different API
|
|
239
|
+
return this.client.request({
|
|
240
|
+
service: 'scheduler',
|
|
241
|
+
region: this.region,
|
|
242
|
+
method: 'POST',
|
|
243
|
+
path: `/schedules/${params.Name}`,
|
|
244
|
+
headers: { 'Content-Type': 'application/json' },
|
|
245
|
+
body: JSON.stringify(params),
|
|
246
|
+
})
|
|
247
|
+
}
|
|
248
|
+
}
|