pulumi-cloudamqp 3.17.0a1702588087__py3-none-any.whl → 3.17.1__py3-none-any.whl

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.

Potentially problematic release.


This version of pulumi-cloudamqp might be problematic. Click here for more details.

@@ -0,0 +1,1015 @@
1
+ # coding=utf-8
2
+ # *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
3
+ # *** Do not edit by hand unless you're certain you know what you are doing! ***
4
+
5
+ import copy
6
+ import warnings
7
+ import pulumi
8
+ import pulumi.runtime
9
+ from typing import Any, Mapping, Optional, Sequence, Union, overload
10
+ from . import _utilities
11
+
12
+ __all__ = ['VpcConnectArgs', 'VpcConnect']
13
+
14
+ @pulumi.input_type
15
+ class VpcConnectArgs:
16
+ def __init__(__self__, *,
17
+ instance_id: pulumi.Input[int],
18
+ region: pulumi.Input[str],
19
+ allowed_principals: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
20
+ allowed_projects: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
21
+ approved_subscriptions: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
22
+ sleep: Optional[pulumi.Input[int]] = None,
23
+ timeout: Optional[pulumi.Input[int]] = None):
24
+ """
25
+ The set of arguments for constructing a VpcConnect resource.
26
+ :param pulumi.Input[int] instance_id: The CloudAMQP instance identifier.
27
+ :param pulumi.Input[str] region: The region where the CloudAMQP instance is hosted.
28
+ :param pulumi.Input[Sequence[pulumi.Input[str]]] allowed_principals: List of allowed prinicpals used by AWS, see below table.
29
+ :param pulumi.Input[Sequence[pulumi.Input[str]]] allowed_projects: List of allowed projects used by GCP, see below table.
30
+ :param pulumi.Input[Sequence[pulumi.Input[str]]] approved_subscriptions: List of approved subscriptions used by Azure, see below table.
31
+ :param pulumi.Input[int] sleep: Configurable sleep time (seconds) when enable Private Service Connect.
32
+ Default set to 10 seconds.
33
+ :param pulumi.Input[int] timeout: Configurable timeout time (seconds) when enable Private Service Connect.
34
+ Default set to 1800 seconds.
35
+
36
+ ___
37
+
38
+ The `allowed_principals`, `approved_subscriptions` or `allowed_projects` data depends on the provider platform:
39
+
40
+ | Platform | Description | Format |
41
+ |----------|---------------------|------------------------------------------------------------------------------------------------------------------------------------|
42
+ | AWS | IAM ARN principals | arn:aws:iam::aws-account-id:root<br /> arn:aws:iam::aws-account-id:user/user-name<br /> arn:aws:iam::aws-account-id:role/role-name |
43
+ | Azure | Subscription (GUID) | XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX |
44
+ | GCP | Project IDs* | 6 to 30 lowercase letters, digits, or hyphens |
45
+
46
+ *https://cloud.google.com/resource-manager/reference/rest/v1/projects
47
+ """
48
+ pulumi.set(__self__, "instance_id", instance_id)
49
+ pulumi.set(__self__, "region", region)
50
+ if allowed_principals is not None:
51
+ pulumi.set(__self__, "allowed_principals", allowed_principals)
52
+ if allowed_projects is not None:
53
+ pulumi.set(__self__, "allowed_projects", allowed_projects)
54
+ if approved_subscriptions is not None:
55
+ pulumi.set(__self__, "approved_subscriptions", approved_subscriptions)
56
+ if sleep is not None:
57
+ pulumi.set(__self__, "sleep", sleep)
58
+ if timeout is not None:
59
+ pulumi.set(__self__, "timeout", timeout)
60
+
61
+ @property
62
+ @pulumi.getter(name="instanceId")
63
+ def instance_id(self) -> pulumi.Input[int]:
64
+ """
65
+ The CloudAMQP instance identifier.
66
+ """
67
+ return pulumi.get(self, "instance_id")
68
+
69
+ @instance_id.setter
70
+ def instance_id(self, value: pulumi.Input[int]):
71
+ pulumi.set(self, "instance_id", value)
72
+
73
+ @property
74
+ @pulumi.getter
75
+ def region(self) -> pulumi.Input[str]:
76
+ """
77
+ The region where the CloudAMQP instance is hosted.
78
+ """
79
+ return pulumi.get(self, "region")
80
+
81
+ @region.setter
82
+ def region(self, value: pulumi.Input[str]):
83
+ pulumi.set(self, "region", value)
84
+
85
+ @property
86
+ @pulumi.getter(name="allowedPrincipals")
87
+ def allowed_principals(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
88
+ """
89
+ List of allowed prinicpals used by AWS, see below table.
90
+ """
91
+ return pulumi.get(self, "allowed_principals")
92
+
93
+ @allowed_principals.setter
94
+ def allowed_principals(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
95
+ pulumi.set(self, "allowed_principals", value)
96
+
97
+ @property
98
+ @pulumi.getter(name="allowedProjects")
99
+ def allowed_projects(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
100
+ """
101
+ List of allowed projects used by GCP, see below table.
102
+ """
103
+ return pulumi.get(self, "allowed_projects")
104
+
105
+ @allowed_projects.setter
106
+ def allowed_projects(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
107
+ pulumi.set(self, "allowed_projects", value)
108
+
109
+ @property
110
+ @pulumi.getter(name="approvedSubscriptions")
111
+ def approved_subscriptions(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
112
+ """
113
+ List of approved subscriptions used by Azure, see below table.
114
+ """
115
+ return pulumi.get(self, "approved_subscriptions")
116
+
117
+ @approved_subscriptions.setter
118
+ def approved_subscriptions(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
119
+ pulumi.set(self, "approved_subscriptions", value)
120
+
121
+ @property
122
+ @pulumi.getter
123
+ def sleep(self) -> Optional[pulumi.Input[int]]:
124
+ """
125
+ Configurable sleep time (seconds) when enable Private Service Connect.
126
+ Default set to 10 seconds.
127
+ """
128
+ return pulumi.get(self, "sleep")
129
+
130
+ @sleep.setter
131
+ def sleep(self, value: Optional[pulumi.Input[int]]):
132
+ pulumi.set(self, "sleep", value)
133
+
134
+ @property
135
+ @pulumi.getter
136
+ def timeout(self) -> Optional[pulumi.Input[int]]:
137
+ """
138
+ Configurable timeout time (seconds) when enable Private Service Connect.
139
+ Default set to 1800 seconds.
140
+
141
+ ___
142
+
143
+ The `allowed_principals`, `approved_subscriptions` or `allowed_projects` data depends on the provider platform:
144
+
145
+ | Platform | Description | Format |
146
+ |----------|---------------------|------------------------------------------------------------------------------------------------------------------------------------|
147
+ | AWS | IAM ARN principals | arn:aws:iam::aws-account-id:root<br /> arn:aws:iam::aws-account-id:user/user-name<br /> arn:aws:iam::aws-account-id:role/role-name |
148
+ | Azure | Subscription (GUID) | XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX |
149
+ | GCP | Project IDs* | 6 to 30 lowercase letters, digits, or hyphens |
150
+
151
+ *https://cloud.google.com/resource-manager/reference/rest/v1/projects
152
+ """
153
+ return pulumi.get(self, "timeout")
154
+
155
+ @timeout.setter
156
+ def timeout(self, value: Optional[pulumi.Input[int]]):
157
+ pulumi.set(self, "timeout", value)
158
+
159
+
160
+ @pulumi.input_type
161
+ class _VpcConnectState:
162
+ def __init__(__self__, *,
163
+ active_zones: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
164
+ allowed_principals: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
165
+ allowed_projects: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
166
+ approved_subscriptions: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
167
+ instance_id: Optional[pulumi.Input[int]] = None,
168
+ region: Optional[pulumi.Input[str]] = None,
169
+ service_name: Optional[pulumi.Input[str]] = None,
170
+ sleep: Optional[pulumi.Input[int]] = None,
171
+ status: Optional[pulumi.Input[str]] = None,
172
+ timeout: Optional[pulumi.Input[int]] = None):
173
+ """
174
+ Input properties used for looking up and filtering VpcConnect resources.
175
+ :param pulumi.Input[Sequence[pulumi.Input[str]]] active_zones: Covering availability zones used when creating an endpoint from other VPC. (AWS)
176
+ :param pulumi.Input[Sequence[pulumi.Input[str]]] allowed_principals: List of allowed prinicpals used by AWS, see below table.
177
+ :param pulumi.Input[Sequence[pulumi.Input[str]]] allowed_projects: List of allowed projects used by GCP, see below table.
178
+ :param pulumi.Input[Sequence[pulumi.Input[str]]] approved_subscriptions: List of approved subscriptions used by Azure, see below table.
179
+ :param pulumi.Input[int] instance_id: The CloudAMQP instance identifier.
180
+ :param pulumi.Input[str] region: The region where the CloudAMQP instance is hosted.
181
+ :param pulumi.Input[str] service_name: Service name (alias for Azure) of the PrivateLink.
182
+ :param pulumi.Input[int] sleep: Configurable sleep time (seconds) when enable Private Service Connect.
183
+ Default set to 10 seconds.
184
+ :param pulumi.Input[str] status: Private Service Connect status [enable, pending, disable]
185
+ :param pulumi.Input[int] timeout: Configurable timeout time (seconds) when enable Private Service Connect.
186
+ Default set to 1800 seconds.
187
+
188
+ ___
189
+
190
+ The `allowed_principals`, `approved_subscriptions` or `allowed_projects` data depends on the provider platform:
191
+
192
+ | Platform | Description | Format |
193
+ |----------|---------------------|------------------------------------------------------------------------------------------------------------------------------------|
194
+ | AWS | IAM ARN principals | arn:aws:iam::aws-account-id:root<br /> arn:aws:iam::aws-account-id:user/user-name<br /> arn:aws:iam::aws-account-id:role/role-name |
195
+ | Azure | Subscription (GUID) | XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX |
196
+ | GCP | Project IDs* | 6 to 30 lowercase letters, digits, or hyphens |
197
+
198
+ *https://cloud.google.com/resource-manager/reference/rest/v1/projects
199
+ """
200
+ if active_zones is not None:
201
+ pulumi.set(__self__, "active_zones", active_zones)
202
+ if allowed_principals is not None:
203
+ pulumi.set(__self__, "allowed_principals", allowed_principals)
204
+ if allowed_projects is not None:
205
+ pulumi.set(__self__, "allowed_projects", allowed_projects)
206
+ if approved_subscriptions is not None:
207
+ pulumi.set(__self__, "approved_subscriptions", approved_subscriptions)
208
+ if instance_id is not None:
209
+ pulumi.set(__self__, "instance_id", instance_id)
210
+ if region is not None:
211
+ pulumi.set(__self__, "region", region)
212
+ if service_name is not None:
213
+ pulumi.set(__self__, "service_name", service_name)
214
+ if sleep is not None:
215
+ pulumi.set(__self__, "sleep", sleep)
216
+ if status is not None:
217
+ pulumi.set(__self__, "status", status)
218
+ if timeout is not None:
219
+ pulumi.set(__self__, "timeout", timeout)
220
+
221
+ @property
222
+ @pulumi.getter(name="activeZones")
223
+ def active_zones(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
224
+ """
225
+ Covering availability zones used when creating an endpoint from other VPC. (AWS)
226
+ """
227
+ return pulumi.get(self, "active_zones")
228
+
229
+ @active_zones.setter
230
+ def active_zones(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
231
+ pulumi.set(self, "active_zones", value)
232
+
233
+ @property
234
+ @pulumi.getter(name="allowedPrincipals")
235
+ def allowed_principals(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
236
+ """
237
+ List of allowed prinicpals used by AWS, see below table.
238
+ """
239
+ return pulumi.get(self, "allowed_principals")
240
+
241
+ @allowed_principals.setter
242
+ def allowed_principals(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
243
+ pulumi.set(self, "allowed_principals", value)
244
+
245
+ @property
246
+ @pulumi.getter(name="allowedProjects")
247
+ def allowed_projects(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
248
+ """
249
+ List of allowed projects used by GCP, see below table.
250
+ """
251
+ return pulumi.get(self, "allowed_projects")
252
+
253
+ @allowed_projects.setter
254
+ def allowed_projects(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
255
+ pulumi.set(self, "allowed_projects", value)
256
+
257
+ @property
258
+ @pulumi.getter(name="approvedSubscriptions")
259
+ def approved_subscriptions(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
260
+ """
261
+ List of approved subscriptions used by Azure, see below table.
262
+ """
263
+ return pulumi.get(self, "approved_subscriptions")
264
+
265
+ @approved_subscriptions.setter
266
+ def approved_subscriptions(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
267
+ pulumi.set(self, "approved_subscriptions", value)
268
+
269
+ @property
270
+ @pulumi.getter(name="instanceId")
271
+ def instance_id(self) -> Optional[pulumi.Input[int]]:
272
+ """
273
+ The CloudAMQP instance identifier.
274
+ """
275
+ return pulumi.get(self, "instance_id")
276
+
277
+ @instance_id.setter
278
+ def instance_id(self, value: Optional[pulumi.Input[int]]):
279
+ pulumi.set(self, "instance_id", value)
280
+
281
+ @property
282
+ @pulumi.getter
283
+ def region(self) -> Optional[pulumi.Input[str]]:
284
+ """
285
+ The region where the CloudAMQP instance is hosted.
286
+ """
287
+ return pulumi.get(self, "region")
288
+
289
+ @region.setter
290
+ def region(self, value: Optional[pulumi.Input[str]]):
291
+ pulumi.set(self, "region", value)
292
+
293
+ @property
294
+ @pulumi.getter(name="serviceName")
295
+ def service_name(self) -> Optional[pulumi.Input[str]]:
296
+ """
297
+ Service name (alias for Azure) of the PrivateLink.
298
+ """
299
+ return pulumi.get(self, "service_name")
300
+
301
+ @service_name.setter
302
+ def service_name(self, value: Optional[pulumi.Input[str]]):
303
+ pulumi.set(self, "service_name", value)
304
+
305
+ @property
306
+ @pulumi.getter
307
+ def sleep(self) -> Optional[pulumi.Input[int]]:
308
+ """
309
+ Configurable sleep time (seconds) when enable Private Service Connect.
310
+ Default set to 10 seconds.
311
+ """
312
+ return pulumi.get(self, "sleep")
313
+
314
+ @sleep.setter
315
+ def sleep(self, value: Optional[pulumi.Input[int]]):
316
+ pulumi.set(self, "sleep", value)
317
+
318
+ @property
319
+ @pulumi.getter
320
+ def status(self) -> Optional[pulumi.Input[str]]:
321
+ """
322
+ Private Service Connect status [enable, pending, disable]
323
+ """
324
+ return pulumi.get(self, "status")
325
+
326
+ @status.setter
327
+ def status(self, value: Optional[pulumi.Input[str]]):
328
+ pulumi.set(self, "status", value)
329
+
330
+ @property
331
+ @pulumi.getter
332
+ def timeout(self) -> Optional[pulumi.Input[int]]:
333
+ """
334
+ Configurable timeout time (seconds) when enable Private Service Connect.
335
+ Default set to 1800 seconds.
336
+
337
+ ___
338
+
339
+ The `allowed_principals`, `approved_subscriptions` or `allowed_projects` data depends on the provider platform:
340
+
341
+ | Platform | Description | Format |
342
+ |----------|---------------------|------------------------------------------------------------------------------------------------------------------------------------|
343
+ | AWS | IAM ARN principals | arn:aws:iam::aws-account-id:root<br /> arn:aws:iam::aws-account-id:user/user-name<br /> arn:aws:iam::aws-account-id:role/role-name |
344
+ | Azure | Subscription (GUID) | XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX |
345
+ | GCP | Project IDs* | 6 to 30 lowercase letters, digits, or hyphens |
346
+
347
+ *https://cloud.google.com/resource-manager/reference/rest/v1/projects
348
+ """
349
+ return pulumi.get(self, "timeout")
350
+
351
+ @timeout.setter
352
+ def timeout(self, value: Optional[pulumi.Input[int]]):
353
+ pulumi.set(self, "timeout", value)
354
+
355
+
356
+ class VpcConnect(pulumi.CustomResource):
357
+ @overload
358
+ def __init__(__self__,
359
+ resource_name: str,
360
+ opts: Optional[pulumi.ResourceOptions] = None,
361
+ allowed_principals: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
362
+ allowed_projects: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
363
+ approved_subscriptions: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
364
+ instance_id: Optional[pulumi.Input[int]] = None,
365
+ region: Optional[pulumi.Input[str]] = None,
366
+ sleep: Optional[pulumi.Input[int]] = None,
367
+ timeout: Optional[pulumi.Input[int]] = None,
368
+ __props__=None):
369
+ """
370
+ This resource is a generic way to handle PrivateLink (AWS and Azure) and Private Service Connect (GCP).
371
+ Communication between resources can be done just as they were living inside a VPC. CloudAMQP creates an Endpoint
372
+ Service to connect the VPC and creating a new network interface to handle the communicate.
373
+
374
+ If no existing VPC available when enable VPC connect, a new VPC will be created with subnet `10.52.72.0/24`.
375
+
376
+ More information can be found at: [CloudAMQP VPC Connect](https://www.cloudamqp.com/docs/cloudamqp-vpc-connect.html)
377
+
378
+ > **Note:** Enabling VPC Connect will automatically add a firewall rule.
379
+
380
+ <details>
381
+ <summary>
382
+ <b>
383
+ <i>Default PrivateLink firewall rule [AWS, Azure]</i>
384
+ </b>
385
+ </summary>
386
+
387
+ ```python
388
+ import pulumi
389
+ ```
390
+
391
+ </details>
392
+
393
+ <details>
394
+ <summary>
395
+ <b>
396
+ <i>Default Private Service Connect firewall rule [GCP]</i>
397
+ </b>
398
+ </summary>
399
+
400
+ ```python
401
+ import pulumi
402
+ ```
403
+
404
+ </details>
405
+
406
+ Only available for dedicated subscription plans.
407
+
408
+ ## Example Usage
409
+
410
+ <details>
411
+ <summary>
412
+ <b>
413
+ <i>Enable VPC Connect (PrivateLink) in AWS</i>
414
+ </b>
415
+ </summary>
416
+
417
+ ```python
418
+ import pulumi
419
+ import pulumi_cloudamqp as cloudamqp
420
+
421
+ vpc = cloudamqp.Vpc("vpc",
422
+ region="amazon-web-services::us-west-1",
423
+ subnet="10.56.72.0/24",
424
+ tags=[])
425
+ instance = cloudamqp.Instance("instance",
426
+ plan="bunny-1",
427
+ region="amazon-web-services::us-west-1",
428
+ tags=[],
429
+ vpc_id=vpc.id,
430
+ keep_associated_vpc=True)
431
+ vpc_connect = cloudamqp.VpcConnect("vpcConnect",
432
+ instance_id=instance.id,
433
+ region=instance.region,
434
+ allowed_principals=["arn:aws:iam::aws-account-id:user/user-name"])
435
+ ```
436
+
437
+ </details>
438
+
439
+ <details>
440
+ <summary>
441
+ <b>
442
+ <i>Enable VPC Connect (PrivateLink) in Azure</i>
443
+ </b>
444
+ </summary>
445
+
446
+ ```python
447
+ import pulumi
448
+ import pulumi_cloudamqp as cloudamqp
449
+
450
+ vpc = cloudamqp.Vpc("vpc",
451
+ region="azure-arm::westus",
452
+ subnet="10.56.72.0/24",
453
+ tags=[])
454
+ instance = cloudamqp.Instance("instance",
455
+ plan="bunny-1",
456
+ region="azure-arm::westus",
457
+ tags=[],
458
+ vpc_id=vpc.id,
459
+ keep_associated_vpc=True)
460
+ vpc_connect = cloudamqp.VpcConnect("vpcConnect",
461
+ instance_id=instance.id,
462
+ region=instance.region,
463
+ approved_subscriptions=["XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"])
464
+ ```
465
+
466
+ </details>
467
+
468
+ <details>
469
+ <summary>
470
+ <b>
471
+ <i>Enable VPC Connect (Private Service Connect) in GCP</i>
472
+ </b>
473
+ </summary>
474
+
475
+ ```python
476
+ import pulumi
477
+ import pulumi_cloudamqp as cloudamqp
478
+
479
+ vpc = cloudamqp.Vpc("vpc",
480
+ region="google-compute-engine::us-west1",
481
+ subnet="10.56.72.0/24",
482
+ tags=[])
483
+ instance = cloudamqp.Instance("instance",
484
+ plan="bunny-1",
485
+ region="google-compute-engine::us-west1",
486
+ tags=[],
487
+ vpc_id=vpc.id,
488
+ keep_associated_vpc=True)
489
+ vpc_connect = cloudamqp.VpcConnect("vpcConnect",
490
+ instance_id=instance.id,
491
+ region=instance.region,
492
+ allowed_projects=["some-project-123456"])
493
+ ```
494
+
495
+ </details>
496
+ ### With Additional Firewall Rules
497
+
498
+ <details>
499
+ <summary>
500
+ <b>
501
+ <i>CloudAMQP instance in an existing VPC with managed firewall rules</i>
502
+ </b>
503
+ </summary>
504
+
505
+ ```python
506
+ import pulumi
507
+ import pulumi_cloudamqp as cloudamqp
508
+
509
+ vpc = cloudamqp.Vpc("vpc",
510
+ region="amazon-web-services::us-west-1",
511
+ subnet="10.56.72.0/24",
512
+ tags=[])
513
+ instance = cloudamqp.Instance("instance",
514
+ plan="bunny-1",
515
+ region="amazon-web-services::us-west-1",
516
+ tags=[],
517
+ vpc_id=vpc.id,
518
+ keep_associated_vpc=True)
519
+ vpc_connect = cloudamqp.VpcConnect("vpcConnect",
520
+ instance_id=instance.id,
521
+ allowed_principals=["arn:aws:iam::aws-account-id:user/user-name"])
522
+ firewall_settings = cloudamqp.SecurityFirewall("firewallSettings",
523
+ instance_id=instance.id,
524
+ rules=[
525
+ cloudamqp.SecurityFirewallRuleArgs(
526
+ description="Custom PrivateLink setup",
527
+ ip=vpc.subnet,
528
+ ports=[],
529
+ services=[
530
+ "AMQP",
531
+ "AMQPS",
532
+ "HTTPS",
533
+ "STREAM",
534
+ "STREAM_SSL",
535
+ ],
536
+ ),
537
+ cloudamqp.SecurityFirewallRuleArgs(
538
+ description="MGMT interface",
539
+ ip="0.0.0.0/0",
540
+ ports=[],
541
+ services=["HTTPS"],
542
+ ),
543
+ ],
544
+ opts=pulumi.ResourceOptions(depends_on=[vpc_connect]))
545
+ ```
546
+
547
+ </details>
548
+ ## Depedency
549
+
550
+ This resource depends on CloudAMQP instance identifier, `cloudamqp_instance.instance.id`.
551
+
552
+ Since `region` also is required, suggest to reuse the argument from CloudAMQP instance,
553
+ `cloudamqp_instance.instance.region`.
554
+
555
+ ## Create VPC Connect with additional firewall rules
556
+
557
+ To create a PrivateLink/Private Service Connect configuration with additional firewall rules, it's required to chain the SecurityFirewall
558
+ resource to avoid parallel conflicting resource calls. You can do this by making the firewall
559
+ resource depend on the VPC Connect resource, `cloudamqp_vpc_connect.vpc_connect`.
560
+
561
+ Furthermore, since all firewall rules are overwritten, the otherwise automatically added rules for
562
+ the VPC Connect also needs to be added.
563
+
564
+ ## Import
565
+
566
+ `cloudamqp_vpc_connect` can be imported using CloudAMQP internal identifier.
567
+
568
+ ```sh
569
+ $ pulumi import cloudamqp:index/vpcConnect:VpcConnect vpc_connect <id>`
570
+ ```
571
+
572
+ The resource uses the same identifier as the CloudAMQP instance. To retrieve the identifier for an instance, either use [CloudAMQP customer API](https://docs.cloudamqp.com/#list-instances) or use the data source [`cloudamqp_account`](./data-sources/account.md).
573
+
574
+ :param str resource_name: The name of the resource.
575
+ :param pulumi.ResourceOptions opts: Options for the resource.
576
+ :param pulumi.Input[Sequence[pulumi.Input[str]]] allowed_principals: List of allowed prinicpals used by AWS, see below table.
577
+ :param pulumi.Input[Sequence[pulumi.Input[str]]] allowed_projects: List of allowed projects used by GCP, see below table.
578
+ :param pulumi.Input[Sequence[pulumi.Input[str]]] approved_subscriptions: List of approved subscriptions used by Azure, see below table.
579
+ :param pulumi.Input[int] instance_id: The CloudAMQP instance identifier.
580
+ :param pulumi.Input[str] region: The region where the CloudAMQP instance is hosted.
581
+ :param pulumi.Input[int] sleep: Configurable sleep time (seconds) when enable Private Service Connect.
582
+ Default set to 10 seconds.
583
+ :param pulumi.Input[int] timeout: Configurable timeout time (seconds) when enable Private Service Connect.
584
+ Default set to 1800 seconds.
585
+
586
+ ___
587
+
588
+ The `allowed_principals`, `approved_subscriptions` or `allowed_projects` data depends on the provider platform:
589
+
590
+ | Platform | Description | Format |
591
+ |----------|---------------------|------------------------------------------------------------------------------------------------------------------------------------|
592
+ | AWS | IAM ARN principals | arn:aws:iam::aws-account-id:root<br /> arn:aws:iam::aws-account-id:user/user-name<br /> arn:aws:iam::aws-account-id:role/role-name |
593
+ | Azure | Subscription (GUID) | XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX |
594
+ | GCP | Project IDs* | 6 to 30 lowercase letters, digits, or hyphens |
595
+
596
+ *https://cloud.google.com/resource-manager/reference/rest/v1/projects
597
+ """
598
+ ...
599
+ @overload
600
+ def __init__(__self__,
601
+ resource_name: str,
602
+ args: VpcConnectArgs,
603
+ opts: Optional[pulumi.ResourceOptions] = None):
604
+ """
605
+ This resource is a generic way to handle PrivateLink (AWS and Azure) and Private Service Connect (GCP).
606
+ Communication between resources can be done just as they were living inside a VPC. CloudAMQP creates an Endpoint
607
+ Service to connect the VPC and creating a new network interface to handle the communicate.
608
+
609
+ If no existing VPC available when enable VPC connect, a new VPC will be created with subnet `10.52.72.0/24`.
610
+
611
+ More information can be found at: [CloudAMQP VPC Connect](https://www.cloudamqp.com/docs/cloudamqp-vpc-connect.html)
612
+
613
+ > **Note:** Enabling VPC Connect will automatically add a firewall rule.
614
+
615
+ <details>
616
+ <summary>
617
+ <b>
618
+ <i>Default PrivateLink firewall rule [AWS, Azure]</i>
619
+ </b>
620
+ </summary>
621
+
622
+ ```python
623
+ import pulumi
624
+ ```
625
+
626
+ </details>
627
+
628
+ <details>
629
+ <summary>
630
+ <b>
631
+ <i>Default Private Service Connect firewall rule [GCP]</i>
632
+ </b>
633
+ </summary>
634
+
635
+ ```python
636
+ import pulumi
637
+ ```
638
+
639
+ </details>
640
+
641
+ Only available for dedicated subscription plans.
642
+
643
+ ## Example Usage
644
+
645
+ <details>
646
+ <summary>
647
+ <b>
648
+ <i>Enable VPC Connect (PrivateLink) in AWS</i>
649
+ </b>
650
+ </summary>
651
+
652
+ ```python
653
+ import pulumi
654
+ import pulumi_cloudamqp as cloudamqp
655
+
656
+ vpc = cloudamqp.Vpc("vpc",
657
+ region="amazon-web-services::us-west-1",
658
+ subnet="10.56.72.0/24",
659
+ tags=[])
660
+ instance = cloudamqp.Instance("instance",
661
+ plan="bunny-1",
662
+ region="amazon-web-services::us-west-1",
663
+ tags=[],
664
+ vpc_id=vpc.id,
665
+ keep_associated_vpc=True)
666
+ vpc_connect = cloudamqp.VpcConnect("vpcConnect",
667
+ instance_id=instance.id,
668
+ region=instance.region,
669
+ allowed_principals=["arn:aws:iam::aws-account-id:user/user-name"])
670
+ ```
671
+
672
+ </details>
673
+
674
+ <details>
675
+ <summary>
676
+ <b>
677
+ <i>Enable VPC Connect (PrivateLink) in Azure</i>
678
+ </b>
679
+ </summary>
680
+
681
+ ```python
682
+ import pulumi
683
+ import pulumi_cloudamqp as cloudamqp
684
+
685
+ vpc = cloudamqp.Vpc("vpc",
686
+ region="azure-arm::westus",
687
+ subnet="10.56.72.0/24",
688
+ tags=[])
689
+ instance = cloudamqp.Instance("instance",
690
+ plan="bunny-1",
691
+ region="azure-arm::westus",
692
+ tags=[],
693
+ vpc_id=vpc.id,
694
+ keep_associated_vpc=True)
695
+ vpc_connect = cloudamqp.VpcConnect("vpcConnect",
696
+ instance_id=instance.id,
697
+ region=instance.region,
698
+ approved_subscriptions=["XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"])
699
+ ```
700
+
701
+ </details>
702
+
703
+ <details>
704
+ <summary>
705
+ <b>
706
+ <i>Enable VPC Connect (Private Service Connect) in GCP</i>
707
+ </b>
708
+ </summary>
709
+
710
+ ```python
711
+ import pulumi
712
+ import pulumi_cloudamqp as cloudamqp
713
+
714
+ vpc = cloudamqp.Vpc("vpc",
715
+ region="google-compute-engine::us-west1",
716
+ subnet="10.56.72.0/24",
717
+ tags=[])
718
+ instance = cloudamqp.Instance("instance",
719
+ plan="bunny-1",
720
+ region="google-compute-engine::us-west1",
721
+ tags=[],
722
+ vpc_id=vpc.id,
723
+ keep_associated_vpc=True)
724
+ vpc_connect = cloudamqp.VpcConnect("vpcConnect",
725
+ instance_id=instance.id,
726
+ region=instance.region,
727
+ allowed_projects=["some-project-123456"])
728
+ ```
729
+
730
+ </details>
731
+ ### With Additional Firewall Rules
732
+
733
+ <details>
734
+ <summary>
735
+ <b>
736
+ <i>CloudAMQP instance in an existing VPC with managed firewall rules</i>
737
+ </b>
738
+ </summary>
739
+
740
+ ```python
741
+ import pulumi
742
+ import pulumi_cloudamqp as cloudamqp
743
+
744
+ vpc = cloudamqp.Vpc("vpc",
745
+ region="amazon-web-services::us-west-1",
746
+ subnet="10.56.72.0/24",
747
+ tags=[])
748
+ instance = cloudamqp.Instance("instance",
749
+ plan="bunny-1",
750
+ region="amazon-web-services::us-west-1",
751
+ tags=[],
752
+ vpc_id=vpc.id,
753
+ keep_associated_vpc=True)
754
+ vpc_connect = cloudamqp.VpcConnect("vpcConnect",
755
+ instance_id=instance.id,
756
+ allowed_principals=["arn:aws:iam::aws-account-id:user/user-name"])
757
+ firewall_settings = cloudamqp.SecurityFirewall("firewallSettings",
758
+ instance_id=instance.id,
759
+ rules=[
760
+ cloudamqp.SecurityFirewallRuleArgs(
761
+ description="Custom PrivateLink setup",
762
+ ip=vpc.subnet,
763
+ ports=[],
764
+ services=[
765
+ "AMQP",
766
+ "AMQPS",
767
+ "HTTPS",
768
+ "STREAM",
769
+ "STREAM_SSL",
770
+ ],
771
+ ),
772
+ cloudamqp.SecurityFirewallRuleArgs(
773
+ description="MGMT interface",
774
+ ip="0.0.0.0/0",
775
+ ports=[],
776
+ services=["HTTPS"],
777
+ ),
778
+ ],
779
+ opts=pulumi.ResourceOptions(depends_on=[vpc_connect]))
780
+ ```
781
+
782
+ </details>
783
+ ## Depedency
784
+
785
+ This resource depends on CloudAMQP instance identifier, `cloudamqp_instance.instance.id`.
786
+
787
+ Since `region` also is required, suggest to reuse the argument from CloudAMQP instance,
788
+ `cloudamqp_instance.instance.region`.
789
+
790
+ ## Create VPC Connect with additional firewall rules
791
+
792
+ To create a PrivateLink/Private Service Connect configuration with additional firewall rules, it's required to chain the SecurityFirewall
793
+ resource to avoid parallel conflicting resource calls. You can do this by making the firewall
794
+ resource depend on the VPC Connect resource, `cloudamqp_vpc_connect.vpc_connect`.
795
+
796
+ Furthermore, since all firewall rules are overwritten, the otherwise automatically added rules for
797
+ the VPC Connect also needs to be added.
798
+
799
+ ## Import
800
+
801
+ `cloudamqp_vpc_connect` can be imported using CloudAMQP internal identifier.
802
+
803
+ ```sh
804
+ $ pulumi import cloudamqp:index/vpcConnect:VpcConnect vpc_connect <id>`
805
+ ```
806
+
807
+ The resource uses the same identifier as the CloudAMQP instance. To retrieve the identifier for an instance, either use [CloudAMQP customer API](https://docs.cloudamqp.com/#list-instances) or use the data source [`cloudamqp_account`](./data-sources/account.md).
808
+
809
+ :param str resource_name: The name of the resource.
810
+ :param VpcConnectArgs args: The arguments to use to populate this resource's properties.
811
+ :param pulumi.ResourceOptions opts: Options for the resource.
812
+ """
813
+ ...
814
+ def __init__(__self__, resource_name: str, *args, **kwargs):
815
+ resource_args, opts = _utilities.get_resource_args_opts(VpcConnectArgs, pulumi.ResourceOptions, *args, **kwargs)
816
+ if resource_args is not None:
817
+ __self__._internal_init(resource_name, opts, **resource_args.__dict__)
818
+ else:
819
+ __self__._internal_init(resource_name, *args, **kwargs)
820
+
821
+ def _internal_init(__self__,
822
+ resource_name: str,
823
+ opts: Optional[pulumi.ResourceOptions] = None,
824
+ allowed_principals: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
825
+ allowed_projects: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
826
+ approved_subscriptions: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
827
+ instance_id: Optional[pulumi.Input[int]] = None,
828
+ region: Optional[pulumi.Input[str]] = None,
829
+ sleep: Optional[pulumi.Input[int]] = None,
830
+ timeout: Optional[pulumi.Input[int]] = None,
831
+ __props__=None):
832
+ opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
833
+ if not isinstance(opts, pulumi.ResourceOptions):
834
+ raise TypeError('Expected resource options to be a ResourceOptions instance')
835
+ if opts.id is None:
836
+ if __props__ is not None:
837
+ raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
838
+ __props__ = VpcConnectArgs.__new__(VpcConnectArgs)
839
+
840
+ __props__.__dict__["allowed_principals"] = allowed_principals
841
+ __props__.__dict__["allowed_projects"] = allowed_projects
842
+ __props__.__dict__["approved_subscriptions"] = approved_subscriptions
843
+ if instance_id is None and not opts.urn:
844
+ raise TypeError("Missing required property 'instance_id'")
845
+ __props__.__dict__["instance_id"] = instance_id
846
+ if region is None and not opts.urn:
847
+ raise TypeError("Missing required property 'region'")
848
+ __props__.__dict__["region"] = region
849
+ __props__.__dict__["sleep"] = sleep
850
+ __props__.__dict__["timeout"] = timeout
851
+ __props__.__dict__["active_zones"] = None
852
+ __props__.__dict__["service_name"] = None
853
+ __props__.__dict__["status"] = None
854
+ super(VpcConnect, __self__).__init__(
855
+ 'cloudamqp:index/vpcConnect:VpcConnect',
856
+ resource_name,
857
+ __props__,
858
+ opts)
859
+
860
+ @staticmethod
861
+ def get(resource_name: str,
862
+ id: pulumi.Input[str],
863
+ opts: Optional[pulumi.ResourceOptions] = None,
864
+ active_zones: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
865
+ allowed_principals: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
866
+ allowed_projects: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
867
+ approved_subscriptions: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
868
+ instance_id: Optional[pulumi.Input[int]] = None,
869
+ region: Optional[pulumi.Input[str]] = None,
870
+ service_name: Optional[pulumi.Input[str]] = None,
871
+ sleep: Optional[pulumi.Input[int]] = None,
872
+ status: Optional[pulumi.Input[str]] = None,
873
+ timeout: Optional[pulumi.Input[int]] = None) -> 'VpcConnect':
874
+ """
875
+ Get an existing VpcConnect resource's state with the given name, id, and optional extra
876
+ properties used to qualify the lookup.
877
+
878
+ :param str resource_name: The unique name of the resulting resource.
879
+ :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
880
+ :param pulumi.ResourceOptions opts: Options for the resource.
881
+ :param pulumi.Input[Sequence[pulumi.Input[str]]] active_zones: Covering availability zones used when creating an endpoint from other VPC. (AWS)
882
+ :param pulumi.Input[Sequence[pulumi.Input[str]]] allowed_principals: List of allowed prinicpals used by AWS, see below table.
883
+ :param pulumi.Input[Sequence[pulumi.Input[str]]] allowed_projects: List of allowed projects used by GCP, see below table.
884
+ :param pulumi.Input[Sequence[pulumi.Input[str]]] approved_subscriptions: List of approved subscriptions used by Azure, see below table.
885
+ :param pulumi.Input[int] instance_id: The CloudAMQP instance identifier.
886
+ :param pulumi.Input[str] region: The region where the CloudAMQP instance is hosted.
887
+ :param pulumi.Input[str] service_name: Service name (alias for Azure) of the PrivateLink.
888
+ :param pulumi.Input[int] sleep: Configurable sleep time (seconds) when enable Private Service Connect.
889
+ Default set to 10 seconds.
890
+ :param pulumi.Input[str] status: Private Service Connect status [enable, pending, disable]
891
+ :param pulumi.Input[int] timeout: Configurable timeout time (seconds) when enable Private Service Connect.
892
+ Default set to 1800 seconds.
893
+
894
+ ___
895
+
896
+ The `allowed_principals`, `approved_subscriptions` or `allowed_projects` data depends on the provider platform:
897
+
898
+ | Platform | Description | Format |
899
+ |----------|---------------------|------------------------------------------------------------------------------------------------------------------------------------|
900
+ | AWS | IAM ARN principals | arn:aws:iam::aws-account-id:root<br /> arn:aws:iam::aws-account-id:user/user-name<br /> arn:aws:iam::aws-account-id:role/role-name |
901
+ | Azure | Subscription (GUID) | XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX |
902
+ | GCP | Project IDs* | 6 to 30 lowercase letters, digits, or hyphens |
903
+
904
+ *https://cloud.google.com/resource-manager/reference/rest/v1/projects
905
+ """
906
+ opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))
907
+
908
+ __props__ = _VpcConnectState.__new__(_VpcConnectState)
909
+
910
+ __props__.__dict__["active_zones"] = active_zones
911
+ __props__.__dict__["allowed_principals"] = allowed_principals
912
+ __props__.__dict__["allowed_projects"] = allowed_projects
913
+ __props__.__dict__["approved_subscriptions"] = approved_subscriptions
914
+ __props__.__dict__["instance_id"] = instance_id
915
+ __props__.__dict__["region"] = region
916
+ __props__.__dict__["service_name"] = service_name
917
+ __props__.__dict__["sleep"] = sleep
918
+ __props__.__dict__["status"] = status
919
+ __props__.__dict__["timeout"] = timeout
920
+ return VpcConnect(resource_name, opts=opts, __props__=__props__)
921
+
922
+ @property
923
+ @pulumi.getter(name="activeZones")
924
+ def active_zones(self) -> pulumi.Output[Sequence[str]]:
925
+ """
926
+ Covering availability zones used when creating an endpoint from other VPC. (AWS)
927
+ """
928
+ return pulumi.get(self, "active_zones")
929
+
930
+ @property
931
+ @pulumi.getter(name="allowedPrincipals")
932
+ def allowed_principals(self) -> pulumi.Output[Optional[Sequence[str]]]:
933
+ """
934
+ List of allowed prinicpals used by AWS, see below table.
935
+ """
936
+ return pulumi.get(self, "allowed_principals")
937
+
938
+ @property
939
+ @pulumi.getter(name="allowedProjects")
940
+ def allowed_projects(self) -> pulumi.Output[Optional[Sequence[str]]]:
941
+ """
942
+ List of allowed projects used by GCP, see below table.
943
+ """
944
+ return pulumi.get(self, "allowed_projects")
945
+
946
+ @property
947
+ @pulumi.getter(name="approvedSubscriptions")
948
+ def approved_subscriptions(self) -> pulumi.Output[Optional[Sequence[str]]]:
949
+ """
950
+ List of approved subscriptions used by Azure, see below table.
951
+ """
952
+ return pulumi.get(self, "approved_subscriptions")
953
+
954
+ @property
955
+ @pulumi.getter(name="instanceId")
956
+ def instance_id(self) -> pulumi.Output[int]:
957
+ """
958
+ The CloudAMQP instance identifier.
959
+ """
960
+ return pulumi.get(self, "instance_id")
961
+
962
+ @property
963
+ @pulumi.getter
964
+ def region(self) -> pulumi.Output[str]:
965
+ """
966
+ The region where the CloudAMQP instance is hosted.
967
+ """
968
+ return pulumi.get(self, "region")
969
+
970
+ @property
971
+ @pulumi.getter(name="serviceName")
972
+ def service_name(self) -> pulumi.Output[str]:
973
+ """
974
+ Service name (alias for Azure) of the PrivateLink.
975
+ """
976
+ return pulumi.get(self, "service_name")
977
+
978
+ @property
979
+ @pulumi.getter
980
+ def sleep(self) -> pulumi.Output[Optional[int]]:
981
+ """
982
+ Configurable sleep time (seconds) when enable Private Service Connect.
983
+ Default set to 10 seconds.
984
+ """
985
+ return pulumi.get(self, "sleep")
986
+
987
+ @property
988
+ @pulumi.getter
989
+ def status(self) -> pulumi.Output[str]:
990
+ """
991
+ Private Service Connect status [enable, pending, disable]
992
+ """
993
+ return pulumi.get(self, "status")
994
+
995
+ @property
996
+ @pulumi.getter
997
+ def timeout(self) -> pulumi.Output[Optional[int]]:
998
+ """
999
+ Configurable timeout time (seconds) when enable Private Service Connect.
1000
+ Default set to 1800 seconds.
1001
+
1002
+ ___
1003
+
1004
+ The `allowed_principals`, `approved_subscriptions` or `allowed_projects` data depends on the provider platform:
1005
+
1006
+ | Platform | Description | Format |
1007
+ |----------|---------------------|------------------------------------------------------------------------------------------------------------------------------------|
1008
+ | AWS | IAM ARN principals | arn:aws:iam::aws-account-id:root<br /> arn:aws:iam::aws-account-id:user/user-name<br /> arn:aws:iam::aws-account-id:role/role-name |
1009
+ | Azure | Subscription (GUID) | XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX |
1010
+ | GCP | Project IDs* | 6 to 30 lowercase letters, digits, or hyphens |
1011
+
1012
+ *https://cloud.google.com/resource-manager/reference/rest/v1/projects
1013
+ """
1014
+ return pulumi.get(self, "timeout")
1015
+