@drunk-pulumi/azure 0.0.41 → 0.0.43
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/Aks/Helper.d.ts +0 -3
- package/Aks/Helper.js +43 -18
- package/Aks/Identity.js +5 -2
- package/Aks/VmSetAutoScale/index.js +25 -2
- package/Aks/VmSetMonitor/index.js +26 -3
- package/Aks/index.d.ts +2 -2
- package/Aks/index.js +35 -6
- package/Apim/ApiProduct/SwaggerHelper.d.ts +0 -5
- package/Apim/ApiProduct/SwaggerHelper.js +7 -12
- package/Apim/Helpers.d.ts +2 -0
- package/Apim/Helpers.js +17 -1
- package/Apps/LogicApp.js +29 -3
- package/Automation/index.js +29 -3
- package/AzAd/B2C.js +25 -2
- package/AzAd/EnvRoles.Consts.d.ts +1 -1
- package/AzAd/EnvRoles.Consts.js +38 -35
- package/AzAd/EnvRoles.js +5 -2
- package/AzAd/Group.js +25 -2
- package/AzAd/Identities/AzDevOpsIdentity.js +5 -2
- package/AzAd/Identities/AzDevOpsManagedIdentity.js +5 -2
- package/AzAd/Identities/AzUserAdRevertSync.js +5 -2
- package/AzAd/Identities/index.js +7 -4
- package/AzAd/Identity.js +26 -3
- package/AzAd/Role.js +5 -2
- package/AzAd/RoleAssignment.js +29 -26
- package/AzAd/RoleDefinitions/JustInTimeRequestRole.js +25 -2
- package/AzAd/UserAssignedIdentity.js +25 -2
- package/Builder/AksBuilder.js +6 -3
- package/Builder/ApimApiBuilder.d.ts +22 -0
- package/Builder/ApimApiBuilder.js +198 -0
- package/Builder/ApimBuilder.d.ts +3 -0
- package/Builder/ApimBuilder.js +325 -0
- package/Builder/ApimPolicyBuilder.d.ts +51 -0
- package/Builder/ApimPolicyBuilder.js +384 -0
- package/Builder/ApimProductBuilder.d.ts +21 -0
- package/Builder/ApimProductBuilder.js +153 -0
- package/Builder/ApimRootBuilder.d.ts +9 -0
- package/Builder/ApimRootBuilder.js +26 -0
- package/Builder/ApimWorkspaceBuilder.d.ts +10 -0
- package/Builder/ApimWorkspaceBuilder.js +57 -0
- package/Builder/CdnBuilder.d.ts +13 -0
- package/Builder/CdnBuilder.js +39 -0
- package/Builder/DnsZoneBuilder.d.ts +4 -0
- package/Builder/DnsZoneBuilder.js +109 -0
- package/Builder/PrivateDnsZoneBuilder.d.ts +4 -0
- package/Builder/PrivateDnsZoneBuilder.js +99 -0
- package/Builder/ResourceBuilder.js +20 -5
- package/Builder/SqlBuilder.js +21 -6
- package/Builder/StorageBuilder.d.ts +3 -0
- package/Builder/StorageBuilder.js +101 -0
- package/Builder/VaultBuilder.js +25 -2
- package/Builder/VmBuilder.js +16 -3
- package/Builder/VnetBuilder.js +21 -20
- package/Builder/index.d.ts +6 -0
- package/Builder/index.js +23 -8
- package/Builder/types/apimBuilder.d.ts +71 -0
- package/Builder/types/apimBuilder.js +3 -0
- package/Builder/types/apimPolicyBuilder.d.ts +84 -0
- package/Builder/types/apimPolicyBuilder.js +11 -0
- package/Builder/types/apimProductBuilder.d.ts +56 -0
- package/Builder/types/apimProductBuilder.js +3 -0
- package/Builder/types/apimWorkspaceBuilder.d.ts +2 -0
- package/Builder/types/apimWorkspaceBuilder.js +3 -0
- package/Builder/types/askBuilder.d.ts +11 -15
- package/Builder/types/cdnBuilder.d.ts +7 -0
- package/Builder/types/cdnBuilder.js +3 -0
- package/Builder/types/dnsZoneBuilder.d.ts +11 -0
- package/Builder/types/dnsZoneBuilder.js +3 -0
- package/Builder/types/genericBuilder.d.ts +9 -9
- package/Builder/types/genericBuilder.js +1 -1
- package/Builder/types/index.d.ts +7 -0
- package/Builder/types/index.js +8 -1
- package/Builder/types/privateDnsZoneBuilder.d.ts +13 -0
- package/Builder/types/privateDnsZoneBuilder.js +3 -0
- package/Builder/types/resourceBuilder.d.ts +17 -15
- package/Builder/types/sqlBuilder.d.ts +10 -5
- package/Builder/types/storageBuilder.d.ts +24 -0
- package/Builder/types/storageBuilder.js +3 -0
- package/Builder/types/vaultBuilder.d.ts +7 -7
- package/Builder/types/vmBuilder.d.ts +9 -7
- package/Builder/types/vnetBuilder.d.ts +17 -17
- package/Cdn/CdnEndpoint.d.ts +13 -0
- package/Cdn/CdnEndpoint.js +94 -0
- package/{Storage → Cdn}/CdnRules.d.ts +2 -2
- package/Cdn/CdnRules.js +133 -0
- package/Cdn/index.d.ts +7 -6
- package/Cdn/index.js +45 -33
- package/Certificate/index.js +27 -4
- package/Certificate/p12.js +25 -2
- package/Common/AzureEnv.js +25 -2
- package/Common/ConfigHelper.js +25 -2
- package/Common/GlobalEnv.d.ts +2 -8
- package/Common/GlobalEnv.js +12 -16
- package/Common/StackEnv.js +25 -2
- package/Common/index.js +29 -6
- package/ContainerRegistry/Helper.js +29 -3
- package/ContainerRegistry/index.js +31 -5
- package/Core/Locker.js +25 -2
- package/Core/Random.js +25 -2
- package/Core/ResourceCreator.js +5 -2
- package/Core/ResourceGroup.js +5 -2
- package/CosmosDb/index.js +29 -3
- package/CustomRoles/index.js +25 -2
- package/IOT/Hub/index.js +25 -2
- package/KeyVault/Helper.js +25 -2
- package/KeyVault/index.js +29 -3
- package/Logs/AppInsight.d.ts +4 -4
- package/Logs/AppInsight.js +35 -9
- package/Logs/Helpers.d.ts +12 -9
- package/Logs/Helpers.js +57 -14
- package/Logs/LogAnalytics.js +25 -2
- package/Logs/WebTest.d.ts +1 -1
- package/Logs/WebTest.js +35 -12
- package/Logs/index.d.ts +1 -10
- package/Logs/index.js +36 -8
- package/MySql/index.js +30 -4
- package/Postgresql/index.js +30 -4
- package/RedisCache/index.js +26 -3
- package/ServiceBus/index.js +30 -4
- package/SignalR/index.js +29 -3
- package/Sql/SqlDb.js +25 -2
- package/Sql/index.d.ts +9 -9
- package/Sql/index.js +49 -20
- package/Storage/Helper.d.ts +4 -4
- package/Storage/Helper.js +25 -2
- package/Storage/ManagementRules.js +25 -2
- package/Storage/index.d.ts +37 -39
- package/Storage/index.js +71 -97
- package/VM/AzureDevOpsExtension.js +5 -2
- package/VM/Extension.js +25 -2
- package/VM/GlobalSchedule.js +25 -2
- package/VM/index.d.ts +7 -6
- package/VM/index.js +33 -6
- package/VNet/Bastion.js +29 -3
- package/VNet/Firewall.js +31 -5
- package/VNet/FirewallPolicies/index.js +8 -5
- package/VNet/FirewallPolicy.js +25 -2
- package/VNet/GlobalNetworkPeering.js +25 -2
- package/VNet/Helper.js +26 -3
- package/VNet/IpAddress.js +30 -4
- package/VNet/IpAddressPrefix.js +30 -4
- package/VNet/NSGRules/ApimSecurityRule.d.ts +7 -0
- package/VNet/NSGRules/ApimSecurityRule.js +34 -0
- package/VNet/NSGRules/AzADSecurityRule.d.ts +2 -2
- package/VNet/NSGRules/AzADSecurityRule.js +2 -2
- package/VNet/NSGRules/BastionSecurityRule.d.ts +1 -2
- package/VNet/NSGRules/BastionSecurityRule.js +2 -2
- package/VNet/NSGRules/index.d.ts +4 -0
- package/VNet/NSGRules/index.js +15 -0
- package/VNet/NatGateway.js +25 -2
- package/VNet/NetworkPeering.js +25 -2
- package/VNet/PrivateEndpoint.js +32 -27
- package/VNet/RouteTable.js +25 -2
- package/VNet/SecurityGroup.js +25 -2
- package/VNet/Subnet.js +25 -2
- package/VNet/VPNGateway.js +29 -3
- package/VNet/VirtualWAN.js +29 -3
- package/VNet/Vnet.d.ts +2 -2
- package/VNet/Vnet.js +35 -6
- package/VNet/index.d.ts +3 -0
- package/VNet/index.js +34 -8
- package/Web/AppCertOrder.js +29 -3
- package/Web/AppConfig.d.ts +8 -11
- package/Web/AppConfig.js +51 -33
- package/Web/AppGateway.js +29 -3
- package/Web/FuncApp.js +25 -2
- package/Web/Helpers.js +25 -2
- package/Web/WebAppPlan.js +25 -2
- package/index.d.ts +1 -0
- package/index.js +18 -0
- package/package.json +5 -4
- package/types.d.ts +0 -6
- package/z_tests/_tools/Mocks.js +25 -2
- package/Apim/ApiProduct/Api.d.ts +0 -35
- package/Apim/ApiProduct/Api.js +0 -131
- package/Apim/ApiProduct/PolicyBuilder.d.ts +0 -79
- package/Apim/ApiProduct/PolicyBuilder.js +0 -359
- package/Apim/ApiProduct/Product.d.ts +0 -8
- package/Apim/ApiProduct/Product.js +0 -63
- package/Apim/ApiProduct/index.d.ts +0 -9
- package/Apim/ApiProduct/index.js +0 -21
- package/Apim/HookProxy/index.d.ts +0 -20
- package/Apim/HookProxy/index.js +0 -27
- package/Apim/index.d.ts +0 -22
- package/Apim/index.js +0 -115
- package/Storage/CdnEndpoint.d.ts +0 -12
- package/Storage/CdnEndpoint.js +0 -61
- package/Storage/CdnRules.js +0 -134
- package/VNet/PrivateDns.d.ts +0 -31
- package/VNet/PrivateDns.js +0 -68
- package/VNet/PublicDns.d.ts +0 -21
- package/VNet/PublicDns.js +0 -59
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
const apim = __importStar(require("@pulumi/azure-native/apimanagement"));
|
|
30
|
+
const types_1 = require("@pulumi/azure-native/types");
|
|
31
|
+
const pulumi_1 = require("@pulumi/pulumi");
|
|
32
|
+
const SwaggerHelper_1 = require("../Apim/ApiProduct/SwaggerHelper");
|
|
33
|
+
const StackEnv_1 = require("../Common/StackEnv");
|
|
34
|
+
const ApimPolicyBuilder_1 = __importDefault(require("./ApimPolicyBuilder"));
|
|
35
|
+
const types_2 = require("./types");
|
|
36
|
+
class ApimApiRevisionBuilder {
|
|
37
|
+
version;
|
|
38
|
+
revisions = [];
|
|
39
|
+
constructor(version) {
|
|
40
|
+
this.version = version;
|
|
41
|
+
}
|
|
42
|
+
withRevision(props) {
|
|
43
|
+
this.revisions.push(props);
|
|
44
|
+
return this;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
class ApimApiBuilder extends types_2.BuilderAsync {
|
|
48
|
+
props;
|
|
49
|
+
_serviceUrl = undefined;
|
|
50
|
+
_keyParameters = {
|
|
51
|
+
header: "x-api-key",
|
|
52
|
+
query: "api-key",
|
|
53
|
+
};
|
|
54
|
+
_apis = {};
|
|
55
|
+
_apiInstanceName;
|
|
56
|
+
_apiSets = {};
|
|
57
|
+
_policyString = undefined;
|
|
58
|
+
constructor(props) {
|
|
59
|
+
super(props);
|
|
60
|
+
this.props = props;
|
|
61
|
+
this._apiInstanceName = `${props.name}-api`;
|
|
62
|
+
//Empty Policy
|
|
63
|
+
this._policyString = new ApimPolicyBuilder_1.default({
|
|
64
|
+
...props,
|
|
65
|
+
name: this._apiInstanceName,
|
|
66
|
+
}).build();
|
|
67
|
+
}
|
|
68
|
+
withPolicies(props) {
|
|
69
|
+
this._policyString = props(new ApimPolicyBuilder_1.default({
|
|
70
|
+
...this.props,
|
|
71
|
+
name: this._apiInstanceName,
|
|
72
|
+
})).build();
|
|
73
|
+
return this;
|
|
74
|
+
}
|
|
75
|
+
withServiceUrl(props) {
|
|
76
|
+
this._serviceUrl = props;
|
|
77
|
+
return this;
|
|
78
|
+
}
|
|
79
|
+
withVersion(version, builder) {
|
|
80
|
+
const b = new ApimApiRevisionBuilder(version);
|
|
81
|
+
builder(b);
|
|
82
|
+
this._apis[version] = b.revisions;
|
|
83
|
+
return this;
|
|
84
|
+
}
|
|
85
|
+
withKeys(props) {
|
|
86
|
+
this._keyParameters = props;
|
|
87
|
+
return this;
|
|
88
|
+
}
|
|
89
|
+
async buildApis() {
|
|
90
|
+
const date = new Date();
|
|
91
|
+
const tasks = Object.keys(this._apis).map((k) => {
|
|
92
|
+
const setName = `${this._apiInstanceName}-v${k}`;
|
|
93
|
+
//Create ApiSet
|
|
94
|
+
const apiSet = new apim.ApiVersionSet(setName, {
|
|
95
|
+
versionSetId: setName,
|
|
96
|
+
displayName: setName,
|
|
97
|
+
description: setName,
|
|
98
|
+
serviceName: this.props.apimServiceName,
|
|
99
|
+
resourceGroupName: this.props.group.resourceGroupName,
|
|
100
|
+
versioningScheme: types_1.enums.apimanagement.VersioningScheme.Segment,
|
|
101
|
+
}, { dependsOn: this.props.dependsOn, deleteBeforeReplace: true });
|
|
102
|
+
this._apiSets[k] = apiSet;
|
|
103
|
+
//Create Api
|
|
104
|
+
const revisions = this._apis[k];
|
|
105
|
+
return revisions.map(async (rv, index) => {
|
|
106
|
+
const apiName = `${setName};rev=${rv.revision}`;
|
|
107
|
+
const api = new apim.Api(apiName, {
|
|
108
|
+
apiId: apiName,
|
|
109
|
+
displayName: apiName,
|
|
110
|
+
description: apiName,
|
|
111
|
+
serviceName: this.props.apimServiceName,
|
|
112
|
+
resourceGroupName: this.props.group.resourceGroupName,
|
|
113
|
+
apiType: types_1.enums.apimanagement.ApiType.Http,
|
|
114
|
+
isCurrent: index === revisions.length - 1,
|
|
115
|
+
protocols: [types_1.enums.apimanagement.Protocol.Https],
|
|
116
|
+
subscriptionRequired: this.props.requiredSubscription,
|
|
117
|
+
apiVersion: k,
|
|
118
|
+
apiVersionDescription: k,
|
|
119
|
+
apiRevision: rv.revision.toString(),
|
|
120
|
+
apiRevisionDescription: `${apiName} ${date.toLocaleDateString()}`,
|
|
121
|
+
apiVersionSetId: apiSet.id,
|
|
122
|
+
subscriptionKeyParameterNames: this._keyParameters,
|
|
123
|
+
path: this._serviceUrl.apiPath,
|
|
124
|
+
serviceUrl: `${this._serviceUrl.serviceUrl}/${k}`,
|
|
125
|
+
format: "swaggerUrl" in rv
|
|
126
|
+
? types_1.enums.apimanagement.ContentFormat.Openapi_json
|
|
127
|
+
: undefined,
|
|
128
|
+
value: "swaggerUrl" in rv
|
|
129
|
+
? await (0, SwaggerHelper_1.getImportConfig)(rv.swaggerUrl, k)
|
|
130
|
+
: undefined,
|
|
131
|
+
}, { dependsOn: apiSet, deleteBeforeReplace: true });
|
|
132
|
+
//Link API to Product
|
|
133
|
+
new apim.ProductApi(apiName, {
|
|
134
|
+
serviceName: this.props.apimServiceName,
|
|
135
|
+
resourceGroupName: this.props.group.resourceGroupName,
|
|
136
|
+
productId: this.props.productId,
|
|
137
|
+
apiId: apiName,
|
|
138
|
+
}, { dependsOn: api });
|
|
139
|
+
//Apply Policy for the API
|
|
140
|
+
if (this._policyString) {
|
|
141
|
+
new apim.ApiPolicy(`${apiName}-policy`, {
|
|
142
|
+
serviceName: this.props.apimServiceName,
|
|
143
|
+
resourceGroupName: this.props.group.resourceGroupName,
|
|
144
|
+
apiId: apiName,
|
|
145
|
+
policyId: "policy",
|
|
146
|
+
format: "xml",
|
|
147
|
+
value: this._policyString,
|
|
148
|
+
}, { dependsOn: api });
|
|
149
|
+
}
|
|
150
|
+
//Create Aoi Operations
|
|
151
|
+
if ("operations" in rv) {
|
|
152
|
+
rv.operations.forEach((op) => {
|
|
153
|
+
const opsName = `${apiName}-${op.name}`;
|
|
154
|
+
const ops = new apim.ApiOperation(opsName, {
|
|
155
|
+
operationId: opsName,
|
|
156
|
+
apiId: api.id,
|
|
157
|
+
displayName: opsName,
|
|
158
|
+
description: opsName,
|
|
159
|
+
serviceName: this.props.apimServiceName,
|
|
160
|
+
resourceGroupName: this.props.group.resourceGroupName,
|
|
161
|
+
...op,
|
|
162
|
+
}, { dependsOn: api });
|
|
163
|
+
//Mock Operations
|
|
164
|
+
const opName = `${opsName}-policy`;
|
|
165
|
+
new apim.ApiOperationPolicy(opName, {
|
|
166
|
+
policyId: "policy",
|
|
167
|
+
operationId: ops.id,
|
|
168
|
+
apiId: api.id,
|
|
169
|
+
serviceName: this.props.apimServiceName,
|
|
170
|
+
resourceGroupName: this.props.group.resourceGroupName,
|
|
171
|
+
format: "xml",
|
|
172
|
+
value: new ApimPolicyBuilder_1.default({
|
|
173
|
+
...this.props,
|
|
174
|
+
name: opName,
|
|
175
|
+
})
|
|
176
|
+
.mockResponse({
|
|
177
|
+
code: 200,
|
|
178
|
+
contentType: `Welcome to ${StackEnv_1.organization}`,
|
|
179
|
+
})
|
|
180
|
+
.build(),
|
|
181
|
+
}, { dependsOn: ops, deleteBeforeReplace: true });
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
});
|
|
185
|
+
});
|
|
186
|
+
await Promise.all(tasks);
|
|
187
|
+
}
|
|
188
|
+
async build() {
|
|
189
|
+
await this.buildApis();
|
|
190
|
+
return {
|
|
191
|
+
resourceName: this._apiInstanceName,
|
|
192
|
+
group: this.props.group,
|
|
193
|
+
id: (0, pulumi_1.interpolate) `${this.props.productId}`,
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
exports.default = ApimApiBuilder;
|
|
198
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBpbUFwaUJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvQnVpbGRlci9BcGltQXBpQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEseUVBQTJEO0FBQzNELHNEQUFtRDtBQUNuRCwyQ0FBb0Q7QUFDcEQsb0VBQW1FO0FBQ25FLGlEQUFrRDtBQUVsRCw0RUFBb0Q7QUFFcEQsbUNBV2lCO0FBRWpCLE1BQU0sc0JBQXNCO0lBRUE7SUFEbkIsU0FBUyxHQUEyQixFQUFFLENBQUM7SUFDOUMsWUFBMEIsT0FBZTtRQUFmLFlBQU8sR0FBUCxPQUFPLENBQVE7SUFBRyxDQUFDO0lBQzdDLFlBQVksQ0FBQyxLQUEyQjtRQUN0QyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7Q0FDRjtBQUVELE1BQXFCLGNBQ25CLFNBQVEsb0JBQTBCO0lBZXhCO0lBWkYsV0FBVyxHQUFzQyxTQUFTLENBQUM7SUFDM0QsY0FBYyxHQUFnQztRQUNwRCxNQUFNLEVBQUUsV0FBVztRQUNuQixLQUFLLEVBQUUsU0FBUztLQUNqQixDQUFDO0lBQ00sS0FBSyxHQUEyQyxFQUFFLENBQUM7SUFFbkQsZ0JBQWdCLENBQVM7SUFDekIsUUFBUSxHQUF1QyxFQUFFLENBQUM7SUFDbEQsYUFBYSxHQUF1QixTQUFTLENBQUM7SUFFdEQsWUFDVSxLQUdQO1FBRUQsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBTEwsVUFBSyxHQUFMLEtBQUssQ0FHWjtRQUdELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxHQUFHLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQztRQUM1QyxjQUFjO1FBQ2QsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLDJCQUFpQixDQUFDO1lBQ3pDLEdBQUcsS0FBSztZQUNSLElBQUksRUFBRSxJQUFJLENBQUMsZ0JBQWdCO1NBQzVCLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNiLENBQUM7SUFFTSxZQUFZLENBQUMsS0FBd0I7UUFDMUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQ3hCLElBQUksMkJBQWlCLENBQUM7WUFDcEIsR0FBRyxJQUFJLENBQUMsS0FBSztZQUNiLElBQUksRUFBRSxJQUFJLENBQUMsZ0JBQWdCO1NBQzVCLENBQUMsQ0FDSCxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ1YsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQ00sY0FBYyxDQUFDLEtBQTRCO1FBQ2hELElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNNLFdBQVcsQ0FDaEIsT0FBZSxFQUNmLE9BQStCO1FBRS9CLE1BQU0sQ0FBQyxHQUFHLElBQUksc0JBQXNCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDOUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ1gsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ2xDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVNLFFBQVEsQ0FBQyxLQUFzQjtRQUNwQyxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztRQUM1QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTyxLQUFLLENBQUMsU0FBUztRQUNyQixNQUFNLElBQUksR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3hCLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQzlDLE1BQU0sT0FBTyxHQUFHLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ2pELGVBQWU7WUFDZixNQUFNLE1BQU0sR0FBRyxJQUFJLElBQUksQ0FBQyxhQUFhLENBQ25DLE9BQU8sRUFDUDtnQkFDRSxZQUFZLEVBQUUsT0FBTztnQkFDckIsV0FBVyxFQUFFLE9BQU87Z0JBQ3BCLFdBQVcsRUFBRSxPQUFPO2dCQUNwQixXQUFXLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlO2dCQUN2QyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxpQkFBaUI7Z0JBQ3JELGdCQUFnQixFQUFFLGFBQUssQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsT0FBTzthQUMvRCxFQUNELEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLG1CQUFtQixFQUFFLElBQUksRUFBRSxDQUMvRCxDQUFDO1lBQ0YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUM7WUFFMUIsWUFBWTtZQUNaLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDaEMsT0FBTyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUU7Z0JBQ3ZDLE1BQU0sT0FBTyxHQUFHLEdBQUcsT0FBTyxRQUFRLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDaEQsTUFBTSxHQUFHLEdBQUcsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUN0QixPQUFPLEVBQ1A7b0JBQ0UsS0FBSyxFQUFFLE9BQU87b0JBQ2QsV0FBVyxFQUFFLE9BQU87b0JBQ3BCLFdBQVcsRUFBRSxPQUFPO29CQUNwQixXQUFXLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlO29CQUN2QyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxpQkFBaUI7b0JBQ3JELE9BQU8sRUFBRSxhQUFLLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxJQUFJO29CQUN6QyxTQUFTLEVBQUUsS0FBSyxLQUFLLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQztvQkFDekMsU0FBUyxFQUFFLENBQUMsYUFBSyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO29CQUMvQyxvQkFBb0IsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLG9CQUFvQjtvQkFFckQsVUFBVSxFQUFFLENBQUM7b0JBQ2IscUJBQXFCLEVBQUUsQ0FBQztvQkFFeEIsV0FBVyxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFO29CQUNuQyxzQkFBc0IsRUFBRSxHQUFHLE9BQU8sSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsRUFBRTtvQkFFakUsZUFBZSxFQUFFLE1BQU0sQ0FBQyxFQUFFO29CQUMxQiw2QkFBNkIsRUFBRSxJQUFJLENBQUMsY0FBYztvQkFDbEQsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFZLENBQUMsT0FBTztvQkFDL0IsVUFBVSxFQUFFLEdBQUcsSUFBSSxDQUFDLFdBQVksQ0FBQyxVQUFVLElBQUksQ0FBQyxFQUFFO29CQUVsRCxNQUFNLEVBQ0osWUFBWSxJQUFJLEVBQUU7d0JBQ2hCLENBQUMsQ0FBQyxhQUFLLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxZQUFZO3dCQUNoRCxDQUFDLENBQUMsU0FBUztvQkFDZixLQUFLLEVBQ0gsWUFBWSxJQUFJLEVBQUU7d0JBQ2hCLENBQUMsQ0FBQyxNQUFNLElBQUEsK0JBQWUsRUFBQyxFQUFFLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQzt3QkFDekMsQ0FBQyxDQUFDLFNBQVM7aUJBQ2hCLEVBQ0QsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLG1CQUFtQixFQUFFLElBQUksRUFBRSxDQUNqRCxDQUFDO2dCQUVGLHFCQUFxQjtnQkFDckIsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUNqQixPQUFPLEVBQ1A7b0JBQ0UsV0FBVyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZTtvQkFDdkMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsaUJBQWlCO29CQUNyRCxTQUFTLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTO29CQUMvQixLQUFLLEVBQUUsT0FBTztpQkFDZixFQUNELEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxDQUNuQixDQUFDO2dCQUVGLDBCQUEwQjtnQkFDMUIsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7b0JBQ3ZCLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FDaEIsR0FBRyxPQUFPLFNBQVMsRUFDbkI7d0JBQ0UsV0FBVyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZTt3QkFDdkMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsaUJBQWlCO3dCQUNyRCxLQUFLLEVBQUUsT0FBTzt3QkFDZCxRQUFRLEVBQUUsUUFBUTt3QkFDbEIsTUFBTSxFQUFFLEtBQUs7d0JBQ2IsS0FBSyxFQUFFLElBQUksQ0FBQyxhQUFhO3FCQUMxQixFQUNELEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxDQUNuQixDQUFDO2dCQUNKLENBQUM7Z0JBRUQsdUJBQXVCO2dCQUN2QixJQUFJLFlBQVksSUFBSSxFQUFFLEVBQUUsQ0FBQztvQkFDdkIsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRTt3QkFDM0IsTUFBTSxPQUFPLEdBQUcsR0FBRyxPQUFPLElBQUksRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO3dCQUN4QyxNQUFNLEdBQUcsR0FBRyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQy9CLE9BQU8sRUFDUDs0QkFDRSxXQUFXLEVBQUUsT0FBTzs0QkFDcEIsS0FBSyxFQUFFLEdBQUcsQ0FBQyxFQUFFOzRCQUNiLFdBQVcsRUFBRSxPQUFPOzRCQUNwQixXQUFXLEVBQUUsT0FBTzs0QkFDcEIsV0FBVyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZTs0QkFDdkMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsaUJBQWlCOzRCQUNyRCxHQUFHLEVBQUU7eUJBQ04sRUFDRCxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsQ0FDbkIsQ0FBQzt3QkFFRixpQkFBaUI7d0JBQ2pCLE1BQU0sTUFBTSxHQUFHLEdBQUcsT0FBTyxTQUFTLENBQUM7d0JBQ25DLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUN6QixNQUFNLEVBQ047NEJBQ0UsUUFBUSxFQUFFLFFBQVE7NEJBQ2xCLFdBQVcsRUFBRSxHQUFHLENBQUMsRUFBRTs0QkFDbkIsS0FBSyxFQUFFLEdBQUcsQ0FBQyxFQUFFOzRCQUNiLFdBQVcsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWU7NEJBQ3ZDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLGlCQUFpQjs0QkFDckQsTUFBTSxFQUFFLEtBQUs7NEJBQ2IsS0FBSyxFQUFFLElBQUksMkJBQWlCLENBQUM7Z0NBQzNCLEdBQUcsSUFBSSxDQUFDLEtBQUs7Z0NBQ2IsSUFBSSxFQUFFLE1BQU07NkJBQ2IsQ0FBQztpQ0FDQyxZQUFZLENBQUM7Z0NBQ1osSUFBSSxFQUFFLEdBQUc7Z0NBQ1QsV0FBVyxFQUFFLGNBQWMsdUJBQVksRUFBRTs2QkFDMUMsQ0FBQztpQ0FDRCxLQUFLLEVBQUU7eUJBQ1gsRUFDRCxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsbUJBQW1CLEVBQUUsSUFBSSxFQUFFLENBQzlDLENBQUM7b0JBQ0osQ0FBQyxDQUFDLENBQUM7Z0JBQ0wsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVNLEtBQUssQ0FBQyxLQUFLO1FBQ2hCLE1BQU0sSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBRXZCLE9BQU87WUFDTCxZQUFZLEVBQUUsSUFBSSxDQUFDLGdCQUFnQjtZQUNuQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLO1lBQ3ZCLEVBQUUsRUFBRSxJQUFBLG9CQUFXLEVBQUEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRTtTQUN6QyxDQUFDO0lBQ0osQ0FBQztDQUNGO0FBM01ELGlDQTJNQyJ9
|
|
@@ -0,0 +1,325 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
const types_1 = require("./types");
|
|
30
|
+
const apimanagement = __importStar(require("@pulumi/azure-native/apimanagement"));
|
|
31
|
+
const Naming_1 = require("../Common/Naming");
|
|
32
|
+
const StackEnv_1 = require("../Common/StackEnv");
|
|
33
|
+
const azure_providers_1 = require("@drunk-pulumi/azure-providers");
|
|
34
|
+
const Random_1 = require("../Core/Random");
|
|
35
|
+
const IpAddress_1 = __importDefault(require("../VNet/IpAddress"));
|
|
36
|
+
const Identity_1 = __importDefault(require("../AzAd/Identity"));
|
|
37
|
+
const AzureEnv_1 = require("../Common/AzureEnv");
|
|
38
|
+
const pulumi_1 = require("@pulumi/pulumi");
|
|
39
|
+
const PrivateEndpoint_1 = __importDefault(require("../VNet/PrivateEndpoint"));
|
|
40
|
+
class ApimBuilder extends types_1.Builder {
|
|
41
|
+
_insightLog = undefined;
|
|
42
|
+
_publisher = undefined;
|
|
43
|
+
_proxyDomain = undefined;
|
|
44
|
+
_sku = undefined;
|
|
45
|
+
_additionalLocations = [];
|
|
46
|
+
_zones = undefined;
|
|
47
|
+
_restoreFromDeleted = false;
|
|
48
|
+
_enableEntraID = false;
|
|
49
|
+
_disableSignIn = false;
|
|
50
|
+
_apimVnet = undefined;
|
|
51
|
+
_privateLink = undefined;
|
|
52
|
+
_rootCerts = [];
|
|
53
|
+
_caCerts = [];
|
|
54
|
+
_auths = [];
|
|
55
|
+
_instanceName = undefined;
|
|
56
|
+
_ipAddressInstances = {};
|
|
57
|
+
_apimInstance = undefined;
|
|
58
|
+
constructor(props) {
|
|
59
|
+
super(props);
|
|
60
|
+
}
|
|
61
|
+
disableSignIn() {
|
|
62
|
+
this._disableSignIn = true;
|
|
63
|
+
return this;
|
|
64
|
+
}
|
|
65
|
+
withAuth(props) {
|
|
66
|
+
this._auths.push(props);
|
|
67
|
+
this._disableSignIn = false;
|
|
68
|
+
return this;
|
|
69
|
+
}
|
|
70
|
+
withEntraID() {
|
|
71
|
+
this._enableEntraID = true;
|
|
72
|
+
this._disableSignIn = false;
|
|
73
|
+
return this;
|
|
74
|
+
}
|
|
75
|
+
withCACert(props) {
|
|
76
|
+
this._caCerts.push(props);
|
|
77
|
+
return this;
|
|
78
|
+
}
|
|
79
|
+
withRootCert(props) {
|
|
80
|
+
this._rootCerts.push(props);
|
|
81
|
+
return this;
|
|
82
|
+
}
|
|
83
|
+
withPrivateLink(props) {
|
|
84
|
+
this._privateLink = props;
|
|
85
|
+
return this;
|
|
86
|
+
}
|
|
87
|
+
withSubnet(props) {
|
|
88
|
+
this._apimVnet = props;
|
|
89
|
+
return this;
|
|
90
|
+
}
|
|
91
|
+
restoreFomDeleted() {
|
|
92
|
+
this._restoreFromDeleted = true;
|
|
93
|
+
return this;
|
|
94
|
+
}
|
|
95
|
+
withZones(props) {
|
|
96
|
+
this._zones = props;
|
|
97
|
+
return this;
|
|
98
|
+
}
|
|
99
|
+
withAdditionalLocation(props) {
|
|
100
|
+
this._additionalLocations.push(props);
|
|
101
|
+
return this;
|
|
102
|
+
}
|
|
103
|
+
withInsightLog(props) {
|
|
104
|
+
this._insightLog = props;
|
|
105
|
+
return this;
|
|
106
|
+
}
|
|
107
|
+
withProxyDomain(props) {
|
|
108
|
+
this._proxyDomain = props;
|
|
109
|
+
return this;
|
|
110
|
+
}
|
|
111
|
+
withPublisher(props) {
|
|
112
|
+
this._publisher = props;
|
|
113
|
+
return this;
|
|
114
|
+
}
|
|
115
|
+
withSku(props) {
|
|
116
|
+
this._sku = props;
|
|
117
|
+
return this;
|
|
118
|
+
}
|
|
119
|
+
buildPublicIpAddress() {
|
|
120
|
+
if (!this._apimVnet)
|
|
121
|
+
return;
|
|
122
|
+
const ipPros = {
|
|
123
|
+
...this.commonProps,
|
|
124
|
+
name: `${this.commonProps.name}-apim`,
|
|
125
|
+
enableZone: this._sku.sku === "Premium",
|
|
126
|
+
};
|
|
127
|
+
this._ipAddressInstances[this.commonProps.name] = (0, IpAddress_1.default)(ipPros);
|
|
128
|
+
if (this._additionalLocations) {
|
|
129
|
+
this._additionalLocations.forEach((j) => {
|
|
130
|
+
this._ipAddressInstances[j.location] = (0, IpAddress_1.default)({
|
|
131
|
+
...ipPros,
|
|
132
|
+
name: `${this.commonProps.name}-${j.location}-apim`,
|
|
133
|
+
});
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
buildAPIM() {
|
|
138
|
+
this._instanceName = (0, Naming_1.getApimName)(this.commonProps.name);
|
|
139
|
+
const sku = {
|
|
140
|
+
name: this._sku.sku,
|
|
141
|
+
capacity: this._sku.sku === "Consumption" ? 0 : this._sku.capacity ?? 1,
|
|
142
|
+
};
|
|
143
|
+
const zones = sku.name === "Premium" ? this._zones : undefined;
|
|
144
|
+
this._apimInstance = new apimanagement.ApiManagementService(this._instanceName, {
|
|
145
|
+
serviceName: this._instanceName,
|
|
146
|
+
...this.commonProps.group,
|
|
147
|
+
publisherEmail: this._publisher.publisherEmail,
|
|
148
|
+
publisherName: this._publisher.publisherName ?? StackEnv_1.organization,
|
|
149
|
+
notificationSenderEmail: this._publisher?.notificationSenderEmail ??
|
|
150
|
+
"apimgmt-noreply@mail.windowsazure.com",
|
|
151
|
+
identity: { type: "SystemAssigned" },
|
|
152
|
+
sku,
|
|
153
|
+
certificates: [
|
|
154
|
+
...this._rootCerts.map((c) => ({
|
|
155
|
+
encodedCertificate: c.certificate,
|
|
156
|
+
certificatePassword: c.certificatePassword,
|
|
157
|
+
storeName: "Root",
|
|
158
|
+
})),
|
|
159
|
+
...this._caCerts.map((c) => ({
|
|
160
|
+
encodedCertificate: c.certificate,
|
|
161
|
+
certificatePassword: c.certificatePassword,
|
|
162
|
+
storeName: "CertificateAuthority",
|
|
163
|
+
})),
|
|
164
|
+
],
|
|
165
|
+
enableClientCertificate: true,
|
|
166
|
+
hostnameConfigurations: this._proxyDomain
|
|
167
|
+
? [
|
|
168
|
+
{
|
|
169
|
+
type: "Proxy",
|
|
170
|
+
hostName: this._proxyDomain.domain,
|
|
171
|
+
encodedCertificate: this._proxyDomain.certificate,
|
|
172
|
+
certificatePassword: this._proxyDomain.certificatePassword,
|
|
173
|
+
negotiateClientCertificate: false,
|
|
174
|
+
defaultSslBinding: false,
|
|
175
|
+
},
|
|
176
|
+
]
|
|
177
|
+
: undefined,
|
|
178
|
+
//Restore APIM from Deleted
|
|
179
|
+
restore: this._restoreFromDeleted,
|
|
180
|
+
//Only support when link to a virtual network
|
|
181
|
+
publicIpAddressId: this._apimVnet
|
|
182
|
+
? this._ipAddressInstances[this.commonProps.name]?.id
|
|
183
|
+
: undefined,
|
|
184
|
+
publicNetworkAccess: this._privateLink?.disablePublicAccess
|
|
185
|
+
? "Disabled"
|
|
186
|
+
: "Enabled",
|
|
187
|
+
//NATGateway
|
|
188
|
+
natGatewayState: this._apimVnet?.enableGateway ? "Enabled" : "Disabled",
|
|
189
|
+
virtualNetworkType: this._apimVnet?.type ?? "None",
|
|
190
|
+
virtualNetworkConfiguration: this._apimVnet
|
|
191
|
+
? {
|
|
192
|
+
subnetResourceId: this._apimVnet.subnetId,
|
|
193
|
+
}
|
|
194
|
+
: undefined,
|
|
195
|
+
//Only available for Premium
|
|
196
|
+
zones,
|
|
197
|
+
//Only available for Premium
|
|
198
|
+
additionalLocations: sku.name === "Premium"
|
|
199
|
+
? this._additionalLocations?.map((a) => ({
|
|
200
|
+
...a,
|
|
201
|
+
sku,
|
|
202
|
+
zones,
|
|
203
|
+
}))
|
|
204
|
+
: undefined,
|
|
205
|
+
customProperties: {
|
|
206
|
+
"Microsoft.WindowsAzure.ApiManagement.Gateway.Protocols.Server.Http2": "true",
|
|
207
|
+
"Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Backend.Protocols.Ssl30": "false",
|
|
208
|
+
"Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Backend.Protocols.Tls10": "false",
|
|
209
|
+
"Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Backend.Protocols.Tls11": "false",
|
|
210
|
+
"Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA": "false",
|
|
211
|
+
"Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA": "false",
|
|
212
|
+
"Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA": "false",
|
|
213
|
+
"Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA": "false",
|
|
214
|
+
"Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_RSA_WITH_AES_128_CBC_SHA": "false",
|
|
215
|
+
"Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_RSA_WITH_AES_128_CBC_SHA256": "false",
|
|
216
|
+
"Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_RSA_WITH_AES_128_GCM_SHA256": "false",
|
|
217
|
+
"Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_RSA_WITH_AES_256_CBC_SHA": "false",
|
|
218
|
+
"Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_RSA_WITH_AES_256_CBC_SHA256": "false",
|
|
219
|
+
"Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TripleDes168": "false",
|
|
220
|
+
"Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Protocols.Ssl30": "false",
|
|
221
|
+
"Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Protocols.Tls10": "false",
|
|
222
|
+
"Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Protocols.Tls11": "false",
|
|
223
|
+
},
|
|
224
|
+
}, { dependsOn: this.commonProps.dependsOn, deleteBeforeReplace: true });
|
|
225
|
+
}
|
|
226
|
+
buildEntraID() {
|
|
227
|
+
if (!this._enableEntraID || this._disableSignIn)
|
|
228
|
+
return;
|
|
229
|
+
const identity = (0, Identity_1.default)({
|
|
230
|
+
...this.commonProps,
|
|
231
|
+
name: `${this.commonProps.name}-apim`,
|
|
232
|
+
createClientSecret: true,
|
|
233
|
+
});
|
|
234
|
+
new apimanagement.IdentityProvider(this.commonProps.name, {
|
|
235
|
+
...this.commonProps.group,
|
|
236
|
+
serviceName: this._apimInstance.name,
|
|
237
|
+
clientId: identity.clientId,
|
|
238
|
+
clientSecret: identity.clientSecret,
|
|
239
|
+
authority: (0, pulumi_1.interpolate) `https://login.microsoftonline.com/${AzureEnv_1.tenantId}/`,
|
|
240
|
+
type: "aad",
|
|
241
|
+
identityProviderName: "aad",
|
|
242
|
+
allowedTenants: [AzureEnv_1.tenantId],
|
|
243
|
+
signinTenant: AzureEnv_1.tenantId,
|
|
244
|
+
}, { dependsOn: this._apimInstance });
|
|
245
|
+
}
|
|
246
|
+
buildAuths() {
|
|
247
|
+
if (this._disableSignIn)
|
|
248
|
+
return;
|
|
249
|
+
this._auths.forEach((auth) => new apimanagement.IdentityProvider(`${this.commonProps.name}-${auth.type}`, {
|
|
250
|
+
...this.commonProps.group,
|
|
251
|
+
...auth,
|
|
252
|
+
identityProviderName: auth.type,
|
|
253
|
+
serviceName: this._apimInstance.name,
|
|
254
|
+
}, { dependsOn: this._apimInstance }));
|
|
255
|
+
}
|
|
256
|
+
buildDisableSigIn() {
|
|
257
|
+
if (!this._disableSignIn)
|
|
258
|
+
return;
|
|
259
|
+
//Turn off Sign up setting
|
|
260
|
+
new azure_providers_1.ApimSignUpSettingsResource(this._instanceName, {
|
|
261
|
+
...this.commonProps.group,
|
|
262
|
+
serviceName: this._instanceName,
|
|
263
|
+
subscriptionId: AzureEnv_1.subscriptionId,
|
|
264
|
+
enabled: false,
|
|
265
|
+
termsOfService: {
|
|
266
|
+
consentRequired: false,
|
|
267
|
+
enabled: false,
|
|
268
|
+
text: "Terms & Conditions Of Service",
|
|
269
|
+
},
|
|
270
|
+
}, { dependsOn: this._apimInstance, deleteBeforeReplace: true });
|
|
271
|
+
//Turn of the SignIn setting
|
|
272
|
+
new azure_providers_1.ApimSignInSettingsResource(this._instanceName, {
|
|
273
|
+
...this.commonProps.group,
|
|
274
|
+
serviceName: this._instanceName,
|
|
275
|
+
subscriptionId: AzureEnv_1.subscriptionId,
|
|
276
|
+
enabled: false,
|
|
277
|
+
}, { dependsOn: this._apimInstance, deleteBeforeReplace: true });
|
|
278
|
+
}
|
|
279
|
+
buildPrivateLink() {
|
|
280
|
+
if (!this._privateLink)
|
|
281
|
+
return;
|
|
282
|
+
(0, PrivateEndpoint_1.default)({
|
|
283
|
+
...this.commonProps,
|
|
284
|
+
name: this._instanceName,
|
|
285
|
+
resourceId: this._apimInstance.id,
|
|
286
|
+
privateDnsZoneName: "privatelink.azure-api.net",
|
|
287
|
+
subnetIds: this._privateLink.subnetIds,
|
|
288
|
+
linkServiceGroupIds: ["Gateway"],
|
|
289
|
+
dependsOn: this._apimInstance,
|
|
290
|
+
});
|
|
291
|
+
}
|
|
292
|
+
buildInsightLog() {
|
|
293
|
+
if (!this._insightLog)
|
|
294
|
+
return;
|
|
295
|
+
//App Insight Logs
|
|
296
|
+
new apimanagement.Logger(`${this._instanceName}-insight`, {
|
|
297
|
+
serviceName: this._apimInstance.name,
|
|
298
|
+
...this.commonProps.group,
|
|
299
|
+
loggerType: apimanagement.LoggerType.ApplicationInsights,
|
|
300
|
+
description: "App Insight Logger",
|
|
301
|
+
loggerId: (0, Random_1.randomUuId)(this._instanceName).result,
|
|
302
|
+
resourceId: this._insightLog.id,
|
|
303
|
+
credentials: {
|
|
304
|
+
//This credential will be add to NameValue automatically.
|
|
305
|
+
instrumentationKey: this._insightLog.instrumentationKey,
|
|
306
|
+
},
|
|
307
|
+
}, { dependsOn: this._apimInstance });
|
|
308
|
+
}
|
|
309
|
+
build() {
|
|
310
|
+
this.buildPublicIpAddress();
|
|
311
|
+
this.buildAPIM();
|
|
312
|
+
this.buildPrivateLink();
|
|
313
|
+
this.buildDisableSigIn();
|
|
314
|
+
this.buildEntraID();
|
|
315
|
+
this.buildAuths();
|
|
316
|
+
this.buildInsightLog();
|
|
317
|
+
return {
|
|
318
|
+
resourceName: this._instanceName,
|
|
319
|
+
group: this.commonProps.group,
|
|
320
|
+
id: this._apimInstance.id,
|
|
321
|
+
};
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
exports.default = (props) => new ApimBuilder(props);
|
|
325
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBpbUJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvQnVpbGRlci9BcGltQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsbUNBZWlCO0FBRWpCLGtGQUFvRTtBQUNwRSw2Q0FBK0M7QUFDL0MsaURBQWtEO0FBQ2xELG1FQUd1QztBQUN2QywyQ0FBNEM7QUFHNUMsa0VBQTBDO0FBQzFDLGdFQUF3QztBQUN4QyxpREFBOEQ7QUFDOUQsMkNBQTZDO0FBQzdDLDhFQUFzRDtBQUV0RCxNQUFNLFdBQ0osU0FBUSxlQUFxQjtJQUdyQixXQUFXLEdBQStCLFNBQVMsQ0FBQztJQUNwRCxVQUFVLEdBQXlDLFNBQVMsQ0FBQztJQUM3RCxZQUFZLEdBQXNDLFNBQVMsQ0FBQztJQUM1RCxJQUFJLEdBQW1DLFNBQVMsQ0FBQztJQUNqRCxvQkFBb0IsR0FBaUMsRUFBRSxDQUFDO0lBQ3hELE1BQU0sR0FBNkIsU0FBUyxDQUFDO0lBQzdDLG1CQUFtQixHQUFZLEtBQUssQ0FBQztJQUNyQyxjQUFjLEdBQVksS0FBSyxDQUFDO0lBQ2hDLGNBQWMsR0FBWSxLQUFLLENBQUM7SUFDaEMsU0FBUyxHQUE2QixTQUFTLENBQUM7SUFDaEQsWUFBWSxHQUFvQyxTQUFTLENBQUM7SUFDMUQsVUFBVSxHQUEwQixFQUFFLENBQUM7SUFDdkMsUUFBUSxHQUEwQixFQUFFLENBQUM7SUFDckMsTUFBTSxHQUFtQixFQUFFLENBQUM7SUFFNUIsYUFBYSxHQUF1QixTQUFTLENBQUM7SUFDOUMsbUJBQW1CLEdBQTRDLEVBQUUsQ0FBQztJQUNsRSxhQUFhLEdBQ25CLFNBQVMsQ0FBQztJQUVaLFlBQW1CLEtBQW1CO1FBQ3BDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNmLENBQUM7SUFDTSxhQUFhO1FBQ2xCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1FBQzNCLE9BQU8sSUFB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
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { ApimAuthCertType, ApimBaseUrlType, ApimCheckHeaderType, ApimClientCertType, ApimClientIpHeaderType, ApimCorsType, ApimFindAndReplaceType, ApimMockPropsType, ApimOutCacheType, ApimRateLimitType, ApimRewriteUriType, ApimSetHeaderType, ApimValidateJwtWhitelistIpType, ApimWhitelistIpType, IApimPolicyBuilder, ApimChildBuilderProps } from "./types";
|
|
2
|
+
export default class ApimPolicyBuilder implements IApimPolicyBuilder {
|
|
3
|
+
private props;
|
|
4
|
+
private _baseUrl;
|
|
5
|
+
private _rewriteUri;
|
|
6
|
+
private _rateLimit;
|
|
7
|
+
private _cacheOptions;
|
|
8
|
+
private _backendCert;
|
|
9
|
+
private _verifyClientCert;
|
|
10
|
+
private _cors;
|
|
11
|
+
private _validateJwtWhitelistIp;
|
|
12
|
+
private _mockResponses;
|
|
13
|
+
private _headers;
|
|
14
|
+
private _checkHeaders;
|
|
15
|
+
private _whitelistIps;
|
|
16
|
+
private _findAndReplaces;
|
|
17
|
+
private _inboundPolicies;
|
|
18
|
+
private _outboundPolicies;
|
|
19
|
+
constructor(props: ApimChildBuilderProps);
|
|
20
|
+
setBaseUrl(props: ApimBaseUrlType): IApimPolicyBuilder;
|
|
21
|
+
setHeader(props: ApimSetHeaderType): IApimPolicyBuilder;
|
|
22
|
+
checkHeader(props: ApimCheckHeaderType): IApimPolicyBuilder;
|
|
23
|
+
mockResponse(props: ApimMockPropsType): IApimPolicyBuilder;
|
|
24
|
+
rewriteUri(props: ApimRewriteUriType): IApimPolicyBuilder;
|
|
25
|
+
setRateLimit(props: ApimRateLimitType): IApimPolicyBuilder;
|
|
26
|
+
setCacheOptions(props: ApimOutCacheType): IApimPolicyBuilder;
|
|
27
|
+
setBackendCert(props: ApimAuthCertType): IApimPolicyBuilder;
|
|
28
|
+
verifyClientCert(props: ApimClientCertType): IApimPolicyBuilder;
|
|
29
|
+
setCors(props: ApimCorsType): IApimPolicyBuilder;
|
|
30
|
+
setClientIpHeader(props: ApimClientIpHeaderType): IApimPolicyBuilder;
|
|
31
|
+
/** Filter IP from Bearer Token */
|
|
32
|
+
validateJwtWhitelistIp(props: ApimValidateJwtWhitelistIpType): IApimPolicyBuilder;
|
|
33
|
+
/** IP Address Whitelisting */
|
|
34
|
+
setWhitelistIPs(props: ApimWhitelistIpType): IApimPolicyBuilder;
|
|
35
|
+
/**Replace outbound results */
|
|
36
|
+
setFindAndReplaces(props: ApimFindAndReplaceType): IApimPolicyBuilder;
|
|
37
|
+
private buildBaseUrl;
|
|
38
|
+
private buildHeaders;
|
|
39
|
+
private buildCheckHeaders;
|
|
40
|
+
private buildMockResponse;
|
|
41
|
+
private buildRewriteUri;
|
|
42
|
+
private buildRateLimit;
|
|
43
|
+
private buildCacheOptions;
|
|
44
|
+
private buildBackendCert;
|
|
45
|
+
private buildVerifyClientCert;
|
|
46
|
+
private buildCors;
|
|
47
|
+
private buildValidateJwtWhitelistIp;
|
|
48
|
+
private buildWhiteListIps;
|
|
49
|
+
private buildFindAndReplace;
|
|
50
|
+
build(): string;
|
|
51
|
+
}
|