@pulumi/cloudngfwaws 1.1.0-alpha.1777010799 → 2.0.0
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/README.md +2 -2
- package/getNgfw.d.ts +47 -8
- package/getNgfw.js +24 -0
- package/getNgfw.js.map +1 -1
- package/getNgfwLogProfile.d.ts +9 -1
- package/getNgfwLogProfile.js +2 -0
- package/getNgfwLogProfile.js.map +1 -1
- package/ngfw.d.ts +266 -22
- package/ngfw.js +246 -20
- package/ngfw.js.map +1 -1
- package/ngfwLogProfile.d.ts +67 -3
- package/ngfwLogProfile.js +64 -3
- package/ngfwLogProfile.js.map +1 -1
- package/package.json +2 -2
- package/types/input.d.ts +67 -0
- package/types/output.d.ts +142 -0
package/README.md
CHANGED
|
@@ -8,7 +8,7 @@ This package is available for several languages/platforms:
|
|
|
8
8
|
|
|
9
9
|
- JavaScript/TypeScript: [`@pulumi/cloudngfwaws`](https://www.npmjs.com/package/@pulumi/cloudngfwaws)
|
|
10
10
|
- Python: [`pulumi-cloudngfwaws`](https://pypi.org/project/pulumi-cloudngfwaws/)
|
|
11
|
-
- Go: [`github.com/pulumi/pulumi-cloudngfwaws/sdk/go/cloudngfwaws`](https://pkg.go.dev/github.com/pulumi/pulumi-cloudngfwaws/sdk/go/cloudngfwaws)
|
|
11
|
+
- Go: [`github.com/pulumi/pulumi-cloudngfwaws/sdk/v2/go/cloudngfwaws`](https://pkg.go.dev/github.com/pulumi/pulumi-cloudngfwaws/sdk/v2/go/cloudngfwaws)
|
|
12
12
|
- .NET: [`Pulumi.CloudNgfwAws`](https://www.nuget.org/packages/Pulumi.CloudNgfwAws)
|
|
13
13
|
|
|
14
14
|
### Node.js (JavaScript/TypeScript)
|
|
@@ -38,7 +38,7 @@ pip install pulumi-cloudngfwaws
|
|
|
38
38
|
To use from Go, use `go get` to grab the latest version of the library:
|
|
39
39
|
|
|
40
40
|
```bash
|
|
41
|
-
go get github.com/pulumi/pulumi-cloudngfwaws/sdk/go/cloudngfwaws
|
|
41
|
+
go get github.com/pulumi/pulumi-cloudngfwaws/sdk/v2/go/cloudngfwaws
|
|
42
42
|
```
|
|
43
43
|
|
|
44
44
|
### .NET
|
package/getNgfw.d.ts
CHANGED
|
@@ -8,25 +8,42 @@ import * as outputs from "./types/output";
|
|
|
8
8
|
* * `Firewall`
|
|
9
9
|
*
|
|
10
10
|
* ## Example Usage
|
|
11
|
+
*
|
|
12
|
+
* ```typescript
|
|
13
|
+
* import * as pulumi from "@pulumi/pulumi";
|
|
14
|
+
* import * as cloudngfwaws from "@pulumi/cloudngfwaws";
|
|
15
|
+
*
|
|
16
|
+
* const example = cloudngfwaws.getNgfw({
|
|
17
|
+
* name: "example-instance",
|
|
18
|
+
* });
|
|
19
|
+
* ```
|
|
11
20
|
*/
|
|
12
|
-
export declare function getNgfw(args
|
|
21
|
+
export declare function getNgfw(args?: GetNgfwArgs, opts?: pulumi.InvokeOptions): Promise<GetNgfwResult>;
|
|
13
22
|
/**
|
|
14
23
|
* A collection of arguments for invoking getNgfw.
|
|
15
24
|
*/
|
|
16
25
|
export interface GetNgfwArgs {
|
|
26
|
+
/**
|
|
27
|
+
* The Account Id.
|
|
28
|
+
*/
|
|
29
|
+
accountId?: string;
|
|
17
30
|
/**
|
|
18
31
|
* The Firewall ID.
|
|
19
32
|
*/
|
|
20
|
-
firewallId
|
|
33
|
+
firewallId?: string;
|
|
34
|
+
/**
|
|
35
|
+
* The NGFW name.
|
|
36
|
+
*/
|
|
37
|
+
name?: string;
|
|
21
38
|
}
|
|
22
39
|
/**
|
|
23
40
|
* A collection of values returned by getNgfw.
|
|
24
41
|
*/
|
|
25
42
|
export interface GetNgfwResult {
|
|
26
43
|
/**
|
|
27
|
-
* The
|
|
44
|
+
* The Account Id.
|
|
28
45
|
*/
|
|
29
|
-
readonly accountId
|
|
46
|
+
readonly accountId?: string;
|
|
30
47
|
/**
|
|
31
48
|
* The list of allowed accounts for this NGFW.
|
|
32
49
|
*/
|
|
@@ -68,7 +85,7 @@ export interface GetNgfwResult {
|
|
|
68
85
|
/**
|
|
69
86
|
* The Firewall ID.
|
|
70
87
|
*/
|
|
71
|
-
readonly firewallId
|
|
88
|
+
readonly firewallId?: string;
|
|
72
89
|
/**
|
|
73
90
|
* The global rulestack for this NGFW.
|
|
74
91
|
*/
|
|
@@ -92,12 +109,13 @@ export interface GetNgfwResult {
|
|
|
92
109
|
/**
|
|
93
110
|
* The NGFW name.
|
|
94
111
|
*/
|
|
95
|
-
readonly name
|
|
112
|
+
readonly name?: string;
|
|
96
113
|
readonly privateAccesses: outputs.GetNgfwPrivateAccess[];
|
|
97
114
|
/**
|
|
98
115
|
* The rulestack for this NGFW.
|
|
99
116
|
*/
|
|
100
117
|
readonly rulestack: string;
|
|
118
|
+
readonly securityZones: outputs.GetNgfwSecurityZone[];
|
|
101
119
|
readonly statuses: outputs.GetNgfwStatus[];
|
|
102
120
|
/**
|
|
103
121
|
* Subnet mappings.
|
|
@@ -109,6 +127,10 @@ export interface GetNgfwResult {
|
|
|
109
127
|
readonly tags: {
|
|
110
128
|
[key: string]: string;
|
|
111
129
|
};
|
|
130
|
+
/**
|
|
131
|
+
* Firewall Instance Tier. Allowed values are 'base', 'standard', or 'premium'.
|
|
132
|
+
*/
|
|
133
|
+
readonly tier: string;
|
|
112
134
|
/**
|
|
113
135
|
* The update token.
|
|
114
136
|
*/
|
|
@@ -127,14 +149,31 @@ export interface GetNgfwResult {
|
|
|
127
149
|
* * `Firewall`
|
|
128
150
|
*
|
|
129
151
|
* ## Example Usage
|
|
152
|
+
*
|
|
153
|
+
* ```typescript
|
|
154
|
+
* import * as pulumi from "@pulumi/pulumi";
|
|
155
|
+
* import * as cloudngfwaws from "@pulumi/cloudngfwaws";
|
|
156
|
+
*
|
|
157
|
+
* const example = cloudngfwaws.getNgfw({
|
|
158
|
+
* name: "example-instance",
|
|
159
|
+
* });
|
|
160
|
+
* ```
|
|
130
161
|
*/
|
|
131
|
-
export declare function getNgfwOutput(args
|
|
162
|
+
export declare function getNgfwOutput(args?: GetNgfwOutputArgs, opts?: pulumi.InvokeOutputOptions): pulumi.Output<GetNgfwResult>;
|
|
132
163
|
/**
|
|
133
164
|
* A collection of arguments for invoking getNgfw.
|
|
134
165
|
*/
|
|
135
166
|
export interface GetNgfwOutputArgs {
|
|
167
|
+
/**
|
|
168
|
+
* The Account Id.
|
|
169
|
+
*/
|
|
170
|
+
accountId?: pulumi.Input<string>;
|
|
136
171
|
/**
|
|
137
172
|
* The Firewall ID.
|
|
138
173
|
*/
|
|
139
|
-
firewallId
|
|
174
|
+
firewallId?: pulumi.Input<string>;
|
|
175
|
+
/**
|
|
176
|
+
* The NGFW name.
|
|
177
|
+
*/
|
|
178
|
+
name?: pulumi.Input<string>;
|
|
140
179
|
}
|
package/getNgfw.js
CHANGED
|
@@ -13,11 +13,23 @@ const utilities = require("./utilities");
|
|
|
13
13
|
* * `Firewall`
|
|
14
14
|
*
|
|
15
15
|
* ## Example Usage
|
|
16
|
+
*
|
|
17
|
+
* ```typescript
|
|
18
|
+
* import * as pulumi from "@pulumi/pulumi";
|
|
19
|
+
* import * as cloudngfwaws from "@pulumi/cloudngfwaws";
|
|
20
|
+
*
|
|
21
|
+
* const example = cloudngfwaws.getNgfw({
|
|
22
|
+
* name: "example-instance",
|
|
23
|
+
* });
|
|
24
|
+
* ```
|
|
16
25
|
*/
|
|
17
26
|
function getNgfw(args, opts) {
|
|
27
|
+
args = args || {};
|
|
18
28
|
opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {});
|
|
19
29
|
return pulumi.runtime.invoke("cloudngfwaws:index/getNgfw:getNgfw", {
|
|
30
|
+
"accountId": args.accountId,
|
|
20
31
|
"firewallId": args.firewallId,
|
|
32
|
+
"name": args.name,
|
|
21
33
|
}, opts);
|
|
22
34
|
}
|
|
23
35
|
exports.getNgfw = getNgfw;
|
|
@@ -29,11 +41,23 @@ exports.getNgfw = getNgfw;
|
|
|
29
41
|
* * `Firewall`
|
|
30
42
|
*
|
|
31
43
|
* ## Example Usage
|
|
44
|
+
*
|
|
45
|
+
* ```typescript
|
|
46
|
+
* import * as pulumi from "@pulumi/pulumi";
|
|
47
|
+
* import * as cloudngfwaws from "@pulumi/cloudngfwaws";
|
|
48
|
+
*
|
|
49
|
+
* const example = cloudngfwaws.getNgfw({
|
|
50
|
+
* name: "example-instance",
|
|
51
|
+
* });
|
|
52
|
+
* ```
|
|
32
53
|
*/
|
|
33
54
|
function getNgfwOutput(args, opts) {
|
|
55
|
+
args = args || {};
|
|
34
56
|
opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {});
|
|
35
57
|
return pulumi.runtime.invokeOutput("cloudngfwaws:index/getNgfw:getNgfw", {
|
|
58
|
+
"accountId": args.accountId,
|
|
36
59
|
"firewallId": args.firewallId,
|
|
60
|
+
"name": args.name,
|
|
37
61
|
}, opts);
|
|
38
62
|
}
|
|
39
63
|
exports.getNgfwOutput = getNgfwOutput;
|
package/getNgfw.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getNgfw.js","sourceRoot":"","sources":["../getNgfw.ts"],"names":[],"mappings":";AAAA,sEAAsE;AACtE,iFAAiF;;;AAEjF,yCAAyC;AAGzC,yCAAyC;AAEzC
|
|
1
|
+
{"version":3,"file":"getNgfw.js","sourceRoot":"","sources":["../getNgfw.ts"],"names":[],"mappings":";AAAA,sEAAsE;AACtE,iFAAiF;;;AAEjF,yCAAyC;AAGzC,yCAAyC;AAEzC;;;;;;;;;;;;;;;;;GAiBG;AACH,SAAgB,OAAO,CAAC,IAAkB,EAAE,IAA2B;IACnE,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;IAClB,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;IACzE,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,oCAAoC,EAAE;QAC/D,WAAW,EAAE,IAAI,CAAC,SAAS;QAC3B,YAAY,EAAE,IAAI,CAAC,UAAU;QAC7B,MAAM,EAAE,IAAI,CAAC,IAAI;KACpB,EAAE,IAAI,CAAC,CAAC;AACb,CAAC;AARD,0BAQC;AA2HD;;;;;;;;;;;;;;;;;GAiBG;AACH,SAAgB,aAAa,CAAC,IAAwB,EAAE,IAAiC;IACrF,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;IAClB,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;IACzE,OAAO,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,oCAAoC,EAAE;QACrE,WAAW,EAAE,IAAI,CAAC,SAAS;QAC3B,YAAY,EAAE,IAAI,CAAC,UAAU;QAC7B,MAAM,EAAE,IAAI,CAAC,IAAI;KACpB,EAAE,IAAI,CAAC,CAAC;AACb,CAAC;AARD,sCAQC"}
|
package/getNgfwLogProfile.d.ts
CHANGED
|
@@ -28,6 +28,10 @@ export interface GetNgfwLogProfileArgs {
|
|
|
28
28
|
* The unique ID of the account.
|
|
29
29
|
*/
|
|
30
30
|
accountId?: string;
|
|
31
|
+
/**
|
|
32
|
+
* The Firewall Id for the NGFW.
|
|
33
|
+
*/
|
|
34
|
+
firewallId?: string;
|
|
31
35
|
/**
|
|
32
36
|
* The name of the NGFW.
|
|
33
37
|
*/
|
|
@@ -56,7 +60,7 @@ export interface GetNgfwLogProfileResult {
|
|
|
56
60
|
/**
|
|
57
61
|
* The Firewall Id for the NGFW.
|
|
58
62
|
*/
|
|
59
|
-
readonly firewallId
|
|
63
|
+
readonly firewallId?: string;
|
|
60
64
|
/**
|
|
61
65
|
* The provider-assigned unique ID for this managed resource.
|
|
62
66
|
*/
|
|
@@ -110,6 +114,10 @@ export interface GetNgfwLogProfileOutputArgs {
|
|
|
110
114
|
* The unique ID of the account.
|
|
111
115
|
*/
|
|
112
116
|
accountId?: pulumi.Input<string>;
|
|
117
|
+
/**
|
|
118
|
+
* The Firewall Id for the NGFW.
|
|
119
|
+
*/
|
|
120
|
+
firewallId?: pulumi.Input<string>;
|
|
113
121
|
/**
|
|
114
122
|
* The name of the NGFW.
|
|
115
123
|
*/
|
package/getNgfwLogProfile.js
CHANGED
|
@@ -29,6 +29,7 @@ function getNgfwLogProfile(args, opts) {
|
|
|
29
29
|
opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {});
|
|
30
30
|
return pulumi.runtime.invoke("cloudngfwaws:index/getNgfwLogProfile:getNgfwLogProfile", {
|
|
31
31
|
"accountId": args.accountId,
|
|
32
|
+
"firewallId": args.firewallId,
|
|
32
33
|
"ngfw": args.ngfw,
|
|
33
34
|
}, opts);
|
|
34
35
|
}
|
|
@@ -57,6 +58,7 @@ function getNgfwLogProfileOutput(args, opts) {
|
|
|
57
58
|
opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {});
|
|
58
59
|
return pulumi.runtime.invokeOutput("cloudngfwaws:index/getNgfwLogProfile:getNgfwLogProfile", {
|
|
59
60
|
"accountId": args.accountId,
|
|
61
|
+
"firewallId": args.firewallId,
|
|
60
62
|
"ngfw": args.ngfw,
|
|
61
63
|
}, opts);
|
|
62
64
|
}
|
package/getNgfwLogProfile.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getNgfwLogProfile.js","sourceRoot":"","sources":["../getNgfwLogProfile.ts"],"names":[],"mappings":";AAAA,sEAAsE;AACtE,iFAAiF;;;AAEjF,yCAAyC;AAGzC,yCAAyC;AAEzC;;;;;;;;;;;;;;;;;;GAkBG;AACH,SAAgB,iBAAiB,CAAC,IAA4B,EAAE,IAA2B;IACvF,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;IAClB,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;IACzE,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,wDAAwD,EAAE;QACnF,WAAW,EAAE,IAAI,CAAC,SAAS;QAC3B,MAAM,EAAE,IAAI,CAAC,IAAI;KACpB,EAAE,IAAI,CAAC,CAAC;AACb,CAAC;
|
|
1
|
+
{"version":3,"file":"getNgfwLogProfile.js","sourceRoot":"","sources":["../getNgfwLogProfile.ts"],"names":[],"mappings":";AAAA,sEAAsE;AACtE,iFAAiF;;;AAEjF,yCAAyC;AAGzC,yCAAyC;AAEzC;;;;;;;;;;;;;;;;;;GAkBG;AACH,SAAgB,iBAAiB,CAAC,IAA4B,EAAE,IAA2B;IACvF,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;IAClB,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;IACzE,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,wDAAwD,EAAE;QACnF,WAAW,EAAE,IAAI,CAAC,SAAS;QAC3B,YAAY,EAAE,IAAI,CAAC,UAAU;QAC7B,MAAM,EAAE,IAAI,CAAC,IAAI;KACpB,EAAE,IAAI,CAAC,CAAC;AACb,CAAC;AARD,8CAQC;AAqED;;;;;;;;;;;;;;;;;;GAkBG;AACH,SAAgB,uBAAuB,CAAC,IAAkC,EAAE,IAAiC;IACzG,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;IAClB,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;IACzE,OAAO,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,wDAAwD,EAAE;QACzF,WAAW,EAAE,IAAI,CAAC,SAAS;QAC3B,YAAY,EAAE,IAAI,CAAC,UAAU;QAC7B,MAAM,EAAE,IAAI,CAAC,IAAI;KACpB,EAAE,IAAI,CAAC,CAAC;AACb,CAAC;AARD,0DAQC"}
|
package/ngfw.d.ts
CHANGED
|
@@ -10,47 +10,272 @@ import * as outputs from "./types/output";
|
|
|
10
10
|
*
|
|
11
11
|
* * `Firewall`
|
|
12
12
|
*
|
|
13
|
-
* ##
|
|
13
|
+
* ## Configuration Guide
|
|
14
|
+
*
|
|
15
|
+
* ***
|
|
16
|
+
*
|
|
17
|
+
* ### V1 Schema — Existing Deployments Only
|
|
18
|
+
*
|
|
19
|
+
* > **Important:** V1 schema is for existing customers who already have firewalls deployed with Terraform.
|
|
20
|
+
* New firewalls must be created using the V2 schema.
|
|
21
|
+
*
|
|
22
|
+
* ***
|
|
23
|
+
*
|
|
24
|
+
* #### 1. Managing an Existing Firewall (no configuration changes)
|
|
25
|
+
*
|
|
26
|
+
* Use the V1 schema as-is. No steps required beyond ensuring your existing state is in sync.
|
|
27
|
+
*
|
|
28
|
+
* **Steps:**
|
|
29
|
+
*
|
|
30
|
+
* 1. Verify there is no unintended drift:
|
|
31
|
+
* 2. If the plan is clean, no action needed. If drift is detected, review and apply:
|
|
32
|
+
*
|
|
33
|
+
* **Full example — existing V1 firewall:**
|
|
14
34
|
*
|
|
15
35
|
* ```typescript
|
|
16
36
|
* import * as pulumi from "@pulumi/pulumi";
|
|
17
|
-
* import * as aws from "@pulumi/aws";
|
|
18
37
|
* import * as cloudngfwaws from "@pulumi/cloudngfwaws";
|
|
19
38
|
*
|
|
20
39
|
* const rs = new cloudngfwaws.CommitRulestack("rs", {rulestack: "my-rulestack"});
|
|
21
40
|
* const example = new cloudngfwaws.Ngfw("example", {
|
|
22
41
|
* name: "example-instance",
|
|
42
|
+
* vpcId: exampleAwsVpc.id,
|
|
43
|
+
* accountId: "111111111111",
|
|
23
44
|
* description: "Example description",
|
|
24
|
-
*
|
|
45
|
+
* endpointMode: "ServiceManaged",
|
|
46
|
+
* subnetMappings: [
|
|
47
|
+
* {
|
|
48
|
+
* subnetId: subnet1.id,
|
|
49
|
+
* },
|
|
50
|
+
* {
|
|
51
|
+
* subnetId: subnet2.id,
|
|
52
|
+
* },
|
|
53
|
+
* ],
|
|
25
54
|
* rulestack: rs.rulestack,
|
|
26
55
|
* tags: {
|
|
27
56
|
* Foo: "bar",
|
|
28
57
|
* },
|
|
29
58
|
* });
|
|
30
|
-
*
|
|
31
|
-
*
|
|
59
|
+
* ```
|
|
60
|
+
*
|
|
61
|
+
* ***
|
|
62
|
+
*
|
|
63
|
+
* #### 2. Configuring Egress NAT on an Existing Firewall (V1)
|
|
64
|
+
*
|
|
65
|
+
* Egress NAT can be added to an existing V1 firewall without recreating the resource.
|
|
66
|
+
*
|
|
67
|
+
* > `ipPoolType` accepts `AWSService` or `BYOIP`. Use `BYOIP` together with `ipamPoolId`
|
|
68
|
+
* if bringing your own IP pool.
|
|
69
|
+
*
|
|
70
|
+
* **Steps:**
|
|
71
|
+
*
|
|
72
|
+
* 1. Add the `egressNat` block to your existing resource.
|
|
73
|
+
*
|
|
74
|
+
* **Full example — existing V1 firewall with Egress NAT enabled:**
|
|
75
|
+
*
|
|
76
|
+
* ```typescript
|
|
77
|
+
* import * as pulumi from "@pulumi/pulumi";
|
|
78
|
+
* import * as cloudngfwaws from "@pulumi/cloudngfwaws";
|
|
79
|
+
*
|
|
80
|
+
* const example = new cloudngfwaws.Ngfw("example", {
|
|
81
|
+
* name: "example-instance",
|
|
82
|
+
* vpcId: "vpc-0a1b2c3d4e5f00001",
|
|
83
|
+
* accountId: "111111111111",
|
|
84
|
+
* description: "Example description",
|
|
85
|
+
* endpointMode: "CustomerManaged",
|
|
86
|
+
* subnetMappings: [
|
|
87
|
+
* {
|
|
88
|
+
* availabilityZone: "us-east-1a",
|
|
89
|
+
* },
|
|
90
|
+
* {
|
|
91
|
+
* availabilityZone: "us-east-1c",
|
|
92
|
+
* },
|
|
93
|
+
* ],
|
|
94
|
+
* rulestack: "my-rulestack",
|
|
95
|
+
* egressNats: [{
|
|
96
|
+
* enabled: true,
|
|
97
|
+
* settings: [{
|
|
98
|
+
* ipPoolType: "AWSService",
|
|
99
|
+
* }],
|
|
100
|
+
* }],
|
|
101
|
+
* tags: {
|
|
102
|
+
* Foo: "bar",
|
|
103
|
+
* },
|
|
104
|
+
* });
|
|
105
|
+
* ```
|
|
106
|
+
*
|
|
107
|
+
* **To disable Egress NAT:** set `enabled = false` and re-apply.
|
|
108
|
+
*
|
|
109
|
+
* ***
|
|
110
|
+
*
|
|
111
|
+
* #### 3. Configuring Security Zones on an Existing Firewall (V1)
|
|
112
|
+
*
|
|
113
|
+
* Security zones let you enable or disable Egress NAT per endpoint and add or remove private CIDR prefixes.
|
|
114
|
+
*
|
|
115
|
+
* > **Prerequisite:** Endpoints must be successfully created and in `ACCEPTED` state before
|
|
116
|
+
* security zones can be configured. Check `status.attachment[*].status` in Terraform state
|
|
117
|
+
* or the AWS console before proceeding.
|
|
118
|
+
*
|
|
119
|
+
* **Steps:**
|
|
120
|
+
*
|
|
121
|
+
* 1. Confirm endpoint status is `ACCEPTED`:
|
|
122
|
+
*
|
|
123
|
+
* **To remove private prefixes:** remove the CIDR entries from `cidrs` and re-apply.
|
|
124
|
+
* **To disable Egress NAT for a specific zone:** set `egressNatEnabled = false` and re-apply.
|
|
125
|
+
*
|
|
126
|
+
* ***
|
|
127
|
+
*
|
|
128
|
+
* ### V2 Schema — New Firewalls
|
|
129
|
+
*
|
|
130
|
+
* > **Important:** New firewalls can only be created using the V2 schema. Use `azList`
|
|
131
|
+
* instead of `subnetMapping`, and `endpoints` instead of `endpointMode`/`subnetMapping`.
|
|
132
|
+
*
|
|
133
|
+
* ***
|
|
134
|
+
*
|
|
135
|
+
* #### 1. Creating a New Firewall (V2)
|
|
136
|
+
*
|
|
137
|
+
* Firewall creation uses `azList` to specify availability zones.
|
|
138
|
+
* **Do not include `endpoints` during creation** — they must be added in a separate update after the firewall is running.
|
|
139
|
+
*
|
|
140
|
+
* **Steps:**
|
|
141
|
+
*
|
|
142
|
+
* 1. Define the resource with `azList` and no `endpoints` block.
|
|
143
|
+
* 2. Proceed to **Step 2** once the firewall reaches `RUNNING` state.
|
|
144
|
+
*
|
|
145
|
+
* **Full example — new V2 firewall (creation only):**
|
|
146
|
+
*
|
|
147
|
+
* ```typescript
|
|
148
|
+
* import * as pulumi from "@pulumi/pulumi";
|
|
149
|
+
* import * as cloudngfwaws from "@pulumi/cloudngfwaws";
|
|
150
|
+
*
|
|
151
|
+
* const example = new cloudngfwaws.Ngfw("example", {
|
|
152
|
+
* name: "my-firewall",
|
|
153
|
+
* description: "My new firewall",
|
|
154
|
+
* azLists: [
|
|
155
|
+
* "use1-az1",
|
|
156
|
+
* "use1-az4",
|
|
157
|
+
* ],
|
|
158
|
+
* allowlistAccounts: ["111111111111"],
|
|
32
159
|
* tags: {
|
|
33
|
-
*
|
|
160
|
+
* Owner: "my-team",
|
|
34
161
|
* },
|
|
35
162
|
* });
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
*
|
|
163
|
+
* ```
|
|
164
|
+
*
|
|
165
|
+
* ***
|
|
166
|
+
*
|
|
167
|
+
* #### 2. Adding Endpoints to a V2 Firewall
|
|
168
|
+
*
|
|
169
|
+
* Endpoints connect the firewall to customer VPCs. They must be added in a separate
|
|
170
|
+
* a separate update after the firewall is running.
|
|
171
|
+
*
|
|
172
|
+
* **Steps:**
|
|
173
|
+
*
|
|
174
|
+
* 1. Confirm the firewall status is `RUNNING`:
|
|
175
|
+
*
|
|
176
|
+
* **Full example — V2 firewall with endpoints added:**
|
|
177
|
+
*
|
|
178
|
+
* ```typescript
|
|
179
|
+
* import * as pulumi from "@pulumi/pulumi";
|
|
180
|
+
* import * as cloudngfwaws from "@pulumi/cloudngfwaws";
|
|
181
|
+
*
|
|
182
|
+
* const example = new cloudngfwaws.Ngfw("example", {
|
|
183
|
+
* name: "my-firewall",
|
|
184
|
+
* description: "My new firewall",
|
|
185
|
+
* azLists: [
|
|
186
|
+
* "use1-az1",
|
|
187
|
+
* "use1-az4",
|
|
188
|
+
* ],
|
|
189
|
+
* allowlistAccounts: ["111111111111"],
|
|
190
|
+
* endpoints: [
|
|
191
|
+
* {
|
|
192
|
+
* accountId: "111111111111",
|
|
193
|
+
* vpcId: "vpc-0a1b2c3d4e5f00002",
|
|
194
|
+
* subnetId: "subnet-0a1b2c3d4e5f00001",
|
|
195
|
+
* mode: "ServiceManaged",
|
|
196
|
+
* },
|
|
197
|
+
* {
|
|
198
|
+
* accountId: "111111111111",
|
|
199
|
+
* vpcId: "vpc-0a1b2c3d4e5f00003",
|
|
200
|
+
* subnetId: "subnet-0a1b2c3d4e5f00002",
|
|
201
|
+
* mode: "ServiceManaged",
|
|
202
|
+
* },
|
|
203
|
+
* ],
|
|
40
204
|
* tags: {
|
|
41
|
-
*
|
|
205
|
+
* Owner: "my-team",
|
|
42
206
|
* },
|
|
43
207
|
* });
|
|
44
|
-
*
|
|
45
|
-
*
|
|
46
|
-
*
|
|
47
|
-
*
|
|
208
|
+
* ```
|
|
209
|
+
*
|
|
210
|
+
* ***
|
|
211
|
+
*
|
|
212
|
+
* #### 3. Configuring Egress NAT on a V2 Firewall
|
|
213
|
+
*
|
|
214
|
+
* Egress NAT can be enabled at the firewall level once at least one endpoint is accepted.
|
|
215
|
+
*
|
|
216
|
+
* > **Prerequisite:** At least one endpoint must be in `ACCEPTED` state.
|
|
217
|
+
*
|
|
218
|
+
* **Steps:**
|
|
219
|
+
*
|
|
220
|
+
* 1. Add the `egressNat` block to the resource.
|
|
221
|
+
*
|
|
222
|
+
* **Full example — V2 firewall with Egress NAT enabled:**
|
|
223
|
+
*
|
|
224
|
+
* ```typescript
|
|
225
|
+
* import * as pulumi from "@pulumi/pulumi";
|
|
226
|
+
* import * as cloudngfwaws from "@pulumi/cloudngfwaws";
|
|
227
|
+
*
|
|
228
|
+
* const example = new cloudngfwaws.Ngfw("example", {
|
|
229
|
+
* name: "my-firewall",
|
|
230
|
+
* description: "My new firewall",
|
|
231
|
+
* azLists: [
|
|
232
|
+
* "use1-az1",
|
|
233
|
+
* "use1-az4",
|
|
234
|
+
* ],
|
|
235
|
+
* allowlistAccounts: ["111111111111"],
|
|
236
|
+
* endpoints: [
|
|
237
|
+
* {
|
|
238
|
+
* accountId: "111111111111",
|
|
239
|
+
* vpcId: "vpc-0a1b2c3d4e5f00002",
|
|
240
|
+
* subnetId: "subnet-0a1b2c3d4e5f00001",
|
|
241
|
+
* mode: "ServiceManaged",
|
|
242
|
+
* },
|
|
243
|
+
* {
|
|
244
|
+
* accountId: "111111111111",
|
|
245
|
+
* vpcId: "vpc-0a1b2c3d4e5f00003",
|
|
246
|
+
* subnetId: "subnet-0a1b2c3d4e5f00002",
|
|
247
|
+
* mode: "ServiceManaged",
|
|
248
|
+
* },
|
|
249
|
+
* ],
|
|
250
|
+
* egressNats: [{
|
|
251
|
+
* enabled: true,
|
|
252
|
+
* settings: [{
|
|
253
|
+
* ipPoolType: "AWSService",
|
|
254
|
+
* }],
|
|
255
|
+
* }],
|
|
48
256
|
* tags: {
|
|
49
|
-
*
|
|
257
|
+
* Owner: "my-team",
|
|
50
258
|
* },
|
|
51
259
|
* });
|
|
52
260
|
* ```
|
|
53
261
|
*
|
|
262
|
+
* **To disable Egress NAT:** set `enabled = false` and re-apply.
|
|
263
|
+
*
|
|
264
|
+
* ***
|
|
265
|
+
*
|
|
266
|
+
* #### 4. Configuring Private Prefixes and Per-Endpoint Egress NAT (V2)
|
|
267
|
+
*
|
|
268
|
+
* Once an endpoint is accepted, you can enable or disable Egress NAT and configure private
|
|
269
|
+
* CIDR prefixes on a per-endpoint basis within the `endpoints` block.
|
|
270
|
+
*
|
|
271
|
+
* > **Prerequisite:** The endpoint must be in `ACCEPTED` state. The `endpointId`
|
|
272
|
+
* is a read-only computed value — retrieve it from Terraform state after apply:
|
|
273
|
+
*
|
|
274
|
+
* **To remove private prefixes:** remove the CIDR entries from `cidrs` and re-apply.
|
|
275
|
+
* **To disable per-endpoint Egress NAT:** set `egressNatEnabled = false` and re-apply.
|
|
276
|
+
*
|
|
277
|
+
* ***
|
|
278
|
+
*
|
|
54
279
|
* ## Import
|
|
55
280
|
*
|
|
56
281
|
* import name is <account_id>:<name>
|
|
@@ -76,7 +301,7 @@ export declare class Ngfw extends pulumi.CustomResource {
|
|
|
76
301
|
*/
|
|
77
302
|
static isInstance(obj: any): obj is Ngfw;
|
|
78
303
|
/**
|
|
79
|
-
* The
|
|
304
|
+
* The Account Id.
|
|
80
305
|
*/
|
|
81
306
|
readonly accountId: pulumi.Output<string | undefined>;
|
|
82
307
|
/**
|
|
@@ -94,7 +319,7 @@ export declare class Ngfw extends pulumi.CustomResource {
|
|
|
94
319
|
/**
|
|
95
320
|
* The list of availability zone IDs for this NGFW.
|
|
96
321
|
*/
|
|
97
|
-
readonly azLists: pulumi.Output<string[]>;
|
|
322
|
+
readonly azLists: pulumi.Output<string[] | undefined>;
|
|
98
323
|
/**
|
|
99
324
|
* Enables or disables change protection for the NGFW.
|
|
100
325
|
*/
|
|
@@ -146,6 +371,7 @@ export declare class Ngfw extends pulumi.CustomResource {
|
|
|
146
371
|
* The rulestack for this NGFW.
|
|
147
372
|
*/
|
|
148
373
|
readonly rulestack: pulumi.Output<string | undefined>;
|
|
374
|
+
readonly securityZones: pulumi.Output<outputs.NgfwSecurityZone[] | undefined>;
|
|
149
375
|
readonly statuses: pulumi.Output<outputs.NgfwStatus[]>;
|
|
150
376
|
/**
|
|
151
377
|
* Subnet mappings.
|
|
@@ -157,6 +383,10 @@ export declare class Ngfw extends pulumi.CustomResource {
|
|
|
157
383
|
readonly tags: pulumi.Output<{
|
|
158
384
|
[key: string]: string;
|
|
159
385
|
}>;
|
|
386
|
+
/**
|
|
387
|
+
* Firewall Instance Tier. Allowed values are 'base', 'standard', or 'premium'.
|
|
388
|
+
*/
|
|
389
|
+
readonly tier: pulumi.Output<string>;
|
|
160
390
|
/**
|
|
161
391
|
* The update token.
|
|
162
392
|
*/
|
|
@@ -173,14 +403,14 @@ export declare class Ngfw extends pulumi.CustomResource {
|
|
|
173
403
|
* @param args The arguments to use to populate this resource's properties.
|
|
174
404
|
* @param opts A bag of options that control this resource's behavior.
|
|
175
405
|
*/
|
|
176
|
-
constructor(name: string, args
|
|
406
|
+
constructor(name: string, args?: NgfwArgs, opts?: pulumi.CustomResourceOptions);
|
|
177
407
|
}
|
|
178
408
|
/**
|
|
179
409
|
* Input properties used for looking up and filtering Ngfw resources.
|
|
180
410
|
*/
|
|
181
411
|
export interface NgfwState {
|
|
182
412
|
/**
|
|
183
|
-
* The
|
|
413
|
+
* The Account Id.
|
|
184
414
|
*/
|
|
185
415
|
accountId?: pulumi.Input<string>;
|
|
186
416
|
/**
|
|
@@ -250,6 +480,7 @@ export interface NgfwState {
|
|
|
250
480
|
* The rulestack for this NGFW.
|
|
251
481
|
*/
|
|
252
482
|
rulestack?: pulumi.Input<string>;
|
|
483
|
+
securityZones?: pulumi.Input<pulumi.Input<inputs.NgfwSecurityZone>[]>;
|
|
253
484
|
statuses?: pulumi.Input<pulumi.Input<inputs.NgfwStatus>[]>;
|
|
254
485
|
/**
|
|
255
486
|
* Subnet mappings.
|
|
@@ -261,6 +492,10 @@ export interface NgfwState {
|
|
|
261
492
|
tags?: pulumi.Input<{
|
|
262
493
|
[key: string]: pulumi.Input<string>;
|
|
263
494
|
}>;
|
|
495
|
+
/**
|
|
496
|
+
* Firewall Instance Tier. Allowed values are 'base', 'standard', or 'premium'.
|
|
497
|
+
*/
|
|
498
|
+
tier?: pulumi.Input<string>;
|
|
264
499
|
/**
|
|
265
500
|
* The update token.
|
|
266
501
|
*/
|
|
@@ -276,7 +511,7 @@ export interface NgfwState {
|
|
|
276
511
|
*/
|
|
277
512
|
export interface NgfwArgs {
|
|
278
513
|
/**
|
|
279
|
-
* The
|
|
514
|
+
* The Account Id.
|
|
280
515
|
*/
|
|
281
516
|
accountId?: pulumi.Input<string>;
|
|
282
517
|
/**
|
|
@@ -294,7 +529,7 @@ export interface NgfwArgs {
|
|
|
294
529
|
/**
|
|
295
530
|
* The list of availability zone IDs for this NGFW.
|
|
296
531
|
*/
|
|
297
|
-
azLists
|
|
532
|
+
azLists?: pulumi.Input<pulumi.Input<string>[]>;
|
|
298
533
|
/**
|
|
299
534
|
* Enables or disables change protection for the NGFW.
|
|
300
535
|
*/
|
|
@@ -309,6 +544,10 @@ export interface NgfwArgs {
|
|
|
309
544
|
*/
|
|
310
545
|
endpointMode?: pulumi.Input<string>;
|
|
311
546
|
endpoints?: pulumi.Input<pulumi.Input<inputs.NgfwEndpoint>[]>;
|
|
547
|
+
/**
|
|
548
|
+
* The Firewall ID.
|
|
549
|
+
*/
|
|
550
|
+
firewallId?: pulumi.Input<string>;
|
|
312
551
|
/**
|
|
313
552
|
* The global rulestack for this NGFW.
|
|
314
553
|
*/
|
|
@@ -330,6 +569,7 @@ export interface NgfwArgs {
|
|
|
330
569
|
* The rulestack for this NGFW.
|
|
331
570
|
*/
|
|
332
571
|
rulestack?: pulumi.Input<string>;
|
|
572
|
+
securityZones?: pulumi.Input<pulumi.Input<inputs.NgfwSecurityZone>[]>;
|
|
333
573
|
/**
|
|
334
574
|
* Subnet mappings.
|
|
335
575
|
*/
|
|
@@ -340,6 +580,10 @@ export interface NgfwArgs {
|
|
|
340
580
|
tags?: pulumi.Input<{
|
|
341
581
|
[key: string]: pulumi.Input<string>;
|
|
342
582
|
}>;
|
|
583
|
+
/**
|
|
584
|
+
* Firewall Instance Tier. Allowed values are 'base', 'standard', or 'premium'.
|
|
585
|
+
*/
|
|
586
|
+
tier?: pulumi.Input<string>;
|
|
343
587
|
userIds?: pulumi.Input<pulumi.Input<inputs.NgfwUserId>[]>;
|
|
344
588
|
/**
|
|
345
589
|
* The VPC ID for the NGFW.
|