-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathschema.json
418 lines (418 loc) · 19.7 KB
/
schema.json
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
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
{
"name": "nuage",
"version":"0.1.1",
"license": "Apache-2.0",
"pluginDownloadURL": "github://api.github.com/nuage-studio/pulumi-nuage",
"keywords": [
"pulumi",
"aws",
"nuage",
"kind/component",
"category/cloud"
],
"types": {
"nuage:aws:FunctionSchedule": {
"properties": {
"scheduleExpression": {
"type": "string",
"description":"Expression for creating a cloudwatch event rule."
},
"scheduleInput": {
"type": "object",
"description":"Input for cloudwatch event target."
}
},
"type": "object",
"required": [
"scheduleExpression"
]
},
"nuage:aws:BastionConfig": {
"properties": {
"subnetId": {
"type": "string",
"description":"Public subnet id for the bastion host. You may use`awsx.ec2.Vpc.public_subnet_ids[0]`"
},
"enabled": {
"type": "boolean",
"description":"Enable data api. Defaults to `false`"
}
},
"type": "object",
"required": [
"enabled"
]
},
"nuage:aws:FunctionUrl": {
"properties": {
"urlEnabled": {
"type": "boolean",
"description":"Use Lambda URL. Defaults to `false`"
},
"corsConfiguration":{
"$ref": "/aws/v5.30.0/schema.json#/types/aws:lambda/FunctionUrlCors:FunctionUrlCors",
"description": "CORS Configuration."
}
},
"type": "object",
"required": [
]
},
"nuage:aws:ArchitectureType": {
"type":"string",
"description":"Architecture, either 'X86_64' or 'arm64'.",
"enum": [
{
"description": "X86_64 architecture.",
"value": "X86_64"
},
{
"description": "ARM64 architecture.",
"value": "ARM64"
}
]
}
},
"resources": {
"nuage:aws:Image": {
"isComponent": true,
"description":"Provides a resource to manage build and deployment of Docker builds. It automatically builds the Docker image and pushes it to the specified repository.\r\n\r\n{{% examples %}}\r\n## Example Usage\r\n{{% example %}}\r\n### Basic Example\r\n\r\n```python\r\nimport pulumi_nuage as nuage\r\n\r\nrepository = nuage.aws.Repository(\r\n \"foo\",\r\n name=\"repository\",\r\n expire_in_days=30,\r\n)\r\n\r\nimage = nuage.aws.Image(\r\n \"foo\",\r\n dockerfile=\"../api/Dockerfile\",\r\n context=\"../\",\r\n repository_url=repository.url,\r\n)\r\n```\r\n{{% \/example %}}",
"inputProperties": {
"context": {
"type": "string",
"description": "The path to the build context to use."
},
"dockerfile": {
"type": "string",
"description": "The path to the Dockerfile to use."
},
"target": {
"type": "string",
"description": "The target of the Dockerfile to build"
},
"architecture": {
"description":"Architecture, either `X86_64` or `ARM64`. Defaults to `X86_64`",
"type":"string"
},
"repositoryUrl": {
"type": "string",
"description":"Url of the repository."
}
},
"requiredInputs": [
"dockerfile",
"repositoryUrl"
],
"properties": {
"name": {
"type": "string",
"description":"Name of the docker image."
},
"uri": {
"type": "string",
"description":"Image uri of the docker image."
}
},
"required": [
"name",
"uri"
]
},
"nuage:aws:Repository": {
"isComponent": true,
"description":"Creates ECR Repository with a lifecycle policy. `url` output of this component can be used within container function to push your images.\r\n\r\n{{% examples %}}\r\n## Example Usage\r\n{{% example %}}\r\n### Basic Example\r\n\r\n```python\r\nimport pulumi_nuage as nuage\r\n\r\nrepository = nuage.aws.Repository(\r\n \"foo\",\r\n name=\"repository\",\r\n expire_in_days=30,\r\n)\r\n```\r\n{{% \/example %}}",
"inputProperties": {
"name": {
"type": "string",
"description":"Name of the resource."
},
"namePrefix": {
"type": "string",
"description":"Name prefix as an alternative to name and adds random suffix at the end."
},
"expireInDays": {
"type": "integer",
"description":"Number of days for expiring images using LifecyclePolicy."
}
},
"requiredInputs": [
],
"properties": {
"registry_id": {
"type": "string",
"description":"Registry id of the repository"
},
"arn": {
"type": "string",
"description":"ARN (Amazon Resource Name) of the repository"
},
"id": {
"type": "string",
"description":"Id of the repository"
},
"url": {
"type": "string",
"description":"URL of the repository"
},
"name": {
"type": "string",
"description":"Name of the repository"
}
},
"required": [
"id",
"arn",
"registry_id",
"url",
"name"
]
},
"nuage:aws:ContainerFunction": {
"isComponent": true,
"description":"Provides an AWS Lambda Function with additional necesary resources. It bundles several resources such as `Lambda Functions`, `Function URLs`, `CloudWatch keep-warm rules`, `Log Group with a Retention Policy`, `Role to run Lambda and Write Logs`. It also has a feature for schedule (cron) definitions and automated X-Ray tracing.\r\n\r\n{{% examples %}}\r\n## Example Usage\r\n{{% example %}}\r\n### Basic Example\r\n\r\n```python\r\nimport pulumi_nuage as nuage\r\n\r\nrepository = nuage.aws.Repository(\r\n \"foo\",\r\n name=\"repository\",\r\n expire_in_days=30,\r\n)\r\n\r\nimage = nuage.aws.Image(\r\n \"foo\",\r\n build_args=nuage.aws.DockerBuildArgs(\r\n dockerfile=\"../api/Dockerfile\",\r\n context=\"../\"\r\n ),\r\n repository_url=repository.url,\r\n)\r\n\r\ncontainer_function = nuage.aws.ContainerFunction(\"foo\",\r\n name=\"lambda-function\",\r\n description=\"Nuage AWS ContainerFunction resource.\",\r\n image_uri=image.uri,\r\n architecture=\"X86_64\",\r\n memory_size=512,\r\n timeout=30,\r\n environment={\"bar\":\"baz\"},\r\n keep_warm=True,\r\n url=True,\r\n log_retention_in_days=90,\r\n schedule_config=nuage.aws.FunctionScheduleArgs(\r\n schedule_expression=\"rate(5 minutes)\"\r\n ),\r\n)\r\n```\r\n{{% \/example %}}\r\n\r\n{{% example %}}\r\n### Custom Policy Document Example\r\n\r\n```python\r\nimport pulumi_nuage as nuage\r\n\r\npolicy_doc = aws.iam.get_policy_document(\r\n version=\"2012-10-17\",\r\n statements=[\r\n aws.iam.GetPolicyDocumentStatementArgs(\r\n effect=\"Allow\",\r\n actions=[\"s3:*\"],\r\n resources=[\r\n bucket.arn\r\n ],\r\n ),\r\n ],\r\n).json\r\n\r\ncontainer_function = nuage.aws.ContainerFunction(\"foo\",\r\n name=\"lambda-function\",\r\n description=\"Nuage AWS ContainerFunction resource.\",\r\n image_uri=image.uri,\r\n architecture=\"X86_64\",\r\n memory_size=512,\r\n timeout=30,\r\n environment={\"bar\":\"baz\"},\r\n keep_warm=True,\r\n url=True,\r\n log_retention_in_days=90,\r\n schedule_config=nuage.aws.FunctionScheduleArgs(\r\n schedule_expression=\"rate(5 minutes)\"\r\n ),\r\n policy_document=policy_doc\r\n)\r\n```\r\n{{% \/example %}}",
"inputProperties": {
"name": {
"type": "string",
"description":"Name of the resource."
},
"namePrefix": {
"type": "string",
"description":"Name prefix as an alternative to name and adds random suffix at the end."
},
"description": {
"type": "string",
"description":"Description of the function."
},
"imageUri": {
"type": "string",
"description":"Image uri of the docker image."
},
"architecture": {
"description":"Architecture, either `X86_64` or `ARM64`. Defaults to `X86_64`",
"type":"string"
},
"memorySize": {
"type": "integer",
"description":"Amount of memory in MB your Lambda Function can use at runtime. Defaults to `512`."
},
"timeout": {
"type": "integer",
"description":"Amount of time your Lambda Function has to run in seconds. Defaults to `3`"
},
"environment": {
"type": "object",
"description":"Environment Variables"
},
"policyDocument": {
"type": "string",
"description":"Policy Document for lambda."
},
"keepWarm": {
"type": "boolean",
"description":"Keep warm by refreshing the lambda function every 5 minutes. Defaults to `false`"
},
"logRetentionInDays": {
"type": "integer",
"description":"Number of days for log retention to pass in cloudwatch log group. Defaults to `90`"
},
"urlConfig":{
"$ref": "#/types/nuage:aws:FunctionUrl",
"description": "Configure lambda function url."
},
"scheduleConfig":{
"$ref": "#/types/nuage:aws:FunctionSchedule",
"description": "Configure the function's cloudwatch event rule schedule."
}
},
"requiredInputs": [
"imageUri"
],
"properties": {
"arn": {
"type": "string",
"description":"ARN (Amazon Resource Name) of the Lambda Function."
},
"name": {
"type": "string",
"description":"Name of the Lambda Function."
},
"url": {
"type": "string",
"description":"Lambda Function URL (Only valid if `urlEnabled` is used)."
}
},
"required": [
"arn",
"name"
]
},
"nuage:aws:ServerlessDatabase": {
"isComponent": true,
"description":"The ServerlessDatabase component is a convenient and efficient solution for creating serverless databases using Amazon RDS Aurora. It automatically creates components such as subnet group, security group, security group rules, and RDS cluster, and securely manages the DB credentials. With support for both MySQL and PostgreSQL, it provides a fully configured serverless database resource for your serverless database needs.\r\n\r\n{{% examples %}}\r\n## Example Usage\r\n{{% example %}}\r\n### Basic Example\r\n\r\n```python\r\nimport pulumi_nuage as nuage\r\nimport pulumi_awsx as awsx\r\n\r\n\r\ndb = nuage.aws.ServerlessDatabase(\r\n \"foo\",\r\n name=\"serverless-db\",\r\n vpc_id=vpc.id,\r\n subnet_ids=vpc.private_subnet_ids,\r\n database_type=\"mysql\",\r\n database_name=\"bar\",\r\n master_username=\"root\",\r\n ip_whitelist=[\"0.0.0.0\/0\"],\r\n skip_final_snapshot=True,\r\n bastion=nuage.aws.BastionConfigArgs(\r\n enabled=True,\r\n subnet_id=vpc.public_subnet_ids[0]\r\n ), \r\n)\r\n```\r\n{{% \/example %}}",
"inputProperties": {
"databaseType": {
"type": "string",
"description":"Database type. `mysql` or `postgresql`"
},
"vpcId": {
"type": "string",
"description":"Vpc id."
},
"subnetIds": {
"type": "array",
"items": {
"type": "string"
},
"description":"List of subnet ip addresses. If you want your database will be accessible from the internet, it should be public (`vpc.public_subnet_ids`). Otherwise, you can use private subnets (`vpc.private_subnet_ids`)."
},
"databaseName": {
"type": "string",
"description":"Name of the database."
},
"masterUserName": {
"type": "string",
"description":"Master user name of the db."
},
"ipWhitelist": {
"description":"List of whitelisted IP addresses. If not specified, it will be public 0.0.0.0/0",
"type": "array",
"items": {
"type": "string"
}
},
"skipFinalSnapshot": {
"type": "boolean",
"description":"Determines whether a final DB snapshot is created before the DB instance is deleted. Defaults to `false`"
},
"bastion":{
"$ref": "#/types/nuage:aws:BastionConfig",
"description": "Configure the bastion host for connecting the db."
}
},
"requiredInputs": [
"vpcId",
"subnetIds",
"databaseType",
"masterUserName",
"databaseName"
],
"properties": {
"user": {
"type": "string",
"description":"Username of DB credentials."
},
"password": {
"type": "string",
"description":"Password of DB credentials"
},
"host": {
"type": "string",
"description":"Host address of DB server"
},
"port": {
"type": "number",
"description":"Port number of DB"
},
"database_name": {
"type": "string",
"description":"Name of the database"
},
"cluster_arn": {
"type": "string",
"description":"ARN (Amazon Resource Name) of the RDS cluster."
},
"uri": {
"type": "string",
"description":"Database URI for connection."
},
"bastion_ip": {
"type": "string",
"description":"IP address of the bastion host. Exists only if bastion is enabled"
},
"bastion_private_key": {
"type": "string",
"description":"Private key to connect bastion host over SSH. Exists only if bastion is enabled."
}
},
"required": [
"user",
"host",
"port",
"database_name",
"cluster_arn",
"uri"
]
},
"nuage:aws:Bastion": {
"isComponent": true,
"description":"Pulumi Nuage's Bastion resource enables the creation of a bastion host through the submission of provided VPC information. The resource creates a private key, security group, and an AWS EC2 `t4g.nano` instance that can serve as the bastion host. This allows secure connectivity to sensitive resources within the VPC, while maintaining isolation from the public internet. You can leverage the outputted private key to establish a connection to the bastion host.\r\n\r\n{{% examples %}}\r\n## Example Usage\r\n{{% example %}}\r\n### Basic Example\r\n\r\n```python\r\nimport pulumi_nuage as nuage\r\n\r\ndb = nuage.aws.Bastion(\r\n \"foo\",\r\n name=\"bastion-host\",\r\n vpc_id=vpc.id,\r\n subnet_id=vpc.public_subnet_ids[0]\r\n)\r\n```\r\n{{% \/example %}}",
"inputProperties": {
"vpcId": {
"type": "string",
"description":"Vpc id."
},
"subnetId": {
"type": "string",
"description":"Public subnet id of the Vpc."
},
"sshPort": {
"type": "number",
"description":"Ssh port for bastion host. Defaults to 22"
}
},
"requiredInputs": [
"vpcId",
"subnetId"
],
"properties": {
"public_ip": {
"type": "string"
},
"private_key_pem": {
"type": "string"
}
},
"required": [
"public_ip",
"private_key_pem"
]
}
},
"language": {
"csharp": {
"packageReferences": {
"Pulumi": "3.*",
"Pulumi.Aws": "5.*",
"Pulumi.Docker":"4.*",
"Pulumi.Command":"4.6.0-alpha.*"
}
},
"go": {
"generateResourceContainerTypes": true,
"importBasePath": "github.com/pulumi/pulumi-nuage/sdk/go/nuage",
"respectSchemaVersion": true
},
"nodejs": {
"dependencies": {
"@pulumi/aws": "^5.0.0",
"@pulumi/docker": "^4.0.0",
"@pulumi/command": "^0.7.0"
},
"devDependencies": {
"@types/node": "^17.0.21",
"typescript": "^3.7.0"
},
"respectSchemaVersion": true
},
"python": {
"requires": {
"pulumi": ">=3.0.0,<4.0.0",
"pulumi-aws": ">=5.0.0,<6.0.0",
"pulumi_docker": ">=4.0.0",
"pulumi-random": ">4.8.0",
"pulumi-command": ">=0.7.0"
},
"respectSchemaVersion": true
}
}
}