@webiny/pulumi-aws 5.26.0 → 5.27.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/apps/admin/AdminApp.d.ts +1 -1
- package/apps/admin/AdminApp.js +20 -1
- package/apps/admin/AdminApp.js.map +1 -1
- package/apps/api/ApiApp.d.ts +11 -14
- package/apps/api/ApiApp.js +62 -67
- package/apps/api/ApiApp.js.map +1 -1
- package/apps/api/ApiApwScheduler.d.ts +0 -2
- package/apps/api/ApiApwScheduler.js +14 -8
- package/apps/api/ApiApwScheduler.js.map +1 -1
- package/apps/api/ApiCloudfront.js +2 -2
- package/apps/api/ApiCloudfront.js.map +1 -1
- package/apps/api/ApiFileManager.d.ts +1 -8
- package/apps/api/ApiFileManager.js +31 -32
- package/apps/api/ApiFileManager.js.map +1 -1
- package/apps/api/ApiGraphql.d.ts +0 -10
- package/apps/api/ApiGraphql.js +59 -39
- package/apps/api/ApiGraphql.js.map +1 -1
- package/apps/api/ApiHeadlessCMS.d.ts +0 -4
- package/apps/api/ApiHeadlessCMS.js +30 -20
- package/apps/api/ApiHeadlessCMS.js.map +1 -1
- package/apps/api/ApiPageBuilder.d.ts +0 -8
- package/apps/api/ApiPageBuilder.js +79 -60
- package/apps/api/ApiPageBuilder.js.map +1 -1
- package/apps/common/StorageOutput.d.ts +21 -0
- package/apps/common/StorageOutput.js +50 -0
- package/apps/common/StorageOutput.js.map +1 -0
- package/apps/common/VpcConfig.d.ts +8 -0
- package/apps/common/VpcConfig.js +37 -0
- package/apps/common/VpcConfig.js.map +1 -0
- package/apps/common/index.d.ts +2 -0
- package/apps/common/index.js +31 -0
- package/apps/common/index.js.map +1 -0
- package/apps/gateway/GatewayApi.d.ts +17 -0
- package/apps/gateway/GatewayApi.js +187 -0
- package/apps/gateway/GatewayApi.js.map +1 -0
- package/apps/gateway/GatewayApp.d.ts +25 -0
- package/apps/gateway/GatewayApp.js +85 -0
- package/apps/gateway/GatewayApp.js.map +1 -0
- package/apps/gateway/GatewayLambdas.d.ts +13 -0
- package/apps/gateway/GatewayLambdas.js +92 -0
- package/apps/gateway/GatewayLambdas.js.map +1 -0
- package/apps/gateway/GatewayReactApp.d.ts +17 -0
- package/apps/gateway/GatewayReactApp.js +163 -0
- package/apps/gateway/GatewayReactApp.js.map +1 -0
- package/apps/index.d.ts +1 -0
- package/apps/index.js +14 -0
- package/apps/index.js.map +1 -1
- package/apps/{api/ApiLambdaUtils.d.ts → lambdaUtils.d.ts} +6 -3
- package/apps/lambdaUtils.js +75 -0
- package/apps/lambdaUtils.js.map +1 -0
- package/apps/storage/StorageApp.d.ts +42 -5
- package/apps/storage/StorageApp.js +27 -9
- package/apps/storage/StorageApp.js.map +1 -1
- package/apps/storage/StorageElasticSearch.d.ts +15 -0
- package/apps/storage/StorageElasticSearch.js +242 -0
- package/apps/storage/StorageElasticSearch.js.map +1 -0
- package/apps/storage/StorageEventBus.d.ts +2 -0
- package/apps/{api/ApiLambdaUtils.js → storage/StorageEventBus.js} +15 -33
- package/apps/storage/StorageEventBus.js.map +1 -0
- package/apps/{api/ApiVpc.d.ts → storage/StorageVpc.d.ts} +4 -4
- package/apps/storage/StorageVpc.js +145 -0
- package/apps/storage/StorageVpc.js.map +1 -0
- package/apps/storage/index.d.ts +2 -0
- package/apps/storage/index.js +26 -0
- package/apps/storage/index.js.map +1 -1
- package/apps/utils.d.ts +5 -0
- package/apps/utils.js +14 -0
- package/apps/utils.js.map +1 -0
- package/apps/website/WebsiteApp.d.ts +33 -3
- package/apps/website/WebsiteApp.js +57 -5
- package/apps/website/WebsiteApp.js.map +1 -1
- package/apps/website/WebsiteHookRender.js +20 -22
- package/apps/website/WebsiteHookRender.js.map +1 -1
- package/apps/website/WebsitePrerendering.d.ts +31 -0
- package/apps/website/WebsitePrerendering.js +266 -0
- package/apps/website/WebsitePrerendering.js.map +1 -0
- package/apps/website/WebsiteUpload.d.ts +6 -0
- package/apps/website/WebsiteUpload.js +50 -0
- package/apps/website/WebsiteUpload.js.map +1 -0
- package/package.json +9 -8
- package/apps/api/ApiLambdaUtils.js.map +0 -1
- package/apps/api/ApiPrerendering.d.ts +0 -24
- package/apps/api/ApiPrerendering.js +0 -200
- package/apps/api/ApiPrerendering.js.map +0 -1
- package/apps/api/ApiVpc.js +0 -129
- package/apps/api/ApiVpc.js.map +0 -1
- package/apps/getStorageOutput.d.ts +0 -13
- package/apps/getStorageOutput.js +0 -29
- package/apps/getStorageOutput.js.map +0 -1
- package/apps/website/WebsiteHookUpdatePbSettings.d.ts +0 -5
- package/apps/website/WebsiteHookUpdatePbSettings.js +0 -80
- package/apps/website/WebsiteHookUpdatePbSettings.js.map +0 -1
- package/apps/website/WebsiteHookUpload.d.ts +0 -1
- package/apps/website/WebsiteHookUpload.js +0 -65
- package/apps/website/WebsiteHookUpload.js.map +0 -1
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.ElasticSearch = void 0;
|
|
9
|
+
|
|
10
|
+
var _path = _interopRequireDefault(require("path"));
|
|
11
|
+
|
|
12
|
+
var pulumi = _interopRequireWildcard(require("@pulumi/pulumi"));
|
|
13
|
+
|
|
14
|
+
var aws = _interopRequireWildcard(require("@pulumi/aws"));
|
|
15
|
+
|
|
16
|
+
var _pulumiSdk = require("@webiny/pulumi-sdk");
|
|
17
|
+
|
|
18
|
+
var _awsUtils = require("../awsUtils");
|
|
19
|
+
|
|
20
|
+
var _StorageVpc = require("./StorageVpc");
|
|
21
|
+
|
|
22
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
23
|
+
|
|
24
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
25
|
+
|
|
26
|
+
const ElasticSearch = (0, _pulumiSdk.defineAppModule)({
|
|
27
|
+
name: "ElasticSearch",
|
|
28
|
+
|
|
29
|
+
config(app, params) {
|
|
30
|
+
const domainName = "webiny-js";
|
|
31
|
+
const accountId = (0, _awsUtils.getAwsAccountId)(app);
|
|
32
|
+
const vpc = app.getModule(_StorageVpc.StorageVpc, {
|
|
33
|
+
optional: true
|
|
34
|
+
});
|
|
35
|
+
const domain = app.addResource(aws.elasticsearch.Domain, {
|
|
36
|
+
name: domainName,
|
|
37
|
+
config: {
|
|
38
|
+
elasticsearchVersion: "7.7",
|
|
39
|
+
clusterConfig: {
|
|
40
|
+
instanceType: "t3.medium.elasticsearch",
|
|
41
|
+
instanceCount: 2,
|
|
42
|
+
zoneAwarenessEnabled: true,
|
|
43
|
+
zoneAwarenessConfig: {
|
|
44
|
+
availabilityZoneCount: 2
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
vpcOptions: vpc ? {
|
|
48
|
+
subnetIds: vpc.subnets.private.map(s => s.output.id),
|
|
49
|
+
securityGroupIds: [vpc.vpc.output.defaultSecurityGroupId]
|
|
50
|
+
} : undefined,
|
|
51
|
+
ebsOptions: {
|
|
52
|
+
ebsEnabled: true,
|
|
53
|
+
volumeSize: 10,
|
|
54
|
+
volumeType: "gp2"
|
|
55
|
+
},
|
|
56
|
+
advancedOptions: {
|
|
57
|
+
"rest.action.multi.allow_explicit_index": "true"
|
|
58
|
+
},
|
|
59
|
+
snapshotOptions: {
|
|
60
|
+
automatedSnapshotStartHour: 23
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
opts: {
|
|
64
|
+
protect: params.protect
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
/**
|
|
68
|
+
* Domain policy defines who can access your Elasticsearch Domain.
|
|
69
|
+
* For details on Elasticsearch security, read the official documentation:
|
|
70
|
+
* https://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/security.html
|
|
71
|
+
*/
|
|
72
|
+
|
|
73
|
+
const domainPolicy = app.addResource(aws.elasticsearch.DomainPolicy, {
|
|
74
|
+
name: `${domainName}-policy`,
|
|
75
|
+
config: {
|
|
76
|
+
domainName: domain.output.domainName,
|
|
77
|
+
accessPolicies: {
|
|
78
|
+
Version: "2012-10-17",
|
|
79
|
+
Statement: [
|
|
80
|
+
/**
|
|
81
|
+
* Allow requests signed with current account
|
|
82
|
+
*/
|
|
83
|
+
{
|
|
84
|
+
Effect: "Allow",
|
|
85
|
+
Principal: {
|
|
86
|
+
AWS: accountId
|
|
87
|
+
},
|
|
88
|
+
Action: "es:*",
|
|
89
|
+
Resource: pulumi.interpolate`${domain.output.arn}/*`
|
|
90
|
+
}]
|
|
91
|
+
}
|
|
92
|
+
},
|
|
93
|
+
opts: {
|
|
94
|
+
protect: params.protect
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
/**
|
|
98
|
+
* Create a table for Elasticsearch records. All ES records are stored in this table to dramatically improve
|
|
99
|
+
* performance and stability on write operations (especially massive data imports). This table also serves as a backup and
|
|
100
|
+
* a single source of truth for your Elasticsearch domain. Streaming is enabled on this table, and it will
|
|
101
|
+
* allow asynchronous synchronization of data with Elasticsearch domain.
|
|
102
|
+
*/
|
|
103
|
+
|
|
104
|
+
const table = app.addResource(aws.dynamodb.Table, {
|
|
105
|
+
name: "webiny-es",
|
|
106
|
+
config: {
|
|
107
|
+
attributes: [{
|
|
108
|
+
name: "PK",
|
|
109
|
+
type: "S"
|
|
110
|
+
}, {
|
|
111
|
+
name: "SK",
|
|
112
|
+
type: "S"
|
|
113
|
+
}],
|
|
114
|
+
streamEnabled: true,
|
|
115
|
+
streamViewType: "NEW_AND_OLD_IMAGES",
|
|
116
|
+
billingMode: "PAY_PER_REQUEST",
|
|
117
|
+
hashKey: "PK",
|
|
118
|
+
rangeKey: "SK"
|
|
119
|
+
},
|
|
120
|
+
opts: {
|
|
121
|
+
protect: params.protect
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
const roleName = "dynamo-to-elastic-lambda-role";
|
|
125
|
+
const role = app.addResource(aws.iam.Role, {
|
|
126
|
+
name: roleName,
|
|
127
|
+
config: {
|
|
128
|
+
assumeRolePolicy: {
|
|
129
|
+
Version: "2012-10-17",
|
|
130
|
+
Statement: [{
|
|
131
|
+
Action: "sts:AssumeRole",
|
|
132
|
+
Principal: {
|
|
133
|
+
Service: "lambda.amazonaws.com"
|
|
134
|
+
},
|
|
135
|
+
Effect: "Allow"
|
|
136
|
+
}]
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
});
|
|
140
|
+
const policy = getDynamoDbToElasticLambdaPolicy(app, domain.output);
|
|
141
|
+
app.addResource(aws.iam.RolePolicyAttachment, {
|
|
142
|
+
name: `${roleName}-DynamoDbToElasticLambdaPolicy`,
|
|
143
|
+
config: {
|
|
144
|
+
role: role.output,
|
|
145
|
+
policyArn: policy.output.arn
|
|
146
|
+
}
|
|
147
|
+
});
|
|
148
|
+
app.addResource(aws.iam.RolePolicyAttachment, {
|
|
149
|
+
name: `${roleName}-AWSLambdaVPCAccessExecutionRole`,
|
|
150
|
+
config: {
|
|
151
|
+
role: role.output,
|
|
152
|
+
policyArn: aws.iam.ManagedPolicy.AWSLambdaVPCAccessExecutionRole
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
app.addResource(aws.iam.RolePolicyAttachment, {
|
|
156
|
+
name: `${roleName}-AWSLambdaDynamoDBExecutionRole`,
|
|
157
|
+
config: {
|
|
158
|
+
role: role.output,
|
|
159
|
+
policyArn: aws.iam.ManagedPolicy.AWSLambdaDynamoDBExecutionRole
|
|
160
|
+
}
|
|
161
|
+
});
|
|
162
|
+
/**
|
|
163
|
+
* This Lambda will process the stream events from DynamoDB table that contains Elasticsearch items.
|
|
164
|
+
* Elasticsearch can't take large amount of individual writes in a short period of time, so this way
|
|
165
|
+
* we store data for Elasticsearch in a DynamoDB table, and asynchronously insert it into Elasticsearch
|
|
166
|
+
* using batching.
|
|
167
|
+
*/
|
|
168
|
+
|
|
169
|
+
const lambda = app.addResource(aws.lambda.Function, {
|
|
170
|
+
name: "dynamo-to-elastic",
|
|
171
|
+
config: {
|
|
172
|
+
role: role.output.arn,
|
|
173
|
+
runtime: "nodejs14.x",
|
|
174
|
+
handler: "handler.handler",
|
|
175
|
+
timeout: 600,
|
|
176
|
+
memorySize: 512,
|
|
177
|
+
environment: {
|
|
178
|
+
variables: {
|
|
179
|
+
DEBUG: String(process.env.DEBUG),
|
|
180
|
+
ELASTIC_SEARCH_ENDPOINT: domain.output.endpoint
|
|
181
|
+
}
|
|
182
|
+
},
|
|
183
|
+
description: "Process DynamoDB Stream.",
|
|
184
|
+
code: new pulumi.asset.AssetArchive({
|
|
185
|
+
".": new pulumi.asset.FileArchive(_path.default.join(app.ctx.appDir, "code/dynamoToElastic/build"))
|
|
186
|
+
}),
|
|
187
|
+
vpcConfig: vpc ? {
|
|
188
|
+
subnetIds: vpc.subnets.private.map(s => s.output.id),
|
|
189
|
+
securityGroupIds: [vpc.vpc.output.defaultSecurityGroupId]
|
|
190
|
+
} : undefined
|
|
191
|
+
}
|
|
192
|
+
});
|
|
193
|
+
const eventSourceMapping = app.addResource(aws.lambda.EventSourceMapping, {
|
|
194
|
+
name: "dynamo-to-elastic",
|
|
195
|
+
config: {
|
|
196
|
+
eventSourceArn: table.output.streamArn,
|
|
197
|
+
functionName: lambda.output.arn,
|
|
198
|
+
startingPosition: "LATEST",
|
|
199
|
+
maximumRetryAttempts: 3,
|
|
200
|
+
batchSize: 1000,
|
|
201
|
+
maximumBatchingWindowInSeconds: 1
|
|
202
|
+
}
|
|
203
|
+
});
|
|
204
|
+
app.addOutputs({
|
|
205
|
+
elasticsearchDomainArn: domain.output.arn,
|
|
206
|
+
elasticsearchDomainEndpoint: domain.output.endpoint,
|
|
207
|
+
elasticsearchDynamodbTableArn: table.output.arn,
|
|
208
|
+
elasticsearchDynamodbTableName: table.output.name
|
|
209
|
+
});
|
|
210
|
+
return {
|
|
211
|
+
domain,
|
|
212
|
+
domainPolicy,
|
|
213
|
+
table,
|
|
214
|
+
dynamoToElastic: {
|
|
215
|
+
role,
|
|
216
|
+
policy,
|
|
217
|
+
lambda,
|
|
218
|
+
eventSourceMapping
|
|
219
|
+
}
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
});
|
|
224
|
+
exports.ElasticSearch = ElasticSearch;
|
|
225
|
+
|
|
226
|
+
function getDynamoDbToElasticLambdaPolicy(app, domain) {
|
|
227
|
+
return app.addResource(aws.iam.Policy, {
|
|
228
|
+
name: "DynamoDbToElasticLambdaPolicy-updated",
|
|
229
|
+
config: {
|
|
230
|
+
description: "This policy enables access to ES and Dynamodb streams",
|
|
231
|
+
policy: {
|
|
232
|
+
Version: "2012-10-17",
|
|
233
|
+
Statement: [{
|
|
234
|
+
Sid: "PermissionForES",
|
|
235
|
+
Effect: "Allow",
|
|
236
|
+
Action: ["es:ESHttpDelete", "es:ESHttpPatch", "es:ESHttpPost", "es:ESHttpPut"],
|
|
237
|
+
Resource: [pulumi.interpolate`${domain.arn}`, pulumi.interpolate`${domain.arn}/*`]
|
|
238
|
+
}]
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
});
|
|
242
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["StorageElasticSearch.ts"],"names":["ElasticSearch","name","config","app","params","domainName","accountId","vpc","getModule","StorageVpc","optional","domain","addResource","aws","elasticsearch","Domain","elasticsearchVersion","clusterConfig","instanceType","instanceCount","zoneAwarenessEnabled","zoneAwarenessConfig","availabilityZoneCount","vpcOptions","subnetIds","subnets","private","map","s","output","id","securityGroupIds","defaultSecurityGroupId","undefined","ebsOptions","ebsEnabled","volumeSize","volumeType","advancedOptions","snapshotOptions","automatedSnapshotStartHour","opts","protect","domainPolicy","DomainPolicy","accessPolicies","Version","Statement","Effect","Principal","AWS","Action","Resource","pulumi","interpolate","arn","table","dynamodb","Table","attributes","type","streamEnabled","streamViewType","billingMode","hashKey","rangeKey","roleName","role","iam","Role","assumeRolePolicy","Service","policy","getDynamoDbToElasticLambdaPolicy","RolePolicyAttachment","policyArn","ManagedPolicy","AWSLambdaVPCAccessExecutionRole","AWSLambdaDynamoDBExecutionRole","lambda","Function","runtime","handler","timeout","memorySize","environment","variables","DEBUG","String","process","env","ELASTIC_SEARCH_ENDPOINT","endpoint","description","code","asset","AssetArchive","FileArchive","path","join","ctx","appDir","vpcConfig","eventSourceMapping","EventSourceMapping","eventSourceArn","streamArn","functionName","startingPosition","maximumRetryAttempts","batchSize","maximumBatchingWindowInSeconds","addOutputs","elasticsearchDomainArn","elasticsearchDomainEndpoint","elasticsearchDynamodbTableArn","elasticsearchDynamodbTableName","dynamoToElastic","Policy","Sid"],"mappings":"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","sourcesContent":["import path from \"path\";\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\nimport { defineAppModule, PulumiApp } from \"@webiny/pulumi-sdk\";\n\nimport { getAwsAccountId } from \"../awsUtils\";\nimport { StorageVpc } from \"./StorageVpc\";\n\nexport interface ElasticSearchParams {\n protect: boolean;\n}\n\nexport const ElasticSearch = defineAppModule({\n name: \"ElasticSearch\",\n config(app, params: ElasticSearchParams) {\n const domainName = \"webiny-js\";\n const accountId = getAwsAccountId(app);\n\n const vpc = app.getModule(StorageVpc, { optional: true });\n\n const domain = app.addResource(aws.elasticsearch.Domain, {\n name: domainName,\n config: {\n elasticsearchVersion: \"7.7\",\n clusterConfig: {\n instanceType: \"t3.medium.elasticsearch\",\n instanceCount: 2,\n zoneAwarenessEnabled: true,\n zoneAwarenessConfig: {\n availabilityZoneCount: 2\n }\n },\n vpcOptions: vpc\n ? {\n subnetIds: vpc.subnets.private.map(s => s.output.id),\n securityGroupIds: [vpc.vpc.output.defaultSecurityGroupId]\n }\n : undefined,\n ebsOptions: {\n ebsEnabled: true,\n volumeSize: 10,\n volumeType: \"gp2\"\n },\n advancedOptions: {\n \"rest.action.multi.allow_explicit_index\": \"true\"\n },\n snapshotOptions: {\n automatedSnapshotStartHour: 23\n }\n },\n opts: { protect: params.protect }\n });\n\n /**\n * Domain policy defines who can access your Elasticsearch Domain.\n * For details on Elasticsearch security, read the official documentation:\n * https://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/security.html\n */\n const domainPolicy = app.addResource(aws.elasticsearch.DomainPolicy, {\n name: `${domainName}-policy`,\n config: {\n domainName: domain.output.domainName,\n accessPolicies: {\n Version: \"2012-10-17\",\n Statement: [\n /**\n * Allow requests signed with current account\n */\n {\n Effect: \"Allow\",\n Principal: {\n AWS: accountId\n },\n Action: \"es:*\",\n Resource: pulumi.interpolate`${domain.output.arn}/*`\n }\n ]\n }\n },\n opts: { protect: params.protect }\n });\n\n /**\n * Create a table for Elasticsearch records. All ES records are stored in this table to dramatically improve\n * performance and stability on write operations (especially massive data imports). This table also serves as a backup and\n * a single source of truth for your Elasticsearch domain. Streaming is enabled on this table, and it will\n * allow asynchronous synchronization of data with Elasticsearch domain.\n */\n const table = app.addResource(aws.dynamodb.Table, {\n name: \"webiny-es\",\n config: {\n attributes: [\n { name: \"PK\", type: \"S\" },\n { name: \"SK\", type: \"S\" }\n ],\n streamEnabled: true,\n streamViewType: \"NEW_AND_OLD_IMAGES\",\n billingMode: \"PAY_PER_REQUEST\",\n hashKey: \"PK\",\n rangeKey: \"SK\"\n },\n opts: { protect: params.protect }\n });\n\n const roleName = \"dynamo-to-elastic-lambda-role\";\n\n const role = app.addResource(aws.iam.Role, {\n name: roleName,\n config: {\n assumeRolePolicy: {\n Version: \"2012-10-17\",\n Statement: [\n {\n Action: \"sts:AssumeRole\",\n Principal: {\n Service: \"lambda.amazonaws.com\"\n },\n Effect: \"Allow\"\n }\n ]\n }\n }\n });\n\n const policy = getDynamoDbToElasticLambdaPolicy(app, domain.output);\n\n app.addResource(aws.iam.RolePolicyAttachment, {\n name: `${roleName}-DynamoDbToElasticLambdaPolicy`,\n config: {\n role: role.output,\n policyArn: policy.output.arn\n }\n });\n\n app.addResource(aws.iam.RolePolicyAttachment, {\n name: `${roleName}-AWSLambdaVPCAccessExecutionRole`,\n config: {\n role: role.output,\n policyArn: aws.iam.ManagedPolicy.AWSLambdaVPCAccessExecutionRole\n }\n });\n\n app.addResource(aws.iam.RolePolicyAttachment, {\n name: `${roleName}-AWSLambdaDynamoDBExecutionRole`,\n config: {\n role: role.output,\n policyArn: aws.iam.ManagedPolicy.AWSLambdaDynamoDBExecutionRole\n }\n });\n\n /**\n * This Lambda will process the stream events from DynamoDB table that contains Elasticsearch items.\n * Elasticsearch can't take large amount of individual writes in a short period of time, so this way\n * we store data for Elasticsearch in a DynamoDB table, and asynchronously insert it into Elasticsearch\n * using batching.\n */\n const lambda = app.addResource(aws.lambda.Function, {\n name: \"dynamo-to-elastic\",\n config: {\n role: role.output.arn,\n runtime: \"nodejs14.x\",\n handler: \"handler.handler\",\n timeout: 600,\n memorySize: 512,\n environment: {\n variables: {\n DEBUG: String(process.env.DEBUG),\n ELASTIC_SEARCH_ENDPOINT: domain.output.endpoint\n }\n },\n description: \"Process DynamoDB Stream.\",\n code: new pulumi.asset.AssetArchive({\n \".\": new pulumi.asset.FileArchive(\n path.join(app.ctx.appDir, \"code/dynamoToElastic/build\")\n )\n }),\n vpcConfig: vpc\n ? {\n subnetIds: vpc.subnets.private.map(s => s.output.id),\n securityGroupIds: [vpc.vpc.output.defaultSecurityGroupId]\n }\n : undefined\n }\n });\n\n const eventSourceMapping = app.addResource(aws.lambda.EventSourceMapping, {\n name: \"dynamo-to-elastic\",\n config: {\n eventSourceArn: table.output.streamArn,\n functionName: lambda.output.arn,\n startingPosition: \"LATEST\",\n maximumRetryAttempts: 3,\n batchSize: 1000,\n maximumBatchingWindowInSeconds: 1\n }\n });\n\n app.addOutputs({\n elasticsearchDomainArn: domain.output.arn,\n elasticsearchDomainEndpoint: domain.output.endpoint,\n elasticsearchDynamodbTableArn: table.output.arn,\n elasticsearchDynamodbTableName: table.output.name\n });\n\n return {\n domain,\n domainPolicy,\n table,\n dynamoToElastic: {\n role,\n policy,\n lambda,\n eventSourceMapping\n }\n };\n }\n});\n\nfunction getDynamoDbToElasticLambdaPolicy(\n app: PulumiApp,\n domain: pulumi.Output<aws.elasticsearch.Domain>\n) {\n return app.addResource(aws.iam.Policy, {\n name: \"DynamoDbToElasticLambdaPolicy-updated\",\n config: {\n description: \"This policy enables access to ES and Dynamodb streams\",\n policy: {\n Version: \"2012-10-17\",\n Statement: [\n {\n Sid: \"PermissionForES\",\n Effect: \"Allow\",\n Action: [\n \"es:ESHttpDelete\",\n \"es:ESHttpPatch\",\n \"es:ESHttpPost\",\n \"es:ESHttpPut\"\n ],\n Resource: [\n pulumi.interpolate`${domain.arn}`,\n pulumi.interpolate`${domain.arn}/*`\n ]\n }\n ]\n }\n }\n });\n}\n"]}
|
|
@@ -3,43 +3,25 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
6
|
+
exports.StorageEventBus = void 0;
|
|
7
7
|
|
|
8
8
|
var aws = _interopRequireWildcard(require("@pulumi/aws"));
|
|
9
9
|
|
|
10
|
+
var _pulumiSdk = require("@webiny/pulumi-sdk");
|
|
11
|
+
|
|
10
12
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
11
13
|
|
|
12
14
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
13
15
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
}]
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
});
|
|
30
|
-
app.addResource(aws.iam.RolePolicyAttachment, {
|
|
31
|
-
name: `${params.name}-policy`,
|
|
32
|
-
config: {
|
|
33
|
-
role: role.output,
|
|
34
|
-
policyArn: params.policy.arn
|
|
35
|
-
}
|
|
36
|
-
});
|
|
37
|
-
app.addResource(aws.iam.RolePolicyAttachment, {
|
|
38
|
-
name: `${params.name}-execution-role`,
|
|
39
|
-
config: {
|
|
40
|
-
role: role.output,
|
|
41
|
-
policyArn: params.vpc ? aws.iam.ManagedPolicy.AWSLambdaVPCAccessExecutionRole : aws.iam.ManagedPolicy.AWSLambdaBasicExecutionRole
|
|
42
|
-
}
|
|
43
|
-
});
|
|
44
|
-
return role;
|
|
45
|
-
}
|
|
16
|
+
const StorageEventBus = (0, _pulumiSdk.defineAppModule)({
|
|
17
|
+
name: "StorageEventBus",
|
|
18
|
+
|
|
19
|
+
config(app) {
|
|
20
|
+
return app.addResource(aws.cloudwatch.EventBus, {
|
|
21
|
+
name: "event-bus",
|
|
22
|
+
config: {}
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
});
|
|
27
|
+
exports.StorageEventBus = StorageEventBus;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["StorageEventBus.ts"],"names":["StorageEventBus","name","config","app","addResource","aws","cloudwatch","EventBus"],"mappings":";;;;;;;AAAA;;AACA;;;;;;AAEO,MAAMA,eAAe,GAAG,gCAAgB;AAC3CC,EAAAA,IAAI,EAAE,iBADqC;;AAE3CC,EAAAA,MAAM,CAACC,GAAD,EAAiB;AACnB,WAAOA,GAAG,CAACC,WAAJ,CAAgBC,GAAG,CAACC,UAAJ,CAAeC,QAA/B,EAAyC;AAC5CN,MAAAA,IAAI,EAAE,WADsC;AAE5CC,MAAAA,MAAM,EAAE;AAFoC,KAAzC,CAAP;AAIH;;AAP0C,CAAhB,CAAxB","sourcesContent":["import * as aws from \"@pulumi/aws\";\nimport { defineAppModule, PulumiApp } from \"@webiny/pulumi-sdk\";\n\nexport const StorageEventBus = defineAppModule({\n name: \"StorageEventBus\",\n config(app: PulumiApp) {\n return app.addResource(aws.cloudwatch.EventBus, {\n name: \"event-bus\",\n config: {}\n });\n }\n});\n"]}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import * as aws from "@pulumi/aws";
|
|
2
|
-
import {
|
|
3
|
-
export declare
|
|
2
|
+
import { PulumiAppModule } from "@webiny/pulumi-sdk";
|
|
3
|
+
export declare type StorageVpc = PulumiAppModule<typeof StorageVpc>;
|
|
4
|
+
export declare const StorageVpc: import("@webiny/pulumi-sdk").PulumiAppModuleDefinition<{
|
|
4
5
|
vpc: import("@webiny/pulumi-sdk").PulumiAppResource<typeof aws.ec2.Vpc>;
|
|
5
6
|
subnets: {
|
|
6
7
|
public: import("@webiny/pulumi-sdk").PulumiAppResource<typeof aws.ec2.Subnet>[];
|
|
7
8
|
private: import("@webiny/pulumi-sdk").PulumiAppResource<typeof aws.ec2.Subnet>[];
|
|
8
9
|
};
|
|
9
|
-
}
|
|
10
|
-
export declare type Vpc = ReturnType<typeof createVpc>;
|
|
10
|
+
}, void>;
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.StorageVpc = void 0;
|
|
7
|
+
|
|
8
|
+
var aws = _interopRequireWildcard(require("@pulumi/aws"));
|
|
9
|
+
|
|
10
|
+
var _pulumiSdk = require("@webiny/pulumi-sdk");
|
|
11
|
+
|
|
12
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
13
|
+
|
|
14
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
15
|
+
|
|
16
|
+
const StorageVpc = (0, _pulumiSdk.defineAppModule)({
|
|
17
|
+
name: "StorageVpc",
|
|
18
|
+
|
|
19
|
+
config(app) {
|
|
20
|
+
// Create VPC.
|
|
21
|
+
const vpc = app.addResource(aws.ec2.Vpc, {
|
|
22
|
+
name: "webiny",
|
|
23
|
+
config: {
|
|
24
|
+
cidrBlock: "10.0.0.0/16"
|
|
25
|
+
}
|
|
26
|
+
}); // Create one public and two private subnets.
|
|
27
|
+
|
|
28
|
+
const publicSubnet = app.addResource(aws.ec2.Subnet, {
|
|
29
|
+
name: "public",
|
|
30
|
+
config: {
|
|
31
|
+
vpcId: vpc.output.id,
|
|
32
|
+
cidrBlock: "10.0.0.0/24",
|
|
33
|
+
tags: {
|
|
34
|
+
Name: "public-subnet"
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
const availabilityZones = app.addHandler(() => {
|
|
39
|
+
return aws.getAvailabilityZones({
|
|
40
|
+
state: "available"
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
const privateSubnet1 = app.addResource(aws.ec2.Subnet, {
|
|
44
|
+
name: "private-subnet-1",
|
|
45
|
+
config: {
|
|
46
|
+
vpcId: vpc.output.id,
|
|
47
|
+
cidrBlock: "10.0.1.0/24",
|
|
48
|
+
availabilityZone: availabilityZones.apply(zone => zone.names[0]),
|
|
49
|
+
tags: {
|
|
50
|
+
Name: "private-subnet-1"
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
const privateSubnet2 = app.addResource(aws.ec2.Subnet, {
|
|
55
|
+
name: "private-subnet-2",
|
|
56
|
+
config: {
|
|
57
|
+
vpcId: vpc.output.id,
|
|
58
|
+
cidrBlock: "10.0.2.0/24",
|
|
59
|
+
availabilityZone: availabilityZones.apply(zone => zone.names[1]),
|
|
60
|
+
tags: {
|
|
61
|
+
Name: "private-subnet-2"
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}); // Create Internet gateway.
|
|
65
|
+
|
|
66
|
+
const internetGateway = app.addResource(aws.ec2.InternetGateway, {
|
|
67
|
+
name: "internet-gateway",
|
|
68
|
+
config: {
|
|
69
|
+
vpcId: vpc.output.id
|
|
70
|
+
}
|
|
71
|
+
}); // Create NAT gateway.
|
|
72
|
+
|
|
73
|
+
const elasticIpAllocation = app.addResource(aws.ec2.Eip, {
|
|
74
|
+
name: "nat-gateway-elastic-ip",
|
|
75
|
+
config: {
|
|
76
|
+
vpc: true
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
const natGateway = app.addResource(aws.ec2.NatGateway, {
|
|
80
|
+
name: "nat-gateway",
|
|
81
|
+
config: {
|
|
82
|
+
allocationId: elasticIpAllocation.output.id,
|
|
83
|
+
subnetId: publicSubnet.output.id
|
|
84
|
+
}
|
|
85
|
+
}); // Create a route table for both subnets.
|
|
86
|
+
|
|
87
|
+
const publicSubnetRouteTable = app.addResource(aws.ec2.RouteTable, {
|
|
88
|
+
name: "public",
|
|
89
|
+
config: {
|
|
90
|
+
vpcId: vpc.output.id,
|
|
91
|
+
routes: [{
|
|
92
|
+
cidrBlock: "0.0.0.0/0",
|
|
93
|
+
gatewayId: internetGateway.output.id
|
|
94
|
+
}]
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
const privateSubnetRouteTable = app.addResource(aws.ec2.RouteTable, {
|
|
98
|
+
name: "private",
|
|
99
|
+
config: {
|
|
100
|
+
vpcId: vpc.output.id,
|
|
101
|
+
routes: [{
|
|
102
|
+
cidrBlock: "0.0.0.0/0",
|
|
103
|
+
natGatewayId: natGateway.output.id
|
|
104
|
+
}]
|
|
105
|
+
}
|
|
106
|
+
}); // Create route table associations - links between subnets and route tables.
|
|
107
|
+
|
|
108
|
+
app.addResource(aws.ec2.RouteTableAssociation, {
|
|
109
|
+
name: "public-subnet-route-table-association",
|
|
110
|
+
config: {
|
|
111
|
+
subnetId: publicSubnet.output.id,
|
|
112
|
+
routeTableId: publicSubnetRouteTable.output.id
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
app.addResource(aws.ec2.RouteTableAssociation, {
|
|
116
|
+
name: "private-subnet-1-route-table-association",
|
|
117
|
+
config: {
|
|
118
|
+
subnetId: privateSubnet1.output.id,
|
|
119
|
+
routeTableId: privateSubnetRouteTable.output.id
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
app.addResource(aws.ec2.RouteTableAssociation, {
|
|
123
|
+
name: "private-subnet-2-route-table-association",
|
|
124
|
+
config: {
|
|
125
|
+
subnetId: privateSubnet2.output.id,
|
|
126
|
+
routeTableId: privateSubnetRouteTable.output.id
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
const subnets = {
|
|
130
|
+
public: [publicSubnet],
|
|
131
|
+
private: [privateSubnet1, privateSubnet2]
|
|
132
|
+
};
|
|
133
|
+
app.addOutputs({
|
|
134
|
+
vpcPublicSubnetIds: subnets.public.map(subNet => subNet.output.id),
|
|
135
|
+
vpcPrivateSubnetIds: subnets.private.map(subNet => subNet.output.id),
|
|
136
|
+
vpcSecurityGroupIds: [vpc.output.defaultSecurityGroupId]
|
|
137
|
+
});
|
|
138
|
+
return {
|
|
139
|
+
vpc,
|
|
140
|
+
subnets
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
});
|
|
145
|
+
exports.StorageVpc = StorageVpc;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["StorageVpc.ts"],"names":["StorageVpc","name","config","app","vpc","addResource","aws","ec2","Vpc","cidrBlock","publicSubnet","Subnet","vpcId","output","id","tags","Name","availabilityZones","addHandler","getAvailabilityZones","state","privateSubnet1","availabilityZone","apply","zone","names","privateSubnet2","internetGateway","InternetGateway","elasticIpAllocation","Eip","natGateway","NatGateway","allocationId","subnetId","publicSubnetRouteTable","RouteTable","routes","gatewayId","privateSubnetRouteTable","natGatewayId","RouteTableAssociation","routeTableId","subnets","public","private","addOutputs","vpcPublicSubnetIds","map","subNet","vpcPrivateSubnetIds","vpcSecurityGroupIds","defaultSecurityGroupId"],"mappings":"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","sourcesContent":["import * as aws from \"@pulumi/aws\";\nimport { defineAppModule, PulumiAppModule } from \"@webiny/pulumi-sdk\";\n\nexport type StorageVpc = PulumiAppModule<typeof StorageVpc>;\n\nexport const StorageVpc = defineAppModule({\n name: \"StorageVpc\",\n config(app) {\n // Create VPC.\n const vpc = app.addResource(aws.ec2.Vpc, {\n name: \"webiny\",\n config: {\n cidrBlock: \"10.0.0.0/16\"\n }\n });\n\n // Create one public and two private subnets.\n const publicSubnet = app.addResource(aws.ec2.Subnet, {\n name: \"public\",\n config: {\n vpcId: vpc.output.id,\n cidrBlock: \"10.0.0.0/24\",\n tags: { Name: \"public-subnet\" }\n }\n });\n\n const availabilityZones = app.addHandler(() => {\n return aws.getAvailabilityZones({\n state: \"available\"\n });\n });\n\n const privateSubnet1 = app.addResource(aws.ec2.Subnet, {\n name: \"private-subnet-1\",\n config: {\n vpcId: vpc.output.id,\n cidrBlock: \"10.0.1.0/24\",\n availabilityZone: availabilityZones.apply(zone => zone.names[0]),\n tags: { Name: \"private-subnet-1\" }\n }\n });\n\n const privateSubnet2 = app.addResource(aws.ec2.Subnet, {\n name: \"private-subnet-2\",\n config: {\n vpcId: vpc.output.id,\n cidrBlock: \"10.0.2.0/24\",\n availabilityZone: availabilityZones.apply(zone => zone.names[1]),\n tags: { Name: \"private-subnet-2\" }\n }\n });\n\n // Create Internet gateway.\n const internetGateway = app.addResource(aws.ec2.InternetGateway, {\n name: \"internet-gateway\",\n config: {\n vpcId: vpc.output.id\n }\n });\n\n // Create NAT gateway.\n const elasticIpAllocation = app.addResource(aws.ec2.Eip, {\n name: \"nat-gateway-elastic-ip\",\n config: {\n vpc: true\n }\n });\n\n const natGateway = app.addResource(aws.ec2.NatGateway, {\n name: \"nat-gateway\",\n config: {\n allocationId: elasticIpAllocation.output.id,\n subnetId: publicSubnet.output.id\n }\n });\n\n // Create a route table for both subnets.\n const publicSubnetRouteTable = app.addResource(aws.ec2.RouteTable, {\n name: \"public\",\n config: {\n vpcId: vpc.output.id,\n routes: [\n {\n cidrBlock: \"0.0.0.0/0\",\n gatewayId: internetGateway.output.id\n }\n ]\n }\n });\n\n const privateSubnetRouteTable = app.addResource(aws.ec2.RouteTable, {\n name: \"private\",\n config: {\n vpcId: vpc.output.id,\n routes: [\n {\n cidrBlock: \"0.0.0.0/0\",\n natGatewayId: natGateway.output.id\n }\n ]\n }\n });\n\n // Create route table associations - links between subnets and route tables.\n app.addResource(aws.ec2.RouteTableAssociation, {\n name: \"public-subnet-route-table-association\",\n config: {\n subnetId: publicSubnet.output.id,\n routeTableId: publicSubnetRouteTable.output.id\n }\n });\n\n app.addResource(aws.ec2.RouteTableAssociation, {\n name: \"private-subnet-1-route-table-association\",\n config: {\n subnetId: privateSubnet1.output.id,\n routeTableId: privateSubnetRouteTable.output.id\n }\n });\n\n app.addResource(aws.ec2.RouteTableAssociation, {\n name: \"private-subnet-2-route-table-association\",\n config: {\n subnetId: privateSubnet2.output.id,\n routeTableId: privateSubnetRouteTable.output.id\n }\n });\n\n const subnets = {\n public: [publicSubnet],\n private: [privateSubnet1, privateSubnet2]\n };\n\n app.addOutputs({\n vpcPublicSubnetIds: subnets.public.map(subNet => subNet.output.id),\n vpcPrivateSubnetIds: subnets.private.map(subNet => subNet.output.id),\n vpcSecurityGroupIds: [vpc.output.defaultSecurityGroupId]\n });\n\n return {\n vpc,\n subnets\n };\n }\n});\n"]}
|
package/apps/storage/index.d.ts
CHANGED
package/apps/storage/index.js
CHANGED
|
@@ -43,6 +43,19 @@ Object.keys(_StorageDynamo).forEach(function (key) {
|
|
|
43
43
|
});
|
|
44
44
|
});
|
|
45
45
|
|
|
46
|
+
var _StorageEventBus = require("./StorageEventBus");
|
|
47
|
+
|
|
48
|
+
Object.keys(_StorageEventBus).forEach(function (key) {
|
|
49
|
+
if (key === "default" || key === "__esModule") return;
|
|
50
|
+
if (key in exports && exports[key] === _StorageEventBus[key]) return;
|
|
51
|
+
Object.defineProperty(exports, key, {
|
|
52
|
+
enumerable: true,
|
|
53
|
+
get: function () {
|
|
54
|
+
return _StorageEventBus[key];
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
|
|
46
59
|
var _StorageFileManager = require("./StorageFileManager");
|
|
47
60
|
|
|
48
61
|
Object.keys(_StorageFileManager).forEach(function (key) {
|
|
@@ -54,4 +67,17 @@ Object.keys(_StorageFileManager).forEach(function (key) {
|
|
|
54
67
|
return _StorageFileManager[key];
|
|
55
68
|
}
|
|
56
69
|
});
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
var _StorageVpc = require("./StorageVpc");
|
|
73
|
+
|
|
74
|
+
Object.keys(_StorageVpc).forEach(function (key) {
|
|
75
|
+
if (key === "default" || key === "__esModule") return;
|
|
76
|
+
if (key in exports && exports[key] === _StorageVpc[key]) return;
|
|
77
|
+
Object.defineProperty(exports, key, {
|
|
78
|
+
enumerable: true,
|
|
79
|
+
get: function () {
|
|
80
|
+
return _StorageVpc[key];
|
|
81
|
+
}
|
|
82
|
+
});
|
|
57
83
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["index.ts"],"names":[],"mappings":";;;;;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA","sourcesContent":["export * from \"./StorageApp\";\nexport * from \"./StorageCognito\";\nexport * from \"./StorageDynamo\";\nexport * from \"./StorageFileManager\";\n"]}
|
|
1
|
+
{"version":3,"sources":["index.ts"],"names":[],"mappings":";;;;;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA","sourcesContent":["export * from \"./StorageApp\";\nexport * from \"./StorageCognito\";\nexport * from \"./StorageDynamo\";\nexport * from \"./StorageEventBus\";\nexport * from \"./StorageFileManager\";\nexport * from \"./StorageVpc\";\n"]}
|
package/apps/utils.d.ts
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { ApplicationContext, PulumiApp } from "@webiny/pulumi-sdk";
|
|
2
|
+
declare type InputFcn<T> = (ctx: ApplicationContext) => T;
|
|
3
|
+
export declare type AppInput<T> = T | InputFcn<T>;
|
|
4
|
+
export declare function getAppInput<T>(app: PulumiApp, input: AppInput<T>): T;
|
|
5
|
+
export {};
|
package/apps/utils.js
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.getAppInput = getAppInput;
|
|
7
|
+
|
|
8
|
+
function getAppInput(app, input) {
|
|
9
|
+
if (typeof input === "function") {
|
|
10
|
+
return input(app.ctx);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
return input;
|
|
14
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["utils.ts"],"names":["getAppInput","app","input","ctx"],"mappings":";;;;;;;AAMO,SAASA,WAAT,CAAwBC,GAAxB,EAAwCC,KAAxC,EAA4D;AAC/D,MAAI,OAAOA,KAAP,KAAiB,UAArB,EAAiC;AAC7B,WAAQA,KAAD,CAAuBD,GAAG,CAACE,GAA3B,CAAP;AACH;;AAED,SAAOD,KAAP;AACH","sourcesContent":["import { ApplicationContext, PulumiApp } from \"@webiny/pulumi-sdk\";\n\ntype InputFcn<T> = (ctx: ApplicationContext) => T;\n\nexport type AppInput<T> = T | InputFcn<T>;\n\nexport function getAppInput<T>(app: PulumiApp, input: AppInput<T>) {\n if (typeof input === \"function\") {\n return (input as InputFcn<T>)(app.ctx);\n }\n\n return input;\n}\n"]}
|