@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.
Files changed (95) hide show
  1. package/apps/admin/AdminApp.d.ts +1 -1
  2. package/apps/admin/AdminApp.js +20 -1
  3. package/apps/admin/AdminApp.js.map +1 -1
  4. package/apps/api/ApiApp.d.ts +11 -14
  5. package/apps/api/ApiApp.js +62 -67
  6. package/apps/api/ApiApp.js.map +1 -1
  7. package/apps/api/ApiApwScheduler.d.ts +0 -2
  8. package/apps/api/ApiApwScheduler.js +14 -8
  9. package/apps/api/ApiApwScheduler.js.map +1 -1
  10. package/apps/api/ApiCloudfront.js +2 -2
  11. package/apps/api/ApiCloudfront.js.map +1 -1
  12. package/apps/api/ApiFileManager.d.ts +1 -8
  13. package/apps/api/ApiFileManager.js +31 -32
  14. package/apps/api/ApiFileManager.js.map +1 -1
  15. package/apps/api/ApiGraphql.d.ts +0 -10
  16. package/apps/api/ApiGraphql.js +59 -39
  17. package/apps/api/ApiGraphql.js.map +1 -1
  18. package/apps/api/ApiHeadlessCMS.d.ts +0 -4
  19. package/apps/api/ApiHeadlessCMS.js +30 -20
  20. package/apps/api/ApiHeadlessCMS.js.map +1 -1
  21. package/apps/api/ApiPageBuilder.d.ts +0 -8
  22. package/apps/api/ApiPageBuilder.js +79 -60
  23. package/apps/api/ApiPageBuilder.js.map +1 -1
  24. package/apps/common/StorageOutput.d.ts +21 -0
  25. package/apps/common/StorageOutput.js +50 -0
  26. package/apps/common/StorageOutput.js.map +1 -0
  27. package/apps/common/VpcConfig.d.ts +8 -0
  28. package/apps/common/VpcConfig.js +37 -0
  29. package/apps/common/VpcConfig.js.map +1 -0
  30. package/apps/common/index.d.ts +2 -0
  31. package/apps/common/index.js +31 -0
  32. package/apps/common/index.js.map +1 -0
  33. package/apps/gateway/GatewayApi.d.ts +17 -0
  34. package/apps/gateway/GatewayApi.js +187 -0
  35. package/apps/gateway/GatewayApi.js.map +1 -0
  36. package/apps/gateway/GatewayApp.d.ts +25 -0
  37. package/apps/gateway/GatewayApp.js +85 -0
  38. package/apps/gateway/GatewayApp.js.map +1 -0
  39. package/apps/gateway/GatewayLambdas.d.ts +13 -0
  40. package/apps/gateway/GatewayLambdas.js +92 -0
  41. package/apps/gateway/GatewayLambdas.js.map +1 -0
  42. package/apps/gateway/GatewayReactApp.d.ts +17 -0
  43. package/apps/gateway/GatewayReactApp.js +163 -0
  44. package/apps/gateway/GatewayReactApp.js.map +1 -0
  45. package/apps/index.d.ts +1 -0
  46. package/apps/index.js +14 -0
  47. package/apps/index.js.map +1 -1
  48. package/apps/{api/ApiLambdaUtils.d.ts → lambdaUtils.d.ts} +6 -3
  49. package/apps/lambdaUtils.js +75 -0
  50. package/apps/lambdaUtils.js.map +1 -0
  51. package/apps/storage/StorageApp.d.ts +42 -5
  52. package/apps/storage/StorageApp.js +27 -9
  53. package/apps/storage/StorageApp.js.map +1 -1
  54. package/apps/storage/StorageElasticSearch.d.ts +15 -0
  55. package/apps/storage/StorageElasticSearch.js +242 -0
  56. package/apps/storage/StorageElasticSearch.js.map +1 -0
  57. package/apps/storage/StorageEventBus.d.ts +2 -0
  58. package/apps/{api/ApiLambdaUtils.js → storage/StorageEventBus.js} +15 -33
  59. package/apps/storage/StorageEventBus.js.map +1 -0
  60. package/apps/{api/ApiVpc.d.ts → storage/StorageVpc.d.ts} +4 -4
  61. package/apps/storage/StorageVpc.js +145 -0
  62. package/apps/storage/StorageVpc.js.map +1 -0
  63. package/apps/storage/index.d.ts +2 -0
  64. package/apps/storage/index.js +26 -0
  65. package/apps/storage/index.js.map +1 -1
  66. package/apps/utils.d.ts +5 -0
  67. package/apps/utils.js +14 -0
  68. package/apps/utils.js.map +1 -0
  69. package/apps/website/WebsiteApp.d.ts +33 -3
  70. package/apps/website/WebsiteApp.js +57 -5
  71. package/apps/website/WebsiteApp.js.map +1 -1
  72. package/apps/website/WebsiteHookRender.js +20 -22
  73. package/apps/website/WebsiteHookRender.js.map +1 -1
  74. package/apps/website/WebsitePrerendering.d.ts +31 -0
  75. package/apps/website/WebsitePrerendering.js +266 -0
  76. package/apps/website/WebsitePrerendering.js.map +1 -0
  77. package/apps/website/WebsiteUpload.d.ts +6 -0
  78. package/apps/website/WebsiteUpload.js +50 -0
  79. package/apps/website/WebsiteUpload.js.map +1 -0
  80. package/package.json +9 -8
  81. package/apps/api/ApiLambdaUtils.js.map +0 -1
  82. package/apps/api/ApiPrerendering.d.ts +0 -24
  83. package/apps/api/ApiPrerendering.js +0 -200
  84. package/apps/api/ApiPrerendering.js.map +0 -1
  85. package/apps/api/ApiVpc.js +0 -129
  86. package/apps/api/ApiVpc.js.map +0 -1
  87. package/apps/getStorageOutput.d.ts +0 -13
  88. package/apps/getStorageOutput.js +0 -29
  89. package/apps/getStorageOutput.js.map +0 -1
  90. package/apps/website/WebsiteHookUpdatePbSettings.d.ts +0 -5
  91. package/apps/website/WebsiteHookUpdatePbSettings.js +0 -80
  92. package/apps/website/WebsiteHookUpdatePbSettings.js.map +0 -1
  93. package/apps/website/WebsiteHookUpload.d.ts +0 -1
  94. package/apps/website/WebsiteHookUpload.js +0 -65
  95. package/apps/website/WebsiteHookUpload.js.map +0 -1
@@ -3,7 +3,7 @@ import { ApplicationContext, ApplicationConfig } from "@webiny/pulumi-sdk";
3
3
  import { CustomDomainParams } from "../customDomain";
4
4
  export interface AdminAppConfig {
5
5
  /** Custom domain configuration */
6
- domain?(ctx: ApplicationContext): CustomDomainParams;
6
+ domain?(ctx: ApplicationContext): CustomDomainParams | undefined | void;
7
7
  }
8
8
  export declare const AdminApp: new (ctx: ApplicationContext) => import("@webiny/pulumi-sdk").PulumiApp<AdminAppConfig> & {
9
9
  cloudfront: import("@webiny/pulumi-sdk").PulumiAppResource<typeof aws.cloudfront.Distribution>;
@@ -93,7 +93,26 @@ const AdminApp = (0, _pulumiSdk.defineApp)({
93
93
  appDir: app.ctx.appDir,
94
94
  bucket: outputs["appStorage"]
95
95
  });
96
- });
96
+ }); // Update variant gateway configuration.
97
+
98
+ const variant = app.ctx.variant;
99
+
100
+ if (variant) {
101
+ app.onAfterDeploy(async ({
102
+ outputs
103
+ }) => {
104
+ // After deployment is made we update a static JSON file with a variant configuration.
105
+ // TODO: We should update WCP config instead of a static file here
106
+ await (0, _pulumiSdk.updateGatewayConfig)({
107
+ app: "admin",
108
+ cwd: app.ctx.projectDir,
109
+ env: app.ctx.env,
110
+ variant: variant,
111
+ domain: outputs["appDomain"]
112
+ });
113
+ });
114
+ }
115
+
97
116
  return _objectSpread(_objectSpread({}, bucket), {}, {
98
117
  cloudfront
99
118
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["AdminApp.ts"],"names":["AdminApp","name","config","app","bucket","cloudfront","addResource","aws","Distribution","enabled","waitForDeployment","origins","origin","defaultRootObject","defaultCacheBehavior","compress","targetOriginId","originId","viewerProtocolPolicy","allowedMethods","cachedMethods","forwardedValues","cookies","forward","queryString","minTtl","defaultTtl","maxTtl","priceClass","customErrorResponses","errorCode","responseCode","responsePagePath","restrictions","geoRestriction","restrictionType","viewerCertificate","cloudfrontDefaultCertificate","domain","ctx","addOutputs","appStorage","output","id","appDomain","domainName","appUrl","apply","value","onAfterDeploy","outputs","appDir","createAdminApp","description","cli","watch","deploy","setup","onBeforeBuild","onAfterBuild","onBeforeDeploy"],"mappings":"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","sourcesContent":["import * as aws from \"@pulumi/aws\";\n\nimport {\n defineApp,\n createGenericApplication,\n ApplicationContext,\n ApplicationConfig\n} from \"@webiny/pulumi-sdk\";\n\nimport { createPublicAppBucket } from \"../createAppBucket\";\nimport { applyCustomDomain, CustomDomainParams } from \"../customDomain\";\nimport { adminUpload } from \"./AdminUpload\";\n\nexport interface AdminAppConfig {\n /** Custom domain configuration */\n domain?(ctx: ApplicationContext): CustomDomainParams;\n}\n\nexport const AdminApp = defineApp({\n name: \"Admin\",\n config(app, config: AdminAppConfig) {\n const bucket = createPublicAppBucket(app, \"admin-app\");\n\n const cloudfront = app.addResource(aws.cloudfront.Distribution, {\n name: \"admin-app-cdn\",\n config: {\n enabled: true,\n waitForDeployment: false,\n origins: [bucket.origin],\n defaultRootObject: \"index.html\",\n defaultCacheBehavior: {\n compress: true,\n targetOriginId: bucket.origin.originId,\n viewerProtocolPolicy: \"redirect-to-https\",\n allowedMethods: [\"GET\", \"HEAD\", \"OPTIONS\"],\n cachedMethods: [\"GET\", \"HEAD\", \"OPTIONS\"],\n forwardedValues: {\n cookies: { forward: \"none\" },\n queryString: false\n },\n // MinTTL <= DefaultTTL <= MaxTTL\n minTtl: 0,\n defaultTtl: 600,\n maxTtl: 600\n },\n priceClass: \"PriceClass_100\",\n customErrorResponses: [\n { errorCode: 404, responseCode: 404, responsePagePath: \"/index.html\" }\n ],\n restrictions: {\n geoRestriction: {\n restrictionType: \"none\"\n }\n },\n viewerCertificate: {\n cloudfrontDefaultCertificate: true\n }\n }\n });\n\n const domain = config.domain?.(app.ctx);\n if (domain) {\n applyCustomDomain(cloudfront, domain);\n }\n\n app.addOutputs({\n appStorage: bucket.bucket.output.id,\n appDomain: cloudfront.output.domainName,\n appUrl: cloudfront.output.domainName.apply(value => `https://${value}`)\n });\n\n app.onAfterDeploy(async ({ outputs }) => {\n await adminUpload({\n appDir: app.ctx.appDir,\n bucket: outputs[\"appStorage\"]\n });\n });\n\n return {\n ...bucket,\n cloudfront\n };\n }\n});\n\nexport type AdminApp = InstanceType<typeof AdminApp>;\n\nexport function createAdminApp(config?: AdminAppConfig & ApplicationConfig<AdminApp>) {\n return createGenericApplication({\n id: \"admin\",\n name: \"admin\",\n description: \"Your project's admin area.\",\n cli: {\n // Default args for the \"yarn webiny watch ...\" command (we don't need deploy option while developing).\n watch: {\n deploy: false\n }\n },\n async app(ctx) {\n // Create the app instance.\n const app = new AdminApp(ctx);\n // Run the default application setup.\n await app.setup(config || {});\n // Run the custom user config.\n await config?.config?.(app, ctx);\n return app;\n },\n onBeforeBuild: config?.onBeforeBuild,\n onAfterBuild: config?.onAfterBuild,\n onBeforeDeploy: config?.onBeforeDeploy,\n onAfterDeploy: config?.onAfterDeploy\n });\n}\n"]}
1
+ {"version":3,"sources":["AdminApp.ts"],"names":["AdminApp","name","config","app","bucket","cloudfront","addResource","aws","Distribution","enabled","waitForDeployment","origins","origin","defaultRootObject","defaultCacheBehavior","compress","targetOriginId","originId","viewerProtocolPolicy","allowedMethods","cachedMethods","forwardedValues","cookies","forward","queryString","minTtl","defaultTtl","maxTtl","priceClass","customErrorResponses","errorCode","responseCode","responsePagePath","restrictions","geoRestriction","restrictionType","viewerCertificate","cloudfrontDefaultCertificate","domain","ctx","addOutputs","appStorage","output","id","appDomain","domainName","appUrl","apply","value","onAfterDeploy","outputs","appDir","variant","cwd","projectDir","env","createAdminApp","description","cli","watch","deploy","setup","onBeforeBuild","onAfterBuild","onBeforeDeploy"],"mappings":";;;;;;;;;;;;AAAA;;AAEA;;AAQA;;AACA;;AACA;;;;;;;;;;AAOO,MAAMA,QAAQ,GAAG,0BAAU;AAC9BC,EAAAA,IAAI,EAAE,OADwB;;AAE9BC,EAAAA,MAAM,CAACC,GAAD,EAAMD,MAAN,EAA8B;AAAA;;AAChC,UAAME,MAAM,GAAG,4CAAsBD,GAAtB,EAA2B,WAA3B,CAAf;AAEA,UAAME,UAAU,GAAGF,GAAG,CAACG,WAAJ,CAAgBC,GAAG,CAACF,UAAJ,CAAeG,YAA/B,EAA6C;AAC5DP,MAAAA,IAAI,EAAE,eADsD;AAE5DC,MAAAA,MAAM,EAAE;AACJO,QAAAA,OAAO,EAAE,IADL;AAEJC,QAAAA,iBAAiB,EAAE,KAFf;AAGJC,QAAAA,OAAO,EAAE,CAACP,MAAM,CAACQ,MAAR,CAHL;AAIJC,QAAAA,iBAAiB,EAAE,YAJf;AAKJC,QAAAA,oBAAoB,EAAE;AAClBC,UAAAA,QAAQ,EAAE,IADQ;AAElBC,UAAAA,cAAc,EAAEZ,MAAM,CAACQ,MAAP,CAAcK,QAFZ;AAGlBC,UAAAA,oBAAoB,EAAE,mBAHJ;AAIlBC,UAAAA,cAAc,EAAE,CAAC,KAAD,EAAQ,MAAR,EAAgB,SAAhB,CAJE;AAKlBC,UAAAA,aAAa,EAAE,CAAC,KAAD,EAAQ,MAAR,EAAgB,SAAhB,CALG;AAMlBC,UAAAA,eAAe,EAAE;AACbC,YAAAA,OAAO,EAAE;AAAEC,cAAAA,OAAO,EAAE;AAAX,aADI;AAEbC,YAAAA,WAAW,EAAE;AAFA,WANC;AAUlB;AACAC,UAAAA,MAAM,EAAE,CAXU;AAYlBC,UAAAA,UAAU,EAAE,GAZM;AAalBC,UAAAA,MAAM,EAAE;AAbU,SALlB;AAoBJC,QAAAA,UAAU,EAAE,gBApBR;AAqBJC,QAAAA,oBAAoB,EAAE,CAClB;AAAEC,UAAAA,SAAS,EAAE,GAAb;AAAkBC,UAAAA,YAAY,EAAE,GAAhC;AAAqCC,UAAAA,gBAAgB,EAAE;AAAvD,SADkB,CArBlB;AAwBJC,QAAAA,YAAY,EAAE;AACVC,UAAAA,cAAc,EAAE;AACZC,YAAAA,eAAe,EAAE;AADL;AADN,SAxBV;AA6BJC,QAAAA,iBAAiB,EAAE;AACfC,UAAAA,4BAA4B,EAAE;AADf;AA7Bf;AAFoD,KAA7C,CAAnB;AAqCA,UAAMC,MAAM,qBAAGpC,MAAM,CAACoC,MAAV,mDAAG,oBAAApC,MAAM,EAAUC,GAAG,CAACoC,GAAd,CAArB;;AACA,QAAID,MAAJ,EAAY;AACR,2CAAkBjC,UAAlB,EAA8BiC,MAA9B;AACH;;AAEDnC,IAAAA,GAAG,CAACqC,UAAJ,CAAe;AACXC,MAAAA,UAAU,EAAErC,MAAM,CAACA,MAAP,CAAcsC,MAAd,CAAqBC,EADtB;AAEXC,MAAAA,SAAS,EAAEvC,UAAU,CAACqC,MAAX,CAAkBG,UAFlB;AAGXC,MAAAA,MAAM,EAAEzC,UAAU,CAACqC,MAAX,CAAkBG,UAAlB,CAA6BE,KAA7B,CAAmCC,KAAK,IAAK,WAAUA,KAAM,EAA7D;AAHG,KAAf;AAMA7C,IAAAA,GAAG,CAAC8C,aAAJ,CAAkB,OAAO;AAAEC,MAAAA;AAAF,KAAP,KAAuB;AACrC,YAAM,8BAAY;AACdC,QAAAA,MAAM,EAAEhD,GAAG,CAACoC,GAAJ,CAAQY,MADF;AAEd/C,QAAAA,MAAM,EAAE8C,OAAO,CAAC,YAAD;AAFD,OAAZ,CAAN;AAIH,KALD,EAnDgC,CA0DhC;;AACA,UAAME,OAAO,GAAGjD,GAAG,CAACoC,GAAJ,CAAQa,OAAxB;;AACA,QAAIA,OAAJ,EAAa;AACTjD,MAAAA,GAAG,CAAC8C,aAAJ,CAAkB,OAAO;AAAEC,QAAAA;AAAF,OAAP,KAAuB;AACrC;AACA;AACA,cAAM,oCAAoB;AACtB/C,UAAAA,GAAG,EAAE,OADiB;AAEtBkD,UAAAA,GAAG,EAAElD,GAAG,CAACoC,GAAJ,CAAQe,UAFS;AAGtBC,UAAAA,GAAG,EAAEpD,GAAG,CAACoC,GAAJ,CAAQgB,GAHS;AAItBH,UAAAA,OAAO,EAAEA,OAJa;AAKtBd,UAAAA,MAAM,EAAEY,OAAO,CAAC,WAAD;AALO,SAApB,CAAN;AAOH,OAVD;AAWH;;AAED,2CACO9C,MADP;AAEIC,MAAAA;AAFJ;AAIH;;AAhF6B,CAAV,CAAjB;;;AAqFA,SAASmD,cAAT,CAAwBtD,MAAxB,EAA+E;AAClF,SAAO,yCAAyB;AAC5ByC,IAAAA,EAAE,EAAE,OADwB;AAE5B1C,IAAAA,IAAI,EAAE,OAFsB;AAG5BwD,IAAAA,WAAW,EAAE,4BAHe;AAI5BC,IAAAA,GAAG,EAAE;AACD;AACAC,MAAAA,KAAK,EAAE;AACHC,QAAAA,MAAM,EAAE;AADL;AAFN,KAJuB;;AAU5B,UAAMzD,GAAN,CAAUoC,GAAV,EAAe;AAAA;;AACX;AACA,YAAMpC,GAAG,GAAG,IAAIH,QAAJ,CAAauC,GAAb,CAAZ,CAFW,CAGX;;AACA,YAAMpC,GAAG,CAAC0D,KAAJ,CAAU3D,MAAM,IAAI,EAApB,CAAN,CAJW,CAKX;;AACA,aAAMA,MAAN,aAAMA,MAAN,yCAAMA,MAAM,CAAEA,MAAd,mDAAM,oBAAAA,MAAM,EAAWC,GAAX,EAAgBoC,GAAhB,CAAZ;AACA,aAAOpC,GAAP;AACH,KAlB2B;;AAmB5B2D,IAAAA,aAAa,EAAE5D,MAAF,aAAEA,MAAF,uBAAEA,MAAM,CAAE4D,aAnBK;AAoB5BC,IAAAA,YAAY,EAAE7D,MAAF,aAAEA,MAAF,uBAAEA,MAAM,CAAE6D,YApBM;AAqB5BC,IAAAA,cAAc,EAAE9D,MAAF,aAAEA,MAAF,uBAAEA,MAAM,CAAE8D,cArBI;AAsB5Bf,IAAAA,aAAa,EAAE/C,MAAF,aAAEA,MAAF,uBAAEA,MAAM,CAAE+C;AAtBK,GAAzB,CAAP;AAwBH","sourcesContent":["import * as aws from \"@pulumi/aws\";\n\nimport {\n defineApp,\n createGenericApplication,\n ApplicationContext,\n ApplicationConfig,\n updateGatewayConfig\n} from \"@webiny/pulumi-sdk\";\n\nimport { createPublicAppBucket } from \"../createAppBucket\";\nimport { applyCustomDomain, CustomDomainParams } from \"../customDomain\";\nimport { adminUpload } from \"./AdminUpload\";\n\nexport interface AdminAppConfig {\n /** Custom domain configuration */\n domain?(ctx: ApplicationContext): CustomDomainParams | undefined | void;\n}\n\nexport const AdminApp = defineApp({\n name: \"Admin\",\n config(app, config: AdminAppConfig) {\n const bucket = createPublicAppBucket(app, \"admin-app\");\n\n const cloudfront = app.addResource(aws.cloudfront.Distribution, {\n name: \"admin-app-cdn\",\n config: {\n enabled: true,\n waitForDeployment: false,\n origins: [bucket.origin],\n defaultRootObject: \"index.html\",\n defaultCacheBehavior: {\n compress: true,\n targetOriginId: bucket.origin.originId,\n viewerProtocolPolicy: \"redirect-to-https\",\n allowedMethods: [\"GET\", \"HEAD\", \"OPTIONS\"],\n cachedMethods: [\"GET\", \"HEAD\", \"OPTIONS\"],\n forwardedValues: {\n cookies: { forward: \"none\" },\n queryString: false\n },\n // MinTTL <= DefaultTTL <= MaxTTL\n minTtl: 0,\n defaultTtl: 600,\n maxTtl: 600\n },\n priceClass: \"PriceClass_100\",\n customErrorResponses: [\n { errorCode: 404, responseCode: 404, responsePagePath: \"/index.html\" }\n ],\n restrictions: {\n geoRestriction: {\n restrictionType: \"none\"\n }\n },\n viewerCertificate: {\n cloudfrontDefaultCertificate: true\n }\n }\n });\n\n const domain = config.domain?.(app.ctx);\n if (domain) {\n applyCustomDomain(cloudfront, domain);\n }\n\n app.addOutputs({\n appStorage: bucket.bucket.output.id,\n appDomain: cloudfront.output.domainName,\n appUrl: cloudfront.output.domainName.apply(value => `https://${value}`)\n });\n\n app.onAfterDeploy(async ({ outputs }) => {\n await adminUpload({\n appDir: app.ctx.appDir,\n bucket: outputs[\"appStorage\"]\n });\n });\n\n // Update variant gateway configuration.\n const variant = app.ctx.variant;\n if (variant) {\n app.onAfterDeploy(async ({ outputs }) => {\n // After deployment is made we update a static JSON file with a variant configuration.\n // TODO: We should update WCP config instead of a static file here\n await updateGatewayConfig({\n app: \"admin\",\n cwd: app.ctx.projectDir,\n env: app.ctx.env,\n variant: variant,\n domain: outputs[\"appDomain\"]\n });\n });\n }\n\n return {\n ...bucket,\n cloudfront\n };\n }\n});\n\nexport type AdminApp = InstanceType<typeof AdminApp>;\n\nexport function createAdminApp(config?: AdminAppConfig & ApplicationConfig<AdminApp>) {\n return createGenericApplication({\n id: \"admin\",\n name: \"admin\",\n description: \"Your project's admin area.\",\n cli: {\n // Default args for the \"yarn webiny watch ...\" command (we don't need deploy option while developing).\n watch: {\n deploy: false\n }\n },\n async app(ctx) {\n // Create the app instance.\n const app = new AdminApp(ctx);\n // Run the default application setup.\n await app.setup(config || {});\n // Run the custom user config.\n await config?.config?.(app, ctx);\n return app;\n },\n onBeforeBuild: config?.onBeforeBuild,\n onAfterBuild: config?.onAfterBuild,\n onBeforeDeploy: config?.onBeforeDeploy,\n onAfterDeploy: config?.onAfterDeploy\n });\n}\n"]}
@@ -1,9 +1,16 @@
1
- import { ApplicationContext, PulumiApp, ApplicationConfig } from "@webiny/pulumi-sdk";
2
- import { Vpc } from "./ApiVpc";
1
+ import { ApplicationConfig, ApplicationContext } from "@webiny/pulumi-sdk";
2
+ import { CustomDomainParams } from "../customDomain";
3
+ import { AppInput } from "../utils";
3
4
  export interface ApiAppConfig {
4
- vpc?(app: PulumiApp, ctx: ApplicationContext): boolean | Vpc;
5
+ /**
6
+ * Enables or disables VPC for the API.
7
+ * For VPC to work you also have to enable it in the `storage` application.
8
+ */
9
+ vpc?: AppInput<boolean | undefined>;
10
+ /** Custom domain configuration */
11
+ domain?(ctx: ApplicationContext): CustomDomainParams | undefined | void;
5
12
  }
6
- export declare const ApiApp: new (ctx: ApplicationContext) => PulumiApp<ApiAppConfig> & {
13
+ export declare const ApiApp: new (ctx: ApplicationContext) => import("@webiny/pulumi-sdk").PulumiApp<ApiAppConfig> & {
7
14
  fileManager: {
8
15
  functions: {
9
16
  transform: import("@webiny/pulumi-sdk").PulumiAppResource<typeof import("@pulumi/aws/lambda").Function>;
@@ -12,16 +19,6 @@ export declare const ApiApp: new (ctx: ApplicationContext) => PulumiApp<ApiAppCo
12
19
  };
13
20
  bucketNotification: import("@webiny/pulumi-sdk").PulumiAppResource<typeof import("@pulumi/aws/s3").BucketNotification>;
14
21
  };
15
- prerenderingService: {
16
- functions: {
17
- render: import("@webiny/pulumi-sdk").PulumiAppResource<typeof import("@pulumi/aws/lambda").Function>;
18
- flush: import("@webiny/pulumi-sdk").PulumiAppResource<typeof import("@pulumi/aws/lambda").Function>;
19
- queue: {
20
- add: import("@webiny/pulumi-sdk").PulumiAppResource<typeof import("@pulumi/aws/lambda").Function>;
21
- process: import("@webiny/pulumi-sdk").PulumiAppResource<typeof import("@pulumi/aws/lambda").Function>;
22
- };
23
- };
24
- };
25
22
  graphql: {
26
23
  role: import("@webiny/pulumi-sdk").PulumiAppResource<typeof import("@pulumi/aws/iam").Role>;
27
24
  policy: import("@webiny/pulumi-sdk").PulumiAppResource<typeof import("@pulumi/aws/iam").Policy>;
@@ -8,11 +8,9 @@ exports.createApiApp = createApiApp;
8
8
 
9
9
  var _pulumiSdk = require("@webiny/pulumi-sdk");
10
10
 
11
- var _ApiGraphql = require("./ApiGraphql");
12
-
13
- var _ApiVpc = require("./ApiVpc");
11
+ var _common = require("../common");
14
12
 
15
- var _ApiPrerendering = require("./ApiPrerendering");
13
+ var _ApiGraphql = require("./ApiGraphql");
16
14
 
17
15
  var _ApiFileManager = require("./ApiFileManager");
18
16
 
@@ -24,61 +22,42 @@ var _ApiGateway = require("./ApiGateway");
24
22
 
25
23
  var _ApiCloudfront = require("./ApiCloudfront");
26
24
 
27
- var _getStorageOutput = require("../getStorageOutput");
25
+ var _ApiApwScheduler = require("./ApiApwScheduler");
28
26
 
29
- var _awsUtils = require("../awsUtils");
27
+ var _customDomain = require("../customDomain");
30
28
 
31
- var _ApiApwScheduler = require("./ApiApwScheduler");
29
+ var _utils = require("../utils");
32
30
 
33
31
  const ApiApp = (0, _pulumiSdk.defineApp)({
34
32
  name: "Api",
35
33
 
36
34
  async config(app, config) {
37
- var _config$vpc;
35
+ var _config$domain;
38
36
 
39
- // Among other things, this determines the amount of information we reveal on runtime errors.
40
- // https://www.webiny.com/docs/how-to-guides/environment-variables/#debug-environment-variable
41
- const DEBUG = String(process.env.DEBUG); // Enables logs forwarding.
37
+ // Enables logs forwarding.
42
38
  // https://www.webiny.com/docs/how-to-guides/use-watch-command#enabling-logs-forwarding
39
+ const WEBINY_LOGS_FORWARD_URL = String(process.env.WEBINY_LOGS_FORWARD_URL); // Register storage output as a module available for all other modules
40
+
41
+ const storage = app.addModule(_common.StorageOutput); // Register VPC config module to be available to other modules
43
42
 
44
- const WEBINY_LOGS_FORWARD_URL = String(process.env.WEBINY_LOGS_FORWARD_URL);
45
- const vpcConfig = ((_config$vpc = config.vpc) === null || _config$vpc === void 0 ? void 0 : _config$vpc.call(config, app, app.ctx)) ?? app.ctx.env !== "dev";
46
- const vpc = vpcConfig === true ? (0, _ApiVpc.createVpc)(app) : vpcConfig === false ? undefined : vpcConfig;
47
- const storage = (0, _getStorageOutput.getStorageOutput)(app);
48
- const awsAccountId = (0, _awsUtils.getAwsAccountId)(app);
49
- const awsRegion = (0, _awsUtils.getAwsRegion)(app);
43
+ app.addModule(_common.VpcConfig, {
44
+ enabled: (0, _utils.getAppInput)(app, config.vpc)
45
+ });
50
46
  const pageBuilder = app.addModule(_ApiPageBuilder.ApiPageBuilder, {
51
47
  env: {
52
48
  COGNITO_REGION: String(process.env.AWS_REGION),
53
49
  COGNITO_USER_POOL_ID: storage.cognitoUserPoolId,
54
50
  DB_TABLE: storage.primaryDynamodbTableName,
51
+ DB_TABLE_ELASTICSEARCH: storage.elasticsearchDynamodbTableName,
52
+ ELASTIC_SEARCH_ENDPOINT: storage.elasticsearchDomainEndpoint,
53
+ // Not required. Useful for testing purposes / ephemeral environments.
54
+ // https://www.webiny.com/docs/key-topics/ci-cd/testing/slow-ephemeral-environments
55
+ ELASTIC_SEARCH_INDEX_PREFIX: process.env.ELASTIC_SEARCH_INDEX_PREFIX,
55
56
  S3_BUCKET: storage.fileManagerBucketId,
56
- DEBUG,
57
57
  WEBINY_LOGS_FORWARD_URL
58
- },
59
- awsRegion,
60
- awsAccountId,
61
- fileManagerBucketId: storage.fileManagerBucketId,
62
- primaryDynamodbTableArn: storage.primaryDynamodbTableArn,
63
- cognitoUserPoolArn: storage.cognitoUserPoolArn,
64
- vpc
65
- });
66
- const fileManager = app.addModule(_ApiFileManager.ApiFileManager, {
67
- fileManagerBucketId: storage.fileManagerBucketId,
68
- vpc
69
- });
70
- const prerenderingService = (0, _ApiPrerendering.createPrerenderingService)(app, {
71
- env: {
72
- DB_TABLE: storage.primaryDynamodbTableName,
73
- DEBUG
74
- },
75
- awsRegion,
76
- awsAccountId,
77
- primaryDynamodbTableArn: storage.primaryDynamodbTableArn,
78
- fileManagerBucketId: storage.fileManagerBucketId,
79
- cognitoUserPoolArn: storage.cognitoUserPoolArn,
80
- vpc
58
+ }
81
59
  });
60
+ const fileManager = app.addModule(_ApiFileManager.ApiFileManager);
82
61
  const apwScheduler = app.addModule(_ApiApwScheduler.ApiApwScheduler, {
83
62
  primaryDynamodbTableArn: storage.primaryDynamodbTableArn,
84
63
  env: {
@@ -86,7 +65,6 @@ const ApiApp = (0, _pulumiSdk.defineApp)({
86
65
  COGNITO_USER_POOL_ID: storage.cognitoUserPoolId,
87
66
  DB_TABLE: storage.primaryDynamodbTableName,
88
67
  S3_BUCKET: storage.fileManagerBucketId,
89
- DEBUG,
90
68
  WEBINY_LOGS_FORWARD_URL
91
69
  }
92
70
  });
@@ -95,43 +73,37 @@ const ApiApp = (0, _pulumiSdk.defineApp)({
95
73
  COGNITO_REGION: String(process.env.AWS_REGION),
96
74
  COGNITO_USER_POOL_ID: storage.cognitoUserPoolId,
97
75
  DB_TABLE: storage.primaryDynamodbTableName,
76
+ DB_TABLE_ELASTICSEARCH: storage.elasticsearchDynamodbTableName,
77
+ ELASTIC_SEARCH_ENDPOINT: storage.elasticsearchDomainEndpoint,
78
+ // Not required. Useful for testing purposes / ephemeral environments.
79
+ // https://www.webiny.com/docs/key-topics/ci-cd/testing/slow-ephemeral-environments
80
+ ELASTIC_SEARCH_INDEX_PREFIX: process.env.ELASTIC_SEARCH_INDEX_PREFIX,
98
81
  S3_BUCKET: storage.fileManagerBucketId,
99
- PRERENDERING_RENDER_HANDLER: prerenderingService.functions.render.output.arn,
100
- PRERENDERING_FLUSH_HANDLER: prerenderingService.functions.flush.output.arn,
101
- PRERENDERING_QUEUE_ADD_HANDLER: prerenderingService.functions.queue.add.output.arn,
102
- PRERENDERING_QUEUE_PROCESS_HANDLER: prerenderingService.functions.queue.process.output.arn,
82
+ EVENT_BUS: storage.eventBusArn,
103
83
  IMPORT_PAGES_CREATE_HANDLER: pageBuilder.importPages.functions.create.output.arn,
104
84
  EXPORT_PAGES_PROCESS_HANDLER: pageBuilder.exportPages.functions.process.output.arn,
105
85
  // TODO: move to okta plugin
106
86
  OKTA_ISSUER: process.env["OKTA_ISSUER"],
107
- DEBUG,
108
87
  WEBINY_LOGS_FORWARD_URL
109
88
  },
110
- awsRegion,
111
- awsAccountId,
112
- primaryDynamodbTableArn: storage.primaryDynamodbTableArn,
113
- primaryDynamodbTableName: storage.primaryDynamodbTableName,
114
- primaryDynamodbTableHashKey: storage.primaryDynamodbTableHashKey,
115
- primaryDynamodbTableRangeKey: storage.primaryDynamodbTableRangeKey,
116
- fileManagerBucketId: storage.fileManagerBucketId,
117
- cognitoUserPoolArn: storage.cognitoUserPoolArn,
118
89
  apwSchedulerEventRule: apwScheduler.eventRule.output,
119
- apwSchedulerEventTarget: apwScheduler.eventTarget.output,
120
- vpc
90
+ apwSchedulerEventTarget: apwScheduler.eventTarget.output
121
91
  });
122
92
  const headlessCms = app.addModule(_ApiHeadlessCMS.ApiHeadlessCMS, {
123
93
  env: {
124
94
  COGNITO_REGION: String(process.env.AWS_REGION),
125
95
  COGNITO_USER_POOL_ID: storage.cognitoUserPoolId,
126
96
  DB_TABLE: storage.primaryDynamodbTableName,
97
+ DB_TABLE_ELASTICSEARCH: storage.elasticsearchDynamodbTableName,
98
+ ELASTIC_SEARCH_ENDPOINT: storage.elasticsearchDomainEndpoint,
99
+ // Not required. Useful for testing purposes / ephemeral environments.
100
+ // https://www.webiny.com/docs/key-topics/ci-cd/testing/slow-ephemeral-environments
101
+ ELASTIC_SEARCH_INDEX_PREFIX: process.env.ELASTIC_SEARCH_INDEX_PREFIX,
127
102
  S3_BUCKET: storage.fileManagerBucketId,
128
103
  // TODO: move to okta plugin
129
104
  OKTA_ISSUER: process.env["OKTA_ISSUER"],
130
- DEBUG,
131
105
  WEBINY_LOGS_FORWARD_URL
132
- },
133
- primaryDynamodbTableArn: storage.primaryDynamodbTableArn,
134
- vpc
106
+ }
135
107
  });
136
108
  const apiGateway = app.addModule(_ApiGateway.ApiGateway, {
137
109
  "graphql-post": {
@@ -161,24 +133,47 @@ const ApiApp = (0, _pulumiSdk.defineApp)({
161
133
  }
162
134
  });
163
135
  const cloudfront = app.addModule(_ApiCloudfront.ApiCloudfront);
136
+ const domain = (_config$domain = config.domain) === null || _config$domain === void 0 ? void 0 : _config$domain.call(config, app.ctx);
137
+
138
+ if (domain) {
139
+ (0, _customDomain.applyCustomDomain)(cloudfront, domain);
140
+ }
141
+
164
142
  app.addOutputs({
165
143
  region: process.env.AWS_REGION,
166
144
  apiUrl: cloudfront.output.domainName.apply(value => `https://${value}`),
145
+ apiDomain: cloudfront.output.domainName,
167
146
  cognitoUserPoolId: storage.cognitoUserPoolId,
168
147
  cognitoAppClientId: storage.cognitoAppClientId,
169
148
  cognitoUserPoolPasswordPolicy: storage.cognitoUserPoolPasswordPolicy,
170
- updatePbSettingsFunction: pageBuilder.updateSettings.functions.update.output.arn,
171
- psQueueAdd: prerenderingService.functions.queue.add.output.arn,
172
- psQueueProcess: prerenderingService.functions.queue.process.output.arn,
173
149
  apwSchedulerScheduleAction: apwScheduler.scheduleAction.lambda.output.arn,
174
150
  apwSchedulerExecuteAction: apwScheduler.executeAction.lambda.output.arn,
175
151
  apwSchedulerEventRule: apwScheduler.eventRule.output.name,
176
152
  apwSchedulerEventTargetId: apwScheduler.eventTarget.output.targetId,
177
- dynamoDbTable: storage.primaryDynamodbTableName
178
- });
153
+ dynamoDbTable: storage.primaryDynamodbTableName,
154
+ dynamoDbElasticsearchTable: storage.elasticsearchDynamodbTableName
155
+ }); // Update variant gateway configuration.
156
+
157
+ const variant = app.ctx.variant;
158
+
159
+ if (variant) {
160
+ app.onAfterDeploy(async ({
161
+ outputs
162
+ }) => {
163
+ // After deployment is made we update a static JSON file with a variant configuration.
164
+ // TODO: We should update WCP config instead of a static file here
165
+ await (0, _pulumiSdk.updateGatewayConfig)({
166
+ app: "api",
167
+ cwd: app.ctx.projectDir,
168
+ env: app.ctx.env,
169
+ variant: variant,
170
+ domain: outputs["apiDomain"]
171
+ });
172
+ });
173
+ }
174
+
179
175
  return {
180
176
  fileManager,
181
- prerenderingService,
182
177
  graphql,
183
178
  headlessCms,
184
179
  apiGateway,
@@ -1 +1 @@
1
- {"version":3,"sources":["ApiApp.ts"],"names":["ApiApp","name","config","app","DEBUG","String","process","env","WEBINY_LOGS_FORWARD_URL","vpcConfig","vpc","ctx","undefined","storage","awsAccountId","awsRegion","pageBuilder","addModule","ApiPageBuilder","COGNITO_REGION","AWS_REGION","COGNITO_USER_POOL_ID","cognitoUserPoolId","DB_TABLE","primaryDynamodbTableName","S3_BUCKET","fileManagerBucketId","primaryDynamodbTableArn","cognitoUserPoolArn","fileManager","ApiFileManager","prerenderingService","apwScheduler","ApiApwScheduler","graphql","ApiGraphql","PRERENDERING_RENDER_HANDLER","functions","render","output","arn","PRERENDERING_FLUSH_HANDLER","flush","PRERENDERING_QUEUE_ADD_HANDLER","queue","add","PRERENDERING_QUEUE_PROCESS_HANDLER","IMPORT_PAGES_CREATE_HANDLER","importPages","create","EXPORT_PAGES_PROCESS_HANDLER","exportPages","OKTA_ISSUER","primaryDynamodbTableHashKey","primaryDynamodbTableRangeKey","apwSchedulerEventRule","eventRule","apwSchedulerEventTarget","eventTarget","headlessCms","ApiHeadlessCMS","apiGateway","ApiGateway","path","method","function","download","cloudfront","ApiCloudfront","addOutputs","region","apiUrl","domainName","apply","value","cognitoAppClientId","cognitoUserPoolPasswordPolicy","updatePbSettingsFunction","updateSettings","update","psQueueAdd","psQueueProcess","apwSchedulerScheduleAction","scheduleAction","lambda","apwSchedulerExecuteAction","executeAction","apwSchedulerEventTargetId","targetId","dynamoDbTable","createApiApp","id","description","cli","watch","depth","setup","onBeforeBuild","onAfterBuild","onBeforeDeploy","onAfterDeploy"],"mappings":"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","sourcesContent":["import {\n defineApp,\n createGenericApplication,\n ApplicationContext,\n PulumiApp,\n ApplicationConfig\n} from \"@webiny/pulumi-sdk\";\n\nimport { ApiGraphql } from \"./ApiGraphql\";\nimport { createVpc, Vpc } from \"./ApiVpc\";\nimport { createPrerenderingService } from \"./ApiPrerendering\";\nimport { ApiFileManager } from \"./ApiFileManager\";\nimport { ApiPageBuilder } from \"./ApiPageBuilder\";\nimport { ApiHeadlessCMS } from \"./ApiHeadlessCMS\";\nimport { ApiGateway } from \"./ApiGateway\";\nimport { ApiCloudfront } from \"./ApiCloudfront\";\nimport { getStorageOutput } from \"../getStorageOutput\";\nimport { getAwsAccountId, getAwsRegion } from \"../awsUtils\";\nimport { ApiApwScheduler } from \"./ApiApwScheduler\";\n\nexport interface ApiAppConfig {\n vpc?(app: PulumiApp, ctx: ApplicationContext): boolean | Vpc;\n}\n\nexport const ApiApp = defineApp({\n name: \"Api\",\n async config(app, config: ApiAppConfig) {\n // Among other things, this determines the amount of information we reveal on runtime errors.\n // https://www.webiny.com/docs/how-to-guides/environment-variables/#debug-environment-variable\n const DEBUG = String(process.env.DEBUG);\n\n // Enables logs forwarding.\n // https://www.webiny.com/docs/how-to-guides/use-watch-command#enabling-logs-forwarding\n const WEBINY_LOGS_FORWARD_URL = String(process.env.WEBINY_LOGS_FORWARD_URL);\n\n const vpcConfig = config.vpc?.(app, app.ctx) ?? app.ctx.env !== \"dev\";\n const vpc =\n vpcConfig === true ? createVpc(app) : vpcConfig === false ? undefined : vpcConfig;\n\n const storage = getStorageOutput(app);\n const awsAccountId = getAwsAccountId(app);\n const awsRegion = getAwsRegion(app);\n\n const pageBuilder = app.addModule(ApiPageBuilder, {\n env: {\n COGNITO_REGION: String(process.env.AWS_REGION),\n COGNITO_USER_POOL_ID: storage.cognitoUserPoolId,\n DB_TABLE: storage.primaryDynamodbTableName,\n S3_BUCKET: storage.fileManagerBucketId,\n DEBUG,\n WEBINY_LOGS_FORWARD_URL\n },\n awsRegion,\n awsAccountId,\n fileManagerBucketId: storage.fileManagerBucketId,\n primaryDynamodbTableArn: storage.primaryDynamodbTableArn,\n cognitoUserPoolArn: storage.cognitoUserPoolArn,\n vpc\n });\n\n const fileManager = app.addModule(ApiFileManager, {\n fileManagerBucketId: storage.fileManagerBucketId,\n vpc\n });\n\n const prerenderingService = createPrerenderingService(app, {\n env: {\n DB_TABLE: storage.primaryDynamodbTableName,\n DEBUG\n },\n awsRegion,\n awsAccountId,\n primaryDynamodbTableArn: storage.primaryDynamodbTableArn,\n fileManagerBucketId: storage.fileManagerBucketId,\n cognitoUserPoolArn: storage.cognitoUserPoolArn,\n vpc\n });\n\n const apwScheduler = app.addModule(ApiApwScheduler, {\n primaryDynamodbTableArn: storage.primaryDynamodbTableArn,\n env: {\n COGNITO_REGION: String(process.env.AWS_REGION),\n COGNITO_USER_POOL_ID: storage.cognitoUserPoolId,\n DB_TABLE: storage.primaryDynamodbTableName,\n S3_BUCKET: storage.fileManagerBucketId,\n DEBUG,\n WEBINY_LOGS_FORWARD_URL\n }\n });\n\n const graphql = app.addModule(ApiGraphql, {\n env: {\n COGNITO_REGION: String(process.env.AWS_REGION),\n COGNITO_USER_POOL_ID: storage.cognitoUserPoolId,\n DB_TABLE: storage.primaryDynamodbTableName,\n S3_BUCKET: storage.fileManagerBucketId,\n\n PRERENDERING_RENDER_HANDLER: prerenderingService.functions.render.output.arn,\n PRERENDERING_FLUSH_HANDLER: prerenderingService.functions.flush.output.arn,\n PRERENDERING_QUEUE_ADD_HANDLER: prerenderingService.functions.queue.add.output.arn,\n PRERENDERING_QUEUE_PROCESS_HANDLER:\n prerenderingService.functions.queue.process.output.arn,\n IMPORT_PAGES_CREATE_HANDLER: pageBuilder.importPages.functions.create.output.arn,\n EXPORT_PAGES_PROCESS_HANDLER: pageBuilder.exportPages.functions.process.output.arn,\n // TODO: move to okta plugin\n OKTA_ISSUER: process.env[\"OKTA_ISSUER\"],\n DEBUG,\n WEBINY_LOGS_FORWARD_URL\n },\n awsRegion,\n awsAccountId,\n primaryDynamodbTableArn: storage.primaryDynamodbTableArn,\n primaryDynamodbTableName: storage.primaryDynamodbTableName,\n primaryDynamodbTableHashKey: storage.primaryDynamodbTableHashKey,\n primaryDynamodbTableRangeKey: storage.primaryDynamodbTableRangeKey,\n fileManagerBucketId: storage.fileManagerBucketId,\n cognitoUserPoolArn: storage.cognitoUserPoolArn,\n apwSchedulerEventRule: apwScheduler.eventRule.output,\n apwSchedulerEventTarget: apwScheduler.eventTarget.output,\n vpc\n });\n\n const headlessCms = app.addModule(ApiHeadlessCMS, {\n env: {\n COGNITO_REGION: String(process.env.AWS_REGION),\n COGNITO_USER_POOL_ID: storage.cognitoUserPoolId,\n DB_TABLE: storage.primaryDynamodbTableName,\n S3_BUCKET: storage.fileManagerBucketId,\n // TODO: move to okta plugin\n OKTA_ISSUER: process.env[\"OKTA_ISSUER\"],\n DEBUG,\n WEBINY_LOGS_FORWARD_URL\n },\n primaryDynamodbTableArn: storage.primaryDynamodbTableArn,\n vpc\n });\n\n const apiGateway = app.addModule(ApiGateway, {\n \"graphql-post\": {\n path: \"/graphql\",\n method: \"POST\",\n function: graphql.functions.graphql.output.arn\n },\n \"graphql-options\": {\n path: \"/graphql\",\n method: \"OPTIONS\",\n function: graphql.functions.graphql.output.arn\n },\n \"files-any\": {\n path: \"/files/{path}\",\n method: \"ANY\",\n function: fileManager.functions.download.output.arn\n },\n \"cms-post\": {\n path: \"/cms/{key+}\",\n method: \"POST\",\n function: headlessCms.functions.graphql.output.arn\n },\n \"cms-options\": {\n path: \"/cms/{key+}\",\n method: \"OPTIONS\",\n function: headlessCms.functions.graphql.output.arn\n }\n });\n\n const cloudfront = app.addModule(ApiCloudfront);\n\n app.addOutputs({\n region: process.env.AWS_REGION,\n apiUrl: cloudfront.output.domainName.apply(value => `https://${value}`),\n cognitoUserPoolId: storage.cognitoUserPoolId,\n cognitoAppClientId: storage.cognitoAppClientId,\n cognitoUserPoolPasswordPolicy: storage.cognitoUserPoolPasswordPolicy,\n updatePbSettingsFunction: pageBuilder.updateSettings.functions.update.output.arn,\n psQueueAdd: prerenderingService.functions.queue.add.output.arn,\n psQueueProcess: prerenderingService.functions.queue.process.output.arn,\n apwSchedulerScheduleAction: apwScheduler.scheduleAction.lambda.output.arn,\n apwSchedulerExecuteAction: apwScheduler.executeAction.lambda.output.arn,\n apwSchedulerEventRule: apwScheduler.eventRule.output.name,\n apwSchedulerEventTargetId: apwScheduler.eventTarget.output.targetId,\n dynamoDbTable: storage.primaryDynamodbTableName\n });\n\n return {\n fileManager,\n prerenderingService,\n graphql,\n headlessCms,\n apiGateway,\n cloudfront,\n apwScheduler\n };\n }\n});\n\nexport type ApiApp = InstanceType<typeof ApiApp>;\n\nexport function createApiApp(config?: ApiAppConfig & ApplicationConfig<ApiApp>) {\n return createGenericApplication({\n id: \"api\",\n name: \"api\",\n description:\n \"Represents cloud infrastructure needed for supporting your project's (GraphQL) API.\",\n cli: {\n // Default args for the \"yarn webiny watch ...\" command.\n watch: {\n // Watch five levels of dependencies, starting from this project application.\n depth: 5\n }\n },\n async app(ctx) {\n // Create the app instance.\n const app = new ApiApp(ctx);\n // Run the default application setup.\n await app.setup(config || {});\n // Run the custom user config.\n await config?.config?.(app, ctx);\n return app;\n },\n onBeforeBuild: config?.onBeforeBuild,\n onAfterBuild: config?.onAfterBuild,\n onBeforeDeploy: config?.onBeforeDeploy,\n onAfterDeploy: config?.onAfterDeploy\n });\n}\n"]}
1
+ {"version":3,"sources":["ApiApp.ts"],"names":["ApiApp","name","config","app","WEBINY_LOGS_FORWARD_URL","String","process","env","storage","addModule","StorageOutput","VpcConfig","enabled","vpc","pageBuilder","ApiPageBuilder","COGNITO_REGION","AWS_REGION","COGNITO_USER_POOL_ID","cognitoUserPoolId","DB_TABLE","primaryDynamodbTableName","DB_TABLE_ELASTICSEARCH","elasticsearchDynamodbTableName","ELASTIC_SEARCH_ENDPOINT","elasticsearchDomainEndpoint","ELASTIC_SEARCH_INDEX_PREFIX","S3_BUCKET","fileManagerBucketId","fileManager","ApiFileManager","apwScheduler","ApiApwScheduler","primaryDynamodbTableArn","graphql","ApiGraphql","EVENT_BUS","eventBusArn","IMPORT_PAGES_CREATE_HANDLER","importPages","functions","create","output","arn","EXPORT_PAGES_PROCESS_HANDLER","exportPages","OKTA_ISSUER","apwSchedulerEventRule","eventRule","apwSchedulerEventTarget","eventTarget","headlessCms","ApiHeadlessCMS","apiGateway","ApiGateway","path","method","function","download","cloudfront","ApiCloudfront","domain","ctx","addOutputs","region","apiUrl","domainName","apply","value","apiDomain","cognitoAppClientId","cognitoUserPoolPasswordPolicy","apwSchedulerScheduleAction","scheduleAction","lambda","apwSchedulerExecuteAction","executeAction","apwSchedulerEventTargetId","targetId","dynamoDbTable","dynamoDbElasticsearchTable","variant","onAfterDeploy","outputs","cwd","projectDir","createApiApp","id","description","cli","watch","depth","setup","onBeforeBuild","onAfterBuild","onBeforeDeploy"],"mappings":"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","sourcesContent":["import {\n defineApp,\n createGenericApplication,\n ApplicationConfig,\n ApplicationContext\n} from \"@webiny/pulumi-sdk\";\nimport { updateGatewayConfig } from \"@webiny/pulumi-sdk\";\n\nimport { StorageOutput, VpcConfig } from \"../common\";\nimport { ApiGraphql } from \"./ApiGraphql\";\nimport { ApiFileManager } from \"./ApiFileManager\";\nimport { ApiPageBuilder } from \"./ApiPageBuilder\";\nimport { ApiHeadlessCMS } from \"./ApiHeadlessCMS\";\nimport { ApiGateway } from \"./ApiGateway\";\nimport { ApiCloudfront } from \"./ApiCloudfront\";\nimport { ApiApwScheduler } from \"./ApiApwScheduler\";\nimport { applyCustomDomain, CustomDomainParams } from \"../customDomain\";\nimport { AppInput, getAppInput } from \"../utils\";\n\nexport interface ApiAppConfig {\n /**\n * Enables or disables VPC for the API.\n * For VPC to work you also have to enable it in the `storage` application.\n */\n vpc?: AppInput<boolean | undefined>;\n /** Custom domain configuration */\n domain?(ctx: ApplicationContext): CustomDomainParams | undefined | void;\n}\n\nexport const ApiApp = defineApp({\n name: \"Api\",\n async config(app, config: ApiAppConfig) {\n // Enables logs forwarding.\n // https://www.webiny.com/docs/how-to-guides/use-watch-command#enabling-logs-forwarding\n const WEBINY_LOGS_FORWARD_URL = String(process.env.WEBINY_LOGS_FORWARD_URL);\n\n // Register storage output as a module available for all other modules\n const storage = app.addModule(StorageOutput);\n\n // Register VPC config module to be available to other modules\n app.addModule(VpcConfig, {\n enabled: getAppInput(app, config.vpc)\n });\n\n const pageBuilder = app.addModule(ApiPageBuilder, {\n env: {\n COGNITO_REGION: String(process.env.AWS_REGION),\n COGNITO_USER_POOL_ID: storage.cognitoUserPoolId,\n DB_TABLE: storage.primaryDynamodbTableName,\n DB_TABLE_ELASTICSEARCH: storage.elasticsearchDynamodbTableName,\n ELASTIC_SEARCH_ENDPOINT: storage.elasticsearchDomainEndpoint,\n\n // Not required. Useful for testing purposes / ephemeral environments.\n // https://www.webiny.com/docs/key-topics/ci-cd/testing/slow-ephemeral-environments\n ELASTIC_SEARCH_INDEX_PREFIX: process.env.ELASTIC_SEARCH_INDEX_PREFIX,\n\n S3_BUCKET: storage.fileManagerBucketId,\n WEBINY_LOGS_FORWARD_URL\n }\n });\n\n const fileManager = app.addModule(ApiFileManager);\n\n const apwScheduler = app.addModule(ApiApwScheduler, {\n primaryDynamodbTableArn: storage.primaryDynamodbTableArn,\n\n env: {\n COGNITO_REGION: String(process.env.AWS_REGION),\n COGNITO_USER_POOL_ID: storage.cognitoUserPoolId,\n DB_TABLE: storage.primaryDynamodbTableName,\n S3_BUCKET: storage.fileManagerBucketId,\n WEBINY_LOGS_FORWARD_URL\n }\n });\n\n const graphql = app.addModule(ApiGraphql, {\n env: {\n COGNITO_REGION: String(process.env.AWS_REGION),\n COGNITO_USER_POOL_ID: storage.cognitoUserPoolId,\n DB_TABLE: storage.primaryDynamodbTableName,\n DB_TABLE_ELASTICSEARCH: storage.elasticsearchDynamodbTableName,\n ELASTIC_SEARCH_ENDPOINT: storage.elasticsearchDomainEndpoint,\n\n // Not required. Useful for testing purposes / ephemeral environments.\n // https://www.webiny.com/docs/key-topics/ci-cd/testing/slow-ephemeral-environments\n ELASTIC_SEARCH_INDEX_PREFIX: process.env.ELASTIC_SEARCH_INDEX_PREFIX,\n\n S3_BUCKET: storage.fileManagerBucketId,\n EVENT_BUS: storage.eventBusArn,\n IMPORT_PAGES_CREATE_HANDLER: pageBuilder.importPages.functions.create.output.arn,\n EXPORT_PAGES_PROCESS_HANDLER: pageBuilder.exportPages.functions.process.output.arn,\n // TODO: move to okta plugin\n OKTA_ISSUER: process.env[\"OKTA_ISSUER\"],\n WEBINY_LOGS_FORWARD_URL\n },\n apwSchedulerEventRule: apwScheduler.eventRule.output,\n apwSchedulerEventTarget: apwScheduler.eventTarget.output\n });\n\n const headlessCms = app.addModule(ApiHeadlessCMS, {\n env: {\n COGNITO_REGION: String(process.env.AWS_REGION),\n COGNITO_USER_POOL_ID: storage.cognitoUserPoolId,\n DB_TABLE: storage.primaryDynamodbTableName,\n DB_TABLE_ELASTICSEARCH: storage.elasticsearchDynamodbTableName,\n ELASTIC_SEARCH_ENDPOINT: storage.elasticsearchDomainEndpoint,\n\n // Not required. Useful for testing purposes / ephemeral environments.\n // https://www.webiny.com/docs/key-topics/ci-cd/testing/slow-ephemeral-environments\n ELASTIC_SEARCH_INDEX_PREFIX: process.env.ELASTIC_SEARCH_INDEX_PREFIX,\n\n S3_BUCKET: storage.fileManagerBucketId,\n // TODO: move to okta plugin\n OKTA_ISSUER: process.env[\"OKTA_ISSUER\"],\n WEBINY_LOGS_FORWARD_URL\n }\n });\n\n const apiGateway = app.addModule(ApiGateway, {\n \"graphql-post\": {\n path: \"/graphql\",\n method: \"POST\",\n function: graphql.functions.graphql.output.arn\n },\n \"graphql-options\": {\n path: \"/graphql\",\n method: \"OPTIONS\",\n function: graphql.functions.graphql.output.arn\n },\n \"files-any\": {\n path: \"/files/{path}\",\n method: \"ANY\",\n function: fileManager.functions.download.output.arn\n },\n \"cms-post\": {\n path: \"/cms/{key+}\",\n method: \"POST\",\n function: headlessCms.functions.graphql.output.arn\n },\n \"cms-options\": {\n path: \"/cms/{key+}\",\n method: \"OPTIONS\",\n function: headlessCms.functions.graphql.output.arn\n }\n });\n\n const cloudfront = app.addModule(ApiCloudfront);\n\n const domain = config.domain?.(app.ctx);\n if (domain) {\n applyCustomDomain(cloudfront, domain);\n }\n\n app.addOutputs({\n region: process.env.AWS_REGION,\n apiUrl: cloudfront.output.domainName.apply(value => `https://${value}`),\n apiDomain: cloudfront.output.domainName,\n cognitoUserPoolId: storage.cognitoUserPoolId,\n cognitoAppClientId: storage.cognitoAppClientId,\n cognitoUserPoolPasswordPolicy: storage.cognitoUserPoolPasswordPolicy,\n apwSchedulerScheduleAction: apwScheduler.scheduleAction.lambda.output.arn,\n apwSchedulerExecuteAction: apwScheduler.executeAction.lambda.output.arn,\n apwSchedulerEventRule: apwScheduler.eventRule.output.name,\n apwSchedulerEventTargetId: apwScheduler.eventTarget.output.targetId,\n dynamoDbTable: storage.primaryDynamodbTableName,\n dynamoDbElasticsearchTable: storage.elasticsearchDynamodbTableName\n });\n\n // Update variant gateway configuration.\n const variant = app.ctx.variant;\n if (variant) {\n app.onAfterDeploy(async ({ outputs }) => {\n // After deployment is made we update a static JSON file with a variant configuration.\n // TODO: We should update WCP config instead of a static file here\n await updateGatewayConfig({\n app: \"api\",\n cwd: app.ctx.projectDir,\n env: app.ctx.env,\n variant: variant,\n domain: outputs[\"apiDomain\"]\n });\n });\n }\n\n return {\n fileManager,\n graphql,\n headlessCms,\n apiGateway,\n cloudfront,\n apwScheduler\n };\n }\n});\n\nexport type ApiApp = InstanceType<typeof ApiApp>;\n\nexport function createApiApp(config?: ApiAppConfig & ApplicationConfig<ApiApp>) {\n return createGenericApplication({\n id: \"api\",\n name: \"api\",\n description:\n \"Represents cloud infrastructure needed for supporting your project's (GraphQL) API.\",\n cli: {\n // Default args for the \"yarn webiny watch ...\" command.\n watch: {\n // Watch five levels of dependencies, starting from this project application.\n depth: 5\n }\n },\n async app(ctx) {\n // Create the app instance.\n const app = new ApiApp(ctx);\n // Run the default application setup.\n await app.setup(config || {});\n // Run the custom user config.\n await config?.config?.(app, ctx);\n return app;\n },\n onBeforeBuild: config?.onBeforeBuild,\n onAfterBuild: config?.onAfterBuild,\n onBeforeDeploy: config?.onBeforeDeploy,\n onAfterDeploy: config?.onAfterDeploy\n });\n}\n"]}
@@ -1,9 +1,7 @@
1
- import * as pulumi from "@pulumi/pulumi";
2
1
  import * as aws from "@pulumi/aws";
3
2
  import { PulumiAppModule } from "@webiny/pulumi-sdk";
4
3
  interface ScheduleActionParams {
5
4
  env: Record<string, any>;
6
- primaryDynamodbTableArn: pulumi.Input<string>;
7
5
  }
8
6
  export declare type ApiApwScheduler = PulumiAppModule<typeof ApiApwScheduler>;
9
7
  export declare const ApiApwScheduler: import("@webiny/pulumi-sdk").PulumiAppModuleDefinition<{
@@ -17,6 +17,10 @@ var aws = _interopRequireWildcard(require("@pulumi/aws"));
17
17
 
18
18
  var _pulumiSdk = require("@webiny/pulumi-sdk");
19
19
 
20
+ var _common = require("../common");
21
+
22
+ var _lambdaUtils = require("../lambdaUtils");
23
+
20
24
  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); }
21
25
 
22
26
  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; }
@@ -90,7 +94,7 @@ function createExecuteActionLambda(app, params) {
90
94
  }
91
95
  }
92
96
  });
93
- const policy = createExecuteActionLambdaPolicy(app, params);
97
+ const policy = createExecuteActionLambdaPolicy(app);
94
98
  app.addResource(aws.iam.RolePolicyAttachment, {
95
99
  name: `${EXECUTE_ACTION_LAMBDA}-role-policy-attachment`,
96
100
  config: {
@@ -118,7 +122,7 @@ function createExecuteActionLambda(app, params) {
118
122
  ".": new pulumi.asset.FileArchive(_path.default.join(app.ctx.appDir, "code/apw/executeAction/build"))
119
123
  }),
120
124
  environment: {
121
- variables: _objectSpread({}, params.env)
125
+ variables: _objectSpread(_objectSpread({}, (0, _lambdaUtils.getCommonLambdaEnvVariables)(app)), params.env)
122
126
  }
123
127
  }
124
128
  });
@@ -129,7 +133,8 @@ function createExecuteActionLambda(app, params) {
129
133
  };
130
134
  }
131
135
 
132
- function createExecuteActionLambdaPolicy(app, params) {
136
+ function createExecuteActionLambdaPolicy(app) {
137
+ const storage = app.getModule(_common.StorageOutput);
133
138
  return app.addResource(aws.iam.Policy, {
134
139
  name: "ApwSchedulerExecuteActionLambdaPolicy",
135
140
  config: {
@@ -145,7 +150,7 @@ function createExecuteActionLambdaPolicy(app, params) {
145
150
  Sid: "PermissionDynamoDB",
146
151
  Effect: "Allow",
147
152
  Action: ["dynamodb:Query", "dynamodb:GetItem", "dynamodb:DeleteItem"],
148
- Resource: [pulumi.interpolate`${params.primaryDynamodbTableArn}`, pulumi.interpolate`${params.primaryDynamodbTableArn}/*`]
153
+ Resource: [pulumi.interpolate`${storage.primaryDynamodbTableArn}`, pulumi.interpolate`${storage.primaryDynamodbTableArn}/*`]
149
154
  }]
150
155
  }
151
156
  }
@@ -168,7 +173,7 @@ function createScheduleActionLambda(app, executeLambda, params) {
168
173
  }
169
174
  }
170
175
  });
171
- const policy = createScheduleActionLambdaPolicy(app, params);
176
+ const policy = createScheduleActionLambdaPolicy(app);
172
177
  app.addResource(aws.iam.RolePolicyAttachment, {
173
178
  name: `${CREATE_RULE_LAMBDA}-role-policy-attachment`,
174
179
  config: {
@@ -196,7 +201,7 @@ function createScheduleActionLambda(app, executeLambda, params) {
196
201
  ".": new pulumi.asset.FileArchive(_path.default.join(app.ctx.appDir, "code/apw/scheduleAction/build"))
197
202
  }),
198
203
  environment: {
199
- variables: _objectSpread(_objectSpread({}, params.env), {}, {
204
+ variables: _objectSpread(_objectSpread(_objectSpread({}, (0, _lambdaUtils.getCommonLambdaEnvVariables)(app)), params.env), {}, {
200
205
  APW_SCHEDULER_EXECUTE_ACTION_HANDLER: executeLambda.arn // RULE_NAME: this.eventRule.name.apply(name => name),
201
206
  // RULE_TARGET_ID: this.eventTarget.targetId.apply(id => id)
202
207
 
@@ -211,7 +216,8 @@ function createScheduleActionLambda(app, executeLambda, params) {
211
216
  };
212
217
  }
213
218
 
214
- function createScheduleActionLambdaPolicy(app, params) {
219
+ function createScheduleActionLambdaPolicy(app) {
220
+ const storage = app.getModule(_common.StorageOutput);
215
221
  return app.addResource(aws.iam.Policy, {
216
222
  name: "ApwSchedulerScheduleActionLambdaPolicy",
217
223
  config: {
@@ -227,7 +233,7 @@ function createScheduleActionLambdaPolicy(app, params) {
227
233
  Sid: "PermissionDynamoDB",
228
234
  Effect: "Allow",
229
235
  Action: ["dynamodb:PutItem", "dynamodb:Query", "dynamodb:GetItem", "dynamodb:UpdateItem", "dynamodb:DeleteItem"],
230
- Resource: [pulumi.interpolate`${params.primaryDynamodbTableArn}`, pulumi.interpolate`${params.primaryDynamodbTableArn}/*`]
236
+ Resource: [pulumi.interpolate`${storage.primaryDynamodbTableArn}`, pulumi.interpolate`${storage.primaryDynamodbTableArn}/*`]
231
237
  }, {
232
238
  Sid: "PermissionEvents",
233
239
  Effect: "Allow",
@@ -1 +1 @@
1
- {"version":3,"sources":["ApiApwScheduler.ts"],"names":["LAMBDA_NAME_PREFIX","CREATE_RULE_LAMBDA","EXECUTE_ACTION_LAMBDA","EVENT_RULE_NAME","EVENT_RULE_TARGET","ApiApwScheduler","name","config","app","params","executeAction","createExecuteActionLambda","scheduleAction","createScheduleActionLambda","lambda","output","eventRule","addResource","aws","cloudwatch","EventRule","description","scheduleExpression","isEnabled","Permission","action","function","arn","principal","statementId","eventTarget","EventTarget","rule","role","iam","Role","assumeRolePolicy","Version","Statement","Action","Principal","Service","Effect","policy","createExecuteActionLambdaPolicy","RolePolicyAttachment","policyArn","ManagedPolicy","AWSLambdaBasicExecutionRole","Function","runtime","handler","timeout","memorySize","code","pulumi","asset","AssetArchive","FileArchive","path","join","ctx","appDir","environment","variables","env","Policy","Sid","Resource","interpolate","primaryDynamodbTableArn","executeLambda","createScheduleActionLambdaPolicy","APW_SCHEDULER_EXECUTE_ACTION_HANDLER"],"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, PulumiAppModule } from \"@webiny/pulumi-sdk\";\n\ninterface ScheduleActionParams {\n env: Record<string, any>;\n primaryDynamodbTableArn: pulumi.Input<string>;\n}\n\nconst LAMBDA_NAME_PREFIX = \"apw-scheduler\";\nconst CREATE_RULE_LAMBDA = `${LAMBDA_NAME_PREFIX}-schedule-action-lambda`;\nconst EXECUTE_ACTION_LAMBDA = `${LAMBDA_NAME_PREFIX}-execute-action-lambda`;\nconst EVENT_RULE_NAME = `${LAMBDA_NAME_PREFIX}-event-rule`;\nconst EVENT_RULE_TARGET = `${LAMBDA_NAME_PREFIX}-event-rule-target`;\n\nexport type ApiApwScheduler = PulumiAppModule<typeof ApiApwScheduler>;\n\nexport const ApiApwScheduler = defineAppModule({\n name: \"ApiApwScheduler\",\n config(app: PulumiApp, params: ScheduleActionParams) {\n const executeAction = createExecuteActionLambda(app, params);\n const scheduleAction = createScheduleActionLambda(app, executeAction.lambda.output, params);\n\n // Create event rule.\n const eventRule = app.addResource(aws.cloudwatch.EventRule, {\n name: EVENT_RULE_NAME,\n config: {\n description: `Enable us to schedule an action in publishing workflow at a particular datetime`,\n scheduleExpression: \"cron(* * * * ? 2000)\",\n isEnabled: true\n }\n });\n\n // Add required permission to the target lambda.\n app.addResource(aws.lambda.Permission, {\n name: \"eventTargetPermission\",\n config: {\n action: \"lambda:InvokeFunction\",\n function: scheduleAction.lambda.output.arn,\n principal: \"events.amazonaws.com\",\n statementId: \"allow-rule-invoke-\" + EVENT_RULE_NAME\n }\n });\n\n // Add lambda as target to the event rule.\n const eventTarget = app.addResource(aws.cloudwatch.EventTarget, {\n name: EVENT_RULE_TARGET,\n config: {\n rule: eventRule.output.name,\n arn: scheduleAction.lambda.output.arn\n }\n });\n\n return {\n executeAction,\n scheduleAction,\n eventRule,\n eventTarget\n };\n }\n});\n\nfunction createExecuteActionLambda(app: PulumiApp, params: ScheduleActionParams) {\n const role = app.addResource(aws.iam.Role, {\n name: `${EXECUTE_ACTION_LAMBDA}-role`,\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 = createExecuteActionLambdaPolicy(app, params);\n\n app.addResource(aws.iam.RolePolicyAttachment, {\n name: `${EXECUTE_ACTION_LAMBDA}-role-policy-attachment`,\n config: {\n role: role.output,\n policyArn: policy.output.arn\n }\n });\n\n app.addResource(aws.iam.RolePolicyAttachment, {\n name: `${EXECUTE_ACTION_LAMBDA}-AWSLambdaBasicExecutionRole`,\n config: {\n role: role.output,\n policyArn: aws.iam.ManagedPolicy.AWSLambdaBasicExecutionRole\n }\n });\n\n const lambda = app.addResource(aws.lambda.Function, {\n name: EXECUTE_ACTION_LAMBDA,\n config: {\n role: role.output.arn,\n runtime: \"nodejs14.x\",\n handler: \"handler.handler\",\n timeout: 60,\n memorySize: 128,\n description: \"Handle execute action workflow in apw scheduler\",\n code: new pulumi.asset.AssetArchive({\n \".\": new pulumi.asset.FileArchive(\n path.join(app.ctx.appDir, \"code/apw/executeAction/build\")\n )\n }),\n environment: {\n variables: {\n ...params.env\n }\n }\n }\n });\n\n return {\n role,\n policy,\n lambda\n };\n}\n\nfunction createExecuteActionLambdaPolicy(app: PulumiApp, params: ScheduleActionParams) {\n return app.addResource(aws.iam.Policy, {\n name: \"ApwSchedulerExecuteActionLambdaPolicy\",\n config: {\n description: \"This policy enables access to cloudwatch event and lambda invocation\",\n policy: {\n Version: \"2012-10-17\",\n Statement: [\n {\n Sid: \"PermissionLambda\",\n Effect: \"Allow\",\n Action: [\"lambda:InvokeFunction\"],\n Resource: [\"*\"]\n },\n {\n Sid: \"PermissionDynamoDB\",\n Effect: \"Allow\",\n Action: [\"dynamodb:Query\", \"dynamodb:GetItem\", \"dynamodb:DeleteItem\"],\n Resource: [\n pulumi.interpolate`${params.primaryDynamodbTableArn}`,\n pulumi.interpolate`${params.primaryDynamodbTableArn}/*`\n ]\n }\n ]\n }\n }\n });\n}\n\nfunction createScheduleActionLambda(\n app: PulumiApp,\n executeLambda: pulumi.Output<aws.lambda.Function>,\n params: ScheduleActionParams\n) {\n const role = app.addResource(aws.iam.Role, {\n name: `${CREATE_RULE_LAMBDA}-role`,\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 = createScheduleActionLambdaPolicy(app, params);\n\n app.addResource(aws.iam.RolePolicyAttachment, {\n name: `${CREATE_RULE_LAMBDA}-role-policy-attachment`,\n config: {\n role: role.output,\n policyArn: policy.output.arn\n }\n });\n\n app.addResource(aws.iam.RolePolicyAttachment, {\n name: `${CREATE_RULE_LAMBDA}-AWSLambdaBasicExecutionRole`,\n config: {\n role: role.output,\n policyArn: aws.iam.ManagedPolicy.AWSLambdaBasicExecutionRole\n }\n });\n\n const lambda = app.addResource(aws.lambda.Function, {\n name: CREATE_RULE_LAMBDA,\n config: {\n role: role.output.arn,\n runtime: \"nodejs14.x\",\n handler: \"handler.handler\",\n timeout: 60,\n memorySize: 128,\n description: \"Handle schedule action workflow in apw scheduler\",\n code: new pulumi.asset.AssetArchive({\n \".\": new pulumi.asset.FileArchive(\n path.join(app.ctx.appDir, \"code/apw/scheduleAction/build\")\n )\n }),\n environment: {\n variables: {\n ...params.env,\n APW_SCHEDULER_EXECUTE_ACTION_HANDLER: executeLambda.arn\n // RULE_NAME: this.eventRule.name.apply(name => name),\n // RULE_TARGET_ID: this.eventTarget.targetId.apply(id => id)\n }\n }\n }\n });\n\n return {\n role,\n policy,\n lambda\n };\n}\n\nfunction createScheduleActionLambdaPolicy(app: PulumiApp, params: ScheduleActionParams) {\n return app.addResource(aws.iam.Policy, {\n name: \"ApwSchedulerScheduleActionLambdaPolicy\",\n config: {\n description: \"This policy enables access to cloudwatch event and lambda invocation\",\n policy: {\n Version: \"2012-10-17\",\n Statement: [\n {\n Sid: \"PermissionLambda\",\n Effect: \"Allow\",\n Action: [\"lambda:InvokeFunction\"],\n Resource: [\"*\"]\n },\n {\n Sid: \"PermissionDynamoDB\",\n Effect: \"Allow\",\n Action: [\n \"dynamodb:PutItem\",\n \"dynamodb:Query\",\n \"dynamodb:GetItem\",\n \"dynamodb:UpdateItem\",\n \"dynamodb:DeleteItem\"\n ],\n Resource: [\n pulumi.interpolate`${params.primaryDynamodbTableArn}`,\n pulumi.interpolate`${params.primaryDynamodbTableArn}/*`\n ]\n },\n {\n Sid: \"PermissionEvents\",\n Effect: \"Allow\",\n Action: [\n \"events:DeleteRule\",\n \"events:PutTargets\",\n \"events:PutRule\",\n \"events:ListRules\",\n \"events:RemoveTargets\",\n \"events:ListTargetsByRule\"\n ],\n Resource: [\"*\"]\n }\n ]\n }\n }\n });\n}\n"]}
1
+ {"version":3,"sources":["ApiApwScheduler.ts"],"names":["LAMBDA_NAME_PREFIX","CREATE_RULE_LAMBDA","EXECUTE_ACTION_LAMBDA","EVENT_RULE_NAME","EVENT_RULE_TARGET","ApiApwScheduler","name","config","app","params","executeAction","createExecuteActionLambda","scheduleAction","createScheduleActionLambda","lambda","output","eventRule","addResource","aws","cloudwatch","EventRule","description","scheduleExpression","isEnabled","Permission","action","function","arn","principal","statementId","eventTarget","EventTarget","rule","role","iam","Role","assumeRolePolicy","Version","Statement","Action","Principal","Service","Effect","policy","createExecuteActionLambdaPolicy","RolePolicyAttachment","policyArn","ManagedPolicy","AWSLambdaBasicExecutionRole","Function","runtime","handler","timeout","memorySize","code","pulumi","asset","AssetArchive","FileArchive","path","join","ctx","appDir","environment","variables","env","storage","getModule","StorageOutput","Policy","Sid","Resource","interpolate","primaryDynamodbTableArn","executeLambda","createScheduleActionLambdaPolicy","APW_SCHEDULER_EXECUTE_ACTION_HANDLER"],"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, PulumiAppModule } from \"@webiny/pulumi-sdk\";\nimport { StorageOutput } from \"../common\";\nimport { getCommonLambdaEnvVariables } from \"../lambdaUtils\";\n\ninterface ScheduleActionParams {\n env: Record<string, any>;\n}\n\nconst LAMBDA_NAME_PREFIX = \"apw-scheduler\";\nconst CREATE_RULE_LAMBDA = `${LAMBDA_NAME_PREFIX}-schedule-action-lambda`;\nconst EXECUTE_ACTION_LAMBDA = `${LAMBDA_NAME_PREFIX}-execute-action-lambda`;\nconst EVENT_RULE_NAME = `${LAMBDA_NAME_PREFIX}-event-rule`;\nconst EVENT_RULE_TARGET = `${LAMBDA_NAME_PREFIX}-event-rule-target`;\n\nexport type ApiApwScheduler = PulumiAppModule<typeof ApiApwScheduler>;\n\nexport const ApiApwScheduler = defineAppModule({\n name: \"ApiApwScheduler\",\n config(app: PulumiApp, params: ScheduleActionParams) {\n const executeAction = createExecuteActionLambda(app, params);\n const scheduleAction = createScheduleActionLambda(app, executeAction.lambda.output, params);\n\n // Create event rule.\n const eventRule = app.addResource(aws.cloudwatch.EventRule, {\n name: EVENT_RULE_NAME,\n config: {\n description: `Enable us to schedule an action in publishing workflow at a particular datetime`,\n scheduleExpression: \"cron(* * * * ? 2000)\",\n isEnabled: true\n }\n });\n\n // Add required permission to the target lambda.\n app.addResource(aws.lambda.Permission, {\n name: \"eventTargetPermission\",\n config: {\n action: \"lambda:InvokeFunction\",\n function: scheduleAction.lambda.output.arn,\n principal: \"events.amazonaws.com\",\n statementId: \"allow-rule-invoke-\" + EVENT_RULE_NAME\n }\n });\n\n // Add lambda as target to the event rule.\n const eventTarget = app.addResource(aws.cloudwatch.EventTarget, {\n name: EVENT_RULE_TARGET,\n config: {\n rule: eventRule.output.name,\n arn: scheduleAction.lambda.output.arn\n }\n });\n\n return {\n executeAction,\n scheduleAction,\n eventRule,\n eventTarget\n };\n }\n});\n\nfunction createExecuteActionLambda(app: PulumiApp, params: ScheduleActionParams) {\n const role = app.addResource(aws.iam.Role, {\n name: `${EXECUTE_ACTION_LAMBDA}-role`,\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 = createExecuteActionLambdaPolicy(app);\n\n app.addResource(aws.iam.RolePolicyAttachment, {\n name: `${EXECUTE_ACTION_LAMBDA}-role-policy-attachment`,\n config: {\n role: role.output,\n policyArn: policy.output.arn\n }\n });\n\n app.addResource(aws.iam.RolePolicyAttachment, {\n name: `${EXECUTE_ACTION_LAMBDA}-AWSLambdaBasicExecutionRole`,\n config: {\n role: role.output,\n policyArn: aws.iam.ManagedPolicy.AWSLambdaBasicExecutionRole\n }\n });\n\n const lambda = app.addResource(aws.lambda.Function, {\n name: EXECUTE_ACTION_LAMBDA,\n config: {\n role: role.output.arn,\n runtime: \"nodejs14.x\",\n handler: \"handler.handler\",\n timeout: 60,\n memorySize: 128,\n description: \"Handle execute action workflow in apw scheduler\",\n code: new pulumi.asset.AssetArchive({\n \".\": new pulumi.asset.FileArchive(\n path.join(app.ctx.appDir, \"code/apw/executeAction/build\")\n )\n }),\n environment: {\n variables: {\n ...getCommonLambdaEnvVariables(app),\n ...params.env\n }\n }\n }\n });\n\n return {\n role,\n policy,\n lambda\n };\n}\n\nfunction createExecuteActionLambdaPolicy(app: PulumiApp) {\n const storage = app.getModule(StorageOutput);\n\n return app.addResource(aws.iam.Policy, {\n name: \"ApwSchedulerExecuteActionLambdaPolicy\",\n config: {\n description: \"This policy enables access to cloudwatch event and lambda invocation\",\n policy: {\n Version: \"2012-10-17\",\n Statement: [\n {\n Sid: \"PermissionLambda\",\n Effect: \"Allow\",\n Action: [\"lambda:InvokeFunction\"],\n Resource: [\"*\"]\n },\n {\n Sid: \"PermissionDynamoDB\",\n Effect: \"Allow\",\n Action: [\"dynamodb:Query\", \"dynamodb:GetItem\", \"dynamodb:DeleteItem\"],\n Resource: [\n pulumi.interpolate`${storage.primaryDynamodbTableArn}`,\n pulumi.interpolate`${storage.primaryDynamodbTableArn}/*`\n ]\n }\n ]\n }\n }\n });\n}\n\nfunction createScheduleActionLambda(\n app: PulumiApp,\n executeLambda: pulumi.Output<aws.lambda.Function>,\n params: ScheduleActionParams\n) {\n const role = app.addResource(aws.iam.Role, {\n name: `${CREATE_RULE_LAMBDA}-role`,\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 = createScheduleActionLambdaPolicy(app);\n\n app.addResource(aws.iam.RolePolicyAttachment, {\n name: `${CREATE_RULE_LAMBDA}-role-policy-attachment`,\n config: {\n role: role.output,\n policyArn: policy.output.arn\n }\n });\n\n app.addResource(aws.iam.RolePolicyAttachment, {\n name: `${CREATE_RULE_LAMBDA}-AWSLambdaBasicExecutionRole`,\n config: {\n role: role.output,\n policyArn: aws.iam.ManagedPolicy.AWSLambdaBasicExecutionRole\n }\n });\n\n const lambda = app.addResource(aws.lambda.Function, {\n name: CREATE_RULE_LAMBDA,\n config: {\n role: role.output.arn,\n runtime: \"nodejs14.x\",\n handler: \"handler.handler\",\n timeout: 60,\n memorySize: 128,\n description: \"Handle schedule action workflow in apw scheduler\",\n code: new pulumi.asset.AssetArchive({\n \".\": new pulumi.asset.FileArchive(\n path.join(app.ctx.appDir, \"code/apw/scheduleAction/build\")\n )\n }),\n environment: {\n variables: {\n ...getCommonLambdaEnvVariables(app),\n ...params.env,\n APW_SCHEDULER_EXECUTE_ACTION_HANDLER: executeLambda.arn\n // RULE_NAME: this.eventRule.name.apply(name => name),\n // RULE_TARGET_ID: this.eventTarget.targetId.apply(id => id)\n }\n }\n }\n });\n\n return {\n role,\n policy,\n lambda\n };\n}\n\nfunction createScheduleActionLambdaPolicy(app: PulumiApp) {\n const storage = app.getModule(StorageOutput);\n\n return app.addResource(aws.iam.Policy, {\n name: \"ApwSchedulerScheduleActionLambdaPolicy\",\n config: {\n description: \"This policy enables access to cloudwatch event and lambda invocation\",\n policy: {\n Version: \"2012-10-17\",\n Statement: [\n {\n Sid: \"PermissionLambda\",\n Effect: \"Allow\",\n Action: [\"lambda:InvokeFunction\"],\n Resource: [\"*\"]\n },\n {\n Sid: \"PermissionDynamoDB\",\n Effect: \"Allow\",\n Action: [\n \"dynamodb:PutItem\",\n \"dynamodb:Query\",\n \"dynamodb:GetItem\",\n \"dynamodb:UpdateItem\",\n \"dynamodb:DeleteItem\"\n ],\n Resource: [\n pulumi.interpolate`${storage.primaryDynamodbTableArn}`,\n pulumi.interpolate`${storage.primaryDynamodbTableArn}/*`\n ]\n },\n {\n Sid: \"PermissionEvents\",\n Effect: \"Allow\",\n Action: [\n \"events:DeleteRule\",\n \"events:PutTargets\",\n \"events:PutRule\",\n \"events:ListRules\",\n \"events:RemoveTargets\",\n \"events:ListTargetsByRule\"\n ],\n Resource: [\"*\"]\n }\n ]\n }\n }\n });\n}\n"]}
@@ -24,6 +24,8 @@ const ApiCloudfront = (0, _pulumiSdk.defineAppModule)({
24
24
  name: "api-cloudfront",
25
25
  config: {
26
26
  waitForDeployment: false,
27
+ isIpv6Enabled: true,
28
+ enabled: true,
27
29
  defaultCacheBehavior: {
28
30
  compress: true,
29
31
  allowedMethods: ["GET", "HEAD", "OPTIONS", "PUT", "POST", "PATCH", "DELETE"],
@@ -42,8 +44,6 @@ const ApiCloudfront = (0, _pulumiSdk.defineAppModule)({
42
44
  targetOriginId: gateway.api.output.name,
43
45
  viewerProtocolPolicy: "allow-all"
44
46
  },
45
- isIpv6Enabled: true,
46
- enabled: true,
47
47
  orderedCacheBehaviors: [{
48
48
  compress: true,
49
49
  allowedMethods: ["GET", "HEAD", "OPTIONS", "PUT", "POST", "PATCH", "DELETE"],