@takumi-stack/core 1.0.8 → 1.0.10

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 (38) hide show
  1. package/package.json +1 -1
  2. package/prefab/compute/function/index.d.ts +1 -0
  3. package/prefab/compute/function/index.d.ts.map +1 -1
  4. package/prefab/compute/function/index.js +1 -0
  5. package/prefab/compute/function/index.js.map +1 -1
  6. package/prefab/compute/function/mqtt/index.d.ts +14 -0
  7. package/prefab/compute/function/mqtt/index.d.ts.map +1 -0
  8. package/prefab/compute/function/mqtt/index.js +52 -0
  9. package/prefab/compute/function/mqtt/index.js.map +1 -0
  10. package/prefab/index.d.ts +1 -0
  11. package/prefab/index.d.ts.map +1 -1
  12. package/prefab/index.js +1 -0
  13. package/prefab/index.js.map +1 -1
  14. package/prefab/iot/domain/index.d.ts +17 -0
  15. package/prefab/iot/domain/index.d.ts.map +1 -0
  16. package/prefab/iot/domain/index.js +37 -0
  17. package/prefab/iot/domain/index.js.map +1 -0
  18. package/prefab/iot/fleet/index.d.ts +10 -0
  19. package/prefab/iot/fleet/index.d.ts.map +1 -0
  20. package/prefab/iot/fleet/index.js +212 -0
  21. package/prefab/iot/fleet/index.js.map +1 -0
  22. package/prefab/iot/greengrass-component/index.d.ts +13 -0
  23. package/prefab/iot/greengrass-component/index.d.ts.map +1 -0
  24. package/prefab/iot/greengrass-component/index.js +19 -0
  25. package/prefab/iot/greengrass-component/index.js.map +1 -0
  26. package/prefab/iot/greengrass-deployment/index.d.ts +15 -0
  27. package/prefab/iot/greengrass-deployment/index.d.ts.map +1 -0
  28. package/prefab/iot/greengrass-deployment/index.js +23 -0
  29. package/prefab/iot/greengrass-deployment/index.js.map +1 -0
  30. package/prefab/iot/index.d.ts +6 -0
  31. package/prefab/iot/index.d.ts.map +1 -0
  32. package/prefab/iot/index.js +22 -0
  33. package/prefab/iot/index.js.map +1 -0
  34. package/prefab/iot/thing-group/index.d.ts +10 -0
  35. package/prefab/iot/thing-group/index.d.ts.map +1 -0
  36. package/prefab/iot/thing-group/index.js +16 -0
  37. package/prefab/iot/thing-group/index.js.map +1 -0
  38. package/tsconfig.tsbuildinfo +1 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@takumi-stack/core",
3
- "version": "1.0.8",
3
+ "version": "1.0.10",
4
4
  "author": "sinapsis.co",
5
5
  "license": "MIT",
6
6
  "dependencies": {
@@ -7,4 +7,5 @@ export * from './queue';
7
7
  export * from './topic';
8
8
  export * from './scheduled';
9
9
  export * from './streams';
10
+ export * from './mqtt';
10
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../prefab/compute/function/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAC;AACtB,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../prefab/compute/function/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAC;AACtB,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC"}
@@ -23,4 +23,5 @@ __exportStar(require("./queue"), exports);
23
23
  __exportStar(require("./topic"), exports);
24
24
  __exportStar(require("./scheduled"), exports);
25
25
  __exportStar(require("./streams"), exports);
26
+ __exportStar(require("./mqtt"), exports);
26
27
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../prefab/compute/function/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wCAAsB;AACtB,yCAAuB;AACvB,4CAA0B;AAC1B,yCAAuB;AACvB,0CAAwB;AACxB,0CAAwB;AACxB,0CAAwB;AACxB,8CAA4B;AAC5B,4CAA0B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../prefab/compute/function/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wCAAsB;AACtB,yCAAuB;AACvB,4CAA0B;AAC1B,yCAAuB;AACvB,0CAAwB;AACxB,0CAAwB;AACxB,0CAAwB;AACxB,8CAA4B;AAC5B,4CAA0B;AAC1B,yCAAuB"}
@@ -0,0 +1,14 @@
1
+ import { BaseCustomConfigs, Prefab, TakumiStack, PrefabPropsOverride } from '../../../../common';
2
+ import { FunctionConfigs, FunctionPrefab } from '../base';
3
+ export type MqttFunctionHandler = FunctionConfigs;
4
+ export type MqttFunctionPrefabParams<CustomConfigs extends BaseCustomConfigs = BaseCustomConfigs> = FunctionConfigs & {
5
+ name: string;
6
+ entryRootDirectory: string;
7
+ handler: MqttFunctionHandler;
8
+ sqlRulePayload: string;
9
+ };
10
+ export declare class MqttFunctionPrefab<CustomConfigs extends BaseCustomConfigs = BaseCustomConfigs> extends Prefab<MqttFunctionPrefabParams<CustomConfigs>, CustomConfigs> {
11
+ readonly handler: FunctionPrefab<CustomConfigs>;
12
+ constructor(service: TakumiStack<CustomConfigs>, params: MqttFunctionPrefabParams<CustomConfigs>, propsOverride?: PrefabPropsOverride<CustomConfigs>);
13
+ }
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../prefab/compute/function/mqtt/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACjG,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAG1D,MAAM,MAAM,mBAAmB,GAAG,eAAe,CAAC;AAElD,MAAM,MAAM,wBAAwB,CAAC,aAAa,SAAS,iBAAiB,GAAG,iBAAiB,IAAI,eAAe,GAAG;IACpH,IAAI,EAAE,MAAM,CAAC;IACb,kBAAkB,EAAE,MAAM,CAAC;IAC3B,OAAO,EAAE,mBAAmB,CAAC;IAC7B,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,qBAAa,kBAAkB,CAAC,aAAa,SAAS,iBAAiB,GAAG,iBAAiB,CAAE,SAAQ,MAAM,CACzG,wBAAwB,CAAC,aAAa,CAAC,EACvC,aAAa,CACd;IACC,SAAgB,OAAO,EAAE,cAAc,CAAC,aAAa,CAAC,CAAC;gBAGrD,OAAO,EAAE,WAAW,CAAC,aAAa,CAAC,EACnC,MAAM,EAAE,wBAAwB,CAAC,aAAa,CAAC,EAC/C,aAAa,CAAC,EAAE,mBAAmB,CAAC,aAAa,CAAC;CAiDrD"}
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MqttFunctionPrefab = void 0;
4
+ const aws_iam_1 = require("aws-cdk-lib/aws-iam");
5
+ const common_1 = require("../../../../common");
6
+ const base_1 = require("../base");
7
+ const aws_iot_1 = require("aws-cdk-lib/aws-iot");
8
+ class MqttFunctionPrefab extends common_1.Prefab {
9
+ handler;
10
+ constructor(service, params, propsOverride) {
11
+ super(MqttFunctionPrefab.name, service, params, propsOverride);
12
+ this.handler = new base_1.FunctionPrefab(service, {
13
+ ...params,
14
+ name: params.name,
15
+ entryRootDirectory: params.entryRootDirectory,
16
+ ...params.handler,
17
+ appendEnvironment: {
18
+ TAKUMI_FUNCTION_TYPE: 'MQTT',
19
+ ...params.handler.appendEnvironment,
20
+ },
21
+ });
22
+ const iotRuleRole = new aws_iam_1.Role(this, this.getId('IoTRuleRole'), {
23
+ assumedBy: new aws_iam_1.ServicePrincipal('iot.amazonaws.com'),
24
+ });
25
+ iotRuleRole.addToPolicy(new aws_iam_1.PolicyStatement({
26
+ effect: aws_iam_1.Effect.ALLOW,
27
+ actions: ['lambda:InvokeFunction'],
28
+ resources: [this.handler.lambdaFunction.functionArn],
29
+ }));
30
+ new aws_iot_1.CfnTopicRule(this, this.getId('IoTLambdaRule'), {
31
+ topicRulePayload: {
32
+ sql: params.sqlRulePayload,
33
+ actions: [
34
+ {
35
+ lambda: {
36
+ functionArn: this.handler.lambdaFunction.functionArn,
37
+ },
38
+ },
39
+ ],
40
+ errorAction: {
41
+ cloudwatchLogs: {
42
+ logGroupName: this.handler.logGroup.logGroupName,
43
+ roleArn: iotRuleRole.roleArn,
44
+ },
45
+ },
46
+ },
47
+ });
48
+ this.handler.lambdaFunction.grantInvoke(new aws_iam_1.ServicePrincipal('iot.amazonaws.com'));
49
+ }
50
+ }
51
+ exports.MqttFunctionPrefab = MqttFunctionPrefab;
52
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../prefab/compute/function/mqtt/index.ts"],"names":[],"mappings":";;;AAAA,iDAAsF;AACtF,+CAAiG;AACjG,kCAA0D;AAC1D,iDAAmD;AAWnD,MAAa,kBAAgF,SAAQ,eAGpG;IACiB,OAAO,CAAgC;IAEvD,YACE,OAAmC,EACnC,MAA+C,EAC/C,aAAkD;QAElD,KAAK,CAAC,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;QAE/D,IAAI,CAAC,OAAO,GAAG,IAAI,qBAAc,CAAgB,OAAO,EAAE;YACxD,GAAG,MAAM;YACT,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,kBAAkB,EAAE,MAAM,CAAC,kBAAkB;YAC7C,GAAG,MAAM,CAAC,OAAO;YACjB,iBAAiB,EAAE;gBACjB,oBAAoB,EAAE,MAAM;gBAC5B,GAAG,MAAM,CAAC,OAAO,CAAC,iBAAiB;aACpC;SACF,CAAC,CAAC;QAEH,MAAM,WAAW,GAAG,IAAI,cAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE;YAC5D,SAAS,EAAE,IAAI,0BAAgB,CAAC,mBAAmB,CAAC;SACrD,CAAC,CAAC;QAEH,WAAW,CAAC,WAAW,CACrB,IAAI,yBAAe,CAAC;YAClB,MAAM,EAAE,gBAAM,CAAC,KAAK;YACpB,OAAO,EAAE,CAAC,uBAAuB,CAAC;YAClC,SAAS,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,WAAW,CAAC;SACrD,CAAC,CACH,CAAC;QAEF,IAAI,sBAAY,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE;YAClD,gBAAgB,EAAE;gBAChB,GAAG,EAAE,MAAM,CAAC,cAAc;gBAC1B,OAAO,EAAE;oBACP;wBACE,MAAM,EAAE;4BACN,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,WAAW;yBACrD;qBACF;iBACF;gBACD,WAAW,EAAE;oBACX,cAAc,EAAE;wBACd,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY;wBAChD,OAAO,EAAE,WAAW,CAAC,OAAO;qBAC7B;iBACF;aACF;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,0BAAgB,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAErF,CAAC;CACF;AA1DD,gDA0DC"}
package/prefab/index.d.ts CHANGED
@@ -9,4 +9,5 @@ export * from './storage';
9
9
  export * from './secrets';
10
10
  export * from './utils';
11
11
  export * from './ssr';
12
+ export * from './iot';
12
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../prefab/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,OAAO,CAAC;AACtB,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,OAAO,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../prefab/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,OAAO,CAAC;AACtB,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,OAAO,CAAC;AACtB,cAAc,OAAO,CAAC"}
package/prefab/index.js CHANGED
@@ -25,4 +25,5 @@ __exportStar(require("./storage"), exports);
25
25
  __exportStar(require("./secrets"), exports);
26
26
  __exportStar(require("./utils"), exports);
27
27
  __exportStar(require("./ssr"), exports);
28
+ __exportStar(require("./iot"), exports);
28
29
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../prefab/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yCAAuB;AACvB,wCAAsB;AACtB,4CAA0B;AAC1B,6CAA2B;AAC3B,4CAA0B;AAC1B,gDAA8B;AAC9B,+CAA6B;AAC7B,4CAA0B;AAC1B,4CAA0B;AAC1B,0CAAwB;AACxB,wCAAsB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../prefab/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yCAAuB;AACvB,wCAAsB;AACtB,4CAA0B;AAC1B,6CAA2B;AAC3B,4CAA0B;AAC1B,gDAA8B;AAC9B,+CAA6B;AAC7B,4CAA0B;AAC1B,4CAA0B;AAC1B,0CAAwB;AACxB,wCAAsB;AACtB,wCAAsB"}
@@ -0,0 +1,17 @@
1
+ import { CfnDomainConfiguration } from 'aws-cdk-lib/aws-iot';
2
+ import { BaseCustomConfigs, Prefab, PrefabPropsOverride, TakumiStack } from '../../../common';
3
+ import { CertificatePrefab, HostedZonePrefab } from '../../networking';
4
+ import { FunctionPrefab } from '../../compute';
5
+ export type IoTDomainPrefabParams<CustomConfigs extends BaseCustomConfigs = BaseCustomConfigs> = {
6
+ name: string;
7
+ domainName: string;
8
+ certificatePrefab: CertificatePrefab<CustomConfigs>;
9
+ hostedZonePrefab: HostedZonePrefab<CustomConfigs>;
10
+ authorizerConfig?: CfnDomainConfiguration.AuthorizerConfigProperty;
11
+ lambdaAuthorizer?: FunctionPrefab<CustomConfigs>;
12
+ };
13
+ export declare class IoTDomainPrefab<CustomConfigs extends BaseCustomConfigs = BaseCustomConfigs> extends Prefab<IoTDomainPrefabParams<CustomConfigs>, CustomConfigs> {
14
+ readonly domain: string;
15
+ constructor(service: TakumiStack<CustomConfigs>, params: IoTDomainPrefabParams<CustomConfigs>, propsOverride?: PrefabPropsOverride<CustomConfigs>);
16
+ }
17
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../prefab/iot/domain/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAiB,MAAM,qBAAqB,CAAC;AAE5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9F,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAG/C,MAAM,MAAM,qBAAqB,CAAC,aAAa,SAAS,iBAAiB,GAAG,iBAAiB,IAAI;IAC7F,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,iBAAiB,CAAC,aAAa,CAAC,CAAC;IACpD,gBAAgB,EAAE,gBAAgB,CAAC,aAAa,CAAC,CAAC;IAClD,gBAAgB,CAAC,EAAE,sBAAsB,CAAC,wBAAwB,CAAC;IACnE,gBAAgB,CAAC,EAAE,cAAc,CAAC,aAAa,CAAC,CAAC;CACpD,CAAC;AAEF,qBAAa,eAAe,CAAC,aAAa,SAAS,iBAAiB,GAAG,iBAAiB,CAAE,SAAQ,MAAM,CACpG,qBAAqB,CAAC,aAAa,CAAC,EACpC,aAAa,CAChB;IAEG,SAAgB,MAAM,EAAE,MAAM,CAAC;gBAG3B,OAAO,EAAE,WAAW,CAAC,aAAa,CAAC,EACnC,MAAM,EAAE,qBAAqB,CAAC,aAAa,CAAC,EAC5C,aAAa,CAAC,EAAE,mBAAmB,CAAC,aAAa,CAAC;CAgCzD"}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IoTDomainPrefab = void 0;
4
+ const aws_iot_1 = require("aws-cdk-lib/aws-iot");
5
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
6
+ const common_1 = require("../../../common");
7
+ class IoTDomainPrefab extends common_1.Prefab {
8
+ domain;
9
+ constructor(service, params, propsOverride) {
10
+ super(IoTDomainPrefab.name, service, params, propsOverride);
11
+ if (params.authorizerConfig && !params.lambdaAuthorizer) {
12
+ throw new Error('You must specify the lambda authorizer.');
13
+ }
14
+ if (params.authorizerConfig) {
15
+ new aws_iot_1.CfnAuthorizer(this, this.getId('IoTAuthotizer'), {
16
+ authorizerName: params.authorizerConfig.defaultAuthorizerName,
17
+ signingDisabled: false,
18
+ authorizerFunctionArn: params.lambdaAuthorizer?.lambdaFunction.functionArn,
19
+ });
20
+ }
21
+ const iotDomain = new aws_iot_1.CfnDomainConfiguration(this, this.getId('IoTCustomDomain'), {
22
+ domainConfigurationName: this.getResourceName(params.name),
23
+ domainName: this.getDomainName(params.domainName),
24
+ serverCertificateArns: [params.certificatePrefab.certificate.certificateArn],
25
+ domainConfigurationStatus: 'ENABLED',
26
+ ...(params.authorizerConfig ? { authorizerConfig: params.authorizerConfig } : {})
27
+ });
28
+ this.domain = iotDomain.domainName;
29
+ new aws_cdk_lib_1.CfnOutput(this, this.getId('IoTCustomDomainOutput'), {
30
+ key: this.getId('Domain', { toPascalCase: true }),
31
+ exportName: this.getResourceName('domain'),
32
+ value: `mqtts://${iotDomain.domainName}`,
33
+ });
34
+ }
35
+ }
36
+ exports.IoTDomainPrefab = IoTDomainPrefab;
37
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../prefab/iot/domain/index.ts"],"names":[],"mappings":";;;AAAA,iDAA4E;AAC5E,6CAAqD;AACrD,4CAA8F;AAc9F,MAAa,eAA6E,SAAQ,eAGjG;IAEmB,MAAM,CAAS;IAE/B,YACI,OAAmC,EACnC,MAA4C,EAC5C,aAAkD;QAElD,KAAK,CAAC,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;QAE5D,IAAI,MAAM,CAAC,gBAAgB,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;YACtD,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;QAC/D,CAAC;QAED,IAAI,MAAM,CAAC,gBAAgB,EAAE,CAAC;YAC1B,IAAI,uBAAa,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE;gBACjD,cAAc,EAAE,MAAM,CAAC,gBAAgB,CAAC,qBAAqB;gBAC7D,eAAe,EAAE,KAAK;gBACtB,qBAAqB,EAAE,MAAM,CAAC,gBAAgB,EAAE,cAAc,CAAC,WAAY;aAC9E,CAAC,CAAC;QACP,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,gCAAsB,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,EAAE;YAC9E,uBAAuB,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC;YAC1D,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC;YACjD,qBAAqB,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC,cAAc,CAAC;YAC5E,yBAAyB,EAAE,SAAS;YACpC,GAAG,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACpF,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,UAAW,CAAA;QAEnC,IAAI,uBAAS,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,EAAE;YACrD,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;YACjD,UAAU,EAAE,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC;YAC1C,KAAK,EAAE,WAAW,SAAS,CAAC,UAAU,EAAE;SAC3C,CAAC,CAAC;IACP,CAAC;CACJ;AA1CD,0CA0CC"}
@@ -0,0 +1,10 @@
1
+ import { BaseCustomConfigs, Prefab, PrefabPropsOverride, TakumiStack } from '../../../common';
2
+ import { BucketPrefab } from '../../storage';
3
+ export type IoTFleetProvisioningPrefabParams<CustomConfigs extends BaseCustomConfigs = BaseCustomConfigs> = {
4
+ name: string;
5
+ greengrassBucket: BucketPrefab<CustomConfigs>;
6
+ };
7
+ export declare class IoTFleetProvisioningPrefab<CustomConfigs extends BaseCustomConfigs = BaseCustomConfigs> extends Prefab<IoTFleetProvisioningPrefabParams<CustomConfigs>, CustomConfigs> {
8
+ constructor(service: TakumiStack<CustomConfigs>, params: IoTFleetProvisioningPrefabParams<CustomConfigs>, propsOverride?: PrefabPropsOverride<CustomConfigs>);
9
+ }
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../prefab/iot/fleet/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAG9F,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,MAAM,MAAM,gCAAgC,CAAC,aAAa,SAAS,iBAAiB,GAAG,iBAAiB,IAAI;IACxG,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,EAAE,YAAY,CAAC,aAAa,CAAC,CAAC;CACjD,CAAC;AAEF,qBAAa,0BAA0B,CAAC,aAAa,SAAS,iBAAiB,GAAG,iBAAiB,CAAE,SAAQ,MAAM,CAC/G,gCAAgC,CAAC,aAAa,CAAC,EAC/C,aAAa,CAChB;gBAEO,OAAO,EAAE,WAAW,CAAC,aAAa,CAAC,EACnC,MAAM,EAAE,gCAAgC,CAAC,aAAa,CAAC,EACvD,aAAa,CAAC,EAAE,mBAAmB,CAAC,aAAa,CAAC;CA0NzD"}
@@ -0,0 +1,212 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IoTFleetProvisioningPrefab = void 0;
4
+ const aws_iot_1 = require("aws-cdk-lib/aws-iot");
5
+ const common_1 = require("../../../common");
6
+ const aws_iam_1 = require("aws-cdk-lib/aws-iam");
7
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
8
+ class IoTFleetProvisioningPrefab extends common_1.Prefab {
9
+ constructor(service, params, propsOverride) {
10
+ super(IoTFleetProvisioningPrefab.name, service, params, propsOverride);
11
+ // Policy for every thing
12
+ const iotPolicy = new aws_iot_1.CfnPolicy(this, this.getId('RaspberryIoTPolicy'), {
13
+ policyName: `${params.name}RaspberryBasePolicy`,
14
+ policyDocument: {
15
+ Version: '2012-10-17',
16
+ Statement: [
17
+ {
18
+ Effect: 'Allow',
19
+ Action: [
20
+ 'iot:Connect',
21
+ 'iot:Publish',
22
+ 'iot:Subscribe',
23
+ 'iot:Receive',
24
+ 'iot:DescribeThing',
25
+ 'iot:GetThingShadow',
26
+ 'iot:UpdateThingShadow',
27
+ 'greengrass:ResolveComponentCandidates',
28
+ 'greengrass:GetComponentVersionArtifact',
29
+ 'greengrass:CreateDeployment',
30
+ 'greengrass:GetDeployment',
31
+ 'greengrass:CancelDeployment',
32
+ 'greengrass:ListComponents',
33
+ 'greengrass:ListComponentVersions'
34
+ ],
35
+ Resource: '*'
36
+ },
37
+ {
38
+ Effect: 'Allow',
39
+ Action: [
40
+ 'iot:AssumeRoleWithCertificate',
41
+ ],
42
+ Resource: `arn:aws:iot:${service.region}:${service.account}:rolealias/${params.name}GreengrassV2TokenExchangeRoleAlias`
43
+ }
44
+ ]
45
+ }
46
+ });
47
+ // Role for the provisioning
48
+ const roleFleetProvisioning = new aws_iam_1.Role(this, this.getId('FleetProvisioningRole'), {
49
+ assumedBy: new aws_iam_1.ServicePrincipal('iot.amazonaws.com'),
50
+ });
51
+ roleFleetProvisioning.addToPolicy(new aws_iam_1.PolicyStatement({
52
+ effect: aws_iam_1.Effect.ALLOW,
53
+ actions: [
54
+ // Things
55
+ 'iot:CreateThing',
56
+ 'iot:DescribeThing',
57
+ 'iot:ListThingGroupsForThing',
58
+ 'iot:AddThingToThingGroup',
59
+ 'iot:RemoveThingFromThingGroup',
60
+ 'iot:UpdateThing',
61
+ 'iot:DeleteThing',
62
+ // Certificates
63
+ 'iot:CreateKeysAndCertificate',
64
+ 'iot:CreateCertificateFromCsr',
65
+ 'iot:DescribeCertificate',
66
+ 'iot:UpdateCertificate',
67
+ 'iot:DeleteCertificate',
68
+ 'iot:AttachThingPrincipal',
69
+ 'iot:DetachThingPrincipal',
70
+ // Policies
71
+ 'iot:CreatePolicy',
72
+ 'iot:GetPolicy',
73
+ 'iot:ListPolicyVersions',
74
+ 'iot:AttachPolicy',
75
+ 'iot:DetachPolicy',
76
+ 'iot:ListAttachedPolicies',
77
+ 'iot:AttachPrincipalPolicy',
78
+ 'iot:DetachPrincipalPolicy',
79
+ // Register Thing
80
+ 'iot:RegisterThing',
81
+ 'iot:GetThingShadow',
82
+ 'iot:UpdateThingShadow',
83
+ 'iot:DeleteThingShadow'
84
+ ],
85
+ resources: ['*']
86
+ }));
87
+ // Role for Token Exchange Service (TES) de Greengrass
88
+ const greengrassTESRole = new aws_iam_1.Role(this, this.getId('GreengrassTESRole'), {
89
+ assumedBy: new aws_iam_1.ServicePrincipal('credentials.iot.amazonaws.com'),
90
+ roleName: `${params.name}GreengrassV2TokenExchangeRole`,
91
+ managedPolicies: [
92
+ aws_iam_1.ManagedPolicy.fromAwsManagedPolicyName('AmazonS3ReadOnlyAccess')
93
+ ],
94
+ inlinePolicies: {
95
+ 'GreengrassAccess': new aws_iam_1.PolicyDocument({
96
+ statements: [
97
+ new aws_iam_1.PolicyStatement({
98
+ effect: aws_iam_1.Effect.ALLOW,
99
+ actions: [
100
+ 'logs:CreateLogGroup',
101
+ 'logs:CreateLogStream',
102
+ 'logs:PutLogEvents',
103
+ 'logs:DescribeLogStreams',
104
+ 'iot:DescribeCertificate',
105
+ 'iot:DescribeEndpoint',
106
+ 'iot:DescribeThingGroup',
107
+ 'iot:GetThingShadow',
108
+ 'iot:UpdateThingShadow'
109
+ ],
110
+ resources: ['*']
111
+ })
112
+ ]
113
+ })
114
+ }
115
+ });
116
+ new aws_iot_1.CfnRoleAlias(this, this.getId('GreengrassTESRoleAlias'), {
117
+ roleAlias: `${params.name}GreengrassV2TokenExchangeRoleAlias`,
118
+ roleArn: greengrassTESRole.roleArn
119
+ });
120
+ greengrassTESRole.addToPolicy(new aws_iam_1.PolicyStatement({
121
+ effect: aws_iam_1.Effect.ALLOW,
122
+ actions: ['sts:AssumeRole'],
123
+ resources: [greengrassTESRole.roleArn]
124
+ }));
125
+ greengrassTESRole.addToPolicy(new aws_iam_1.PolicyStatement({
126
+ effect: aws_iam_1.Effect.ALLOW,
127
+ actions: [
128
+ 's3:GetObject',
129
+ 's3:ListBucket'
130
+ ],
131
+ resources: [
132
+ params.greengrassBucket.bucket.bucketArn,
133
+ `${params.greengrassBucket.bucket.bucketArn}/*`
134
+ ]
135
+ }));
136
+ // Template Fleet Provisioning (without lambda hook)
137
+ const provisioningTemplate = new aws_iot_1.CfnProvisioningTemplate(this, this.getId('FleetProvisioningTemplate'), {
138
+ provisioningRoleArn: roleFleetProvisioning.roleArn,
139
+ templateName: `${params.name}FleetProvisioningTemplate`,
140
+ enabled: true,
141
+ templateBody: JSON.stringify({
142
+ Parameters: {
143
+ SerialNumber: { Type: 'String' },
144
+ DeviceType: { Type: 'String', Default: 'RaspberryPi' }
145
+ },
146
+ Resources: {
147
+ thing: {
148
+ Type: 'AWS::IoT::Thing',
149
+ Properties: {
150
+ ThingName: { "Ref": "SerialNumber" },
151
+ AttributePayload: {
152
+ deviceType: { "Ref": "DeviceType" }
153
+ }
154
+ }
155
+ },
156
+ certificate: {
157
+ Type: 'AWS::IoT::Certificate',
158
+ Properties: {
159
+ CertificateId: { "Ref": "AWS::IoT::Certificate::Id" },
160
+ Status: 'ACTIVE'
161
+ }
162
+ },
163
+ policy: {
164
+ Type: 'AWS::IoT::Policy',
165
+ Properties: {
166
+ PolicyName: iotPolicy.policyName
167
+ }
168
+ }
169
+ }
170
+ })
171
+ });
172
+ // Policy to connect with provisioning endpoint
173
+ const provisioningCertPolicy = new aws_iot_1.CfnPolicy(this, this.getId('ProvisioningCertPolicy'), {
174
+ policyName: `${params.name}-provisioning-policy`,
175
+ policyDocument: {
176
+ Version: '2012-10-17',
177
+ Statement: [
178
+ {
179
+ Effect: 'Allow',
180
+ Action: [
181
+ 'iot:Connect',
182
+ 'iot:Publish',
183
+ 'iot:Subscribe',
184
+ 'iot:Receive'
185
+ ],
186
+ Resource: '*'
187
+ },
188
+ {
189
+ Effect: 'Allow',
190
+ Action: 'iot:AssumeRoleWithCertificate',
191
+ Resource: roleFleetProvisioning.roleArn
192
+ }
193
+ ]
194
+ }
195
+ });
196
+ // Export values
197
+ new aws_cdk_lib_1.CfnOutput(this, 'ProvisioningPolicyName', {
198
+ value: provisioningCertPolicy.policyName || '',
199
+ description: 'Provisioning Policy Name'
200
+ });
201
+ new aws_cdk_lib_1.CfnOutput(this, 'ProvisioningTemplateName', {
202
+ value: provisioningTemplate.templateName || '',
203
+ description: 'provisioning template name'
204
+ });
205
+ new aws_cdk_lib_1.CfnOutput(this, 'GreengrassTESRoleName', {
206
+ value: greengrassTESRole.roleName,
207
+ description: 'Greengrass TES Role Name'
208
+ });
209
+ }
210
+ }
211
+ exports.IoTFleetProvisioningPrefab = IoTFleetProvisioningPrefab;
212
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../prefab/iot/fleet/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { CfnComponentVersion } from 'aws-cdk-lib/aws-greengrassv2';
2
+ import { BaseCustomConfigs, Prefab, PrefabPropsOverride, TakumiStack } from '../../../common';
3
+ import { BucketPrefab } from '../../storage';
4
+ export type GreengrassComponentPrefabParams<CustomConfigs extends BaseCustomConfigs = BaseCustomConfigs> = {
5
+ name: string;
6
+ greengrassBucket: BucketPrefab<CustomConfigs>;
7
+ recipePath: string;
8
+ };
9
+ export declare class GreengrassComponentPrefab<CustomConfigs extends BaseCustomConfigs = BaseCustomConfigs> extends Prefab<GreengrassComponentPrefabParams<CustomConfigs>, CustomConfigs> {
10
+ readonly greengrassComponent: CfnComponentVersion;
11
+ constructor(service: TakumiStack<CustomConfigs>, params: GreengrassComponentPrefabParams<CustomConfigs>, propsOverride?: PrefabPropsOverride<CustomConfigs>);
12
+ }
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../prefab/iot/greengrass-component/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAG,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9F,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,MAAM,MAAM,+BAA+B,CAAC,aAAa,SAAS,iBAAiB,GAAG,iBAAiB,IAAI;IACvG,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,EAAE,YAAY,CAAC,aAAa,CAAC,CAAC;IAC9C,UAAU,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,qBAAa,yBAAyB,CAAC,aAAa,SAAS,iBAAiB,GAAG,iBAAiB,CAAE,SAAQ,MAAM,CAC9G,+BAA+B,CAAC,aAAa,CAAC,EAC9C,aAAa,CAChB;IACG,SAAgB,mBAAmB,EAAE,mBAAmB,CAAC;gBAGrD,OAAO,EAAE,WAAW,CAAC,aAAa,CAAC,EACnC,MAAM,EAAE,+BAA+B,CAAC,aAAa,CAAC,EACtD,aAAa,CAAC,EAAE,mBAAmB,CAAC,aAAa,CAAC;CAYzD"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GreengrassComponentPrefab = void 0;
4
+ const aws_greengrassv2_1 = require("aws-cdk-lib/aws-greengrassv2");
5
+ const common_1 = require("../../../common");
6
+ const fs_1 = require("fs");
7
+ class GreengrassComponentPrefab extends common_1.Prefab {
8
+ greengrassComponent;
9
+ constructor(service, params, propsOverride) {
10
+ super(GreengrassComponentPrefab.name, service, params, propsOverride);
11
+ let recipeContent = (0, fs_1.readFileSync)(params.recipePath, 'utf8');
12
+ recipeContent = recipeContent.replace('${BUCKET}', params.greengrassBucket.bucket.bucketName);
13
+ this.greengrassComponent = new aws_greengrassv2_1.CfnComponentVersion(this, this.getId('GreengrassComponent'), {
14
+ inlineRecipe: recipeContent
15
+ });
16
+ }
17
+ }
18
+ exports.GreengrassComponentPrefab = GreengrassComponentPrefab;
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../prefab/iot/greengrass-component/index.ts"],"names":[],"mappings":";;;AAAA,mEAAoE;AACpE,4CAA8F;AAC9F,2BAAkC;AASlC,MAAa,yBAAuF,SAAQ,eAG3G;IACmB,mBAAmB,CAAsB;IAEzD,YACI,OAAmC,EACnC,MAAsD,EACtD,aAAkD;QAElD,KAAK,CAAC,yBAAyB,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;QAEtE,IAAI,aAAa,GAAG,IAAA,iBAAY,EAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAC5D,aAAa,GAAG,aAAa,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAE9F,IAAI,CAAC,mBAAmB,GAAG,IAAI,sCAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,EAAE;YACxF,YAAY,EAAE,aAAa;SAC9B,CAAC,CAAC;IAEP,CAAC;CACJ;AArBD,8DAqBC"}
@@ -0,0 +1,15 @@
1
+ import { CfnDeployment } from 'aws-cdk-lib/aws-greengrassv2';
2
+ import { BaseCustomConfigs, Prefab, PrefabPropsOverride, TakumiStack } from '../../../common';
3
+ import { IoTThingGroupPrefab } from '../thing-group';
4
+ import { GreengrassComponentPrefab } from '../greengrass-component';
5
+ export type GreengrassDeploymentPrefabParams<CustomConfigs extends BaseCustomConfigs = BaseCustomConfigs> = {
6
+ name: string;
7
+ thingGroupTarget: IoTThingGroupPrefab<CustomConfigs>;
8
+ componentName: string;
9
+ greengrassComponent: GreengrassComponentPrefab<CustomConfigs>;
10
+ };
11
+ export declare class GreengrassDeploymentPrefab<CustomConfigs extends BaseCustomConfigs = BaseCustomConfigs> extends Prefab<GreengrassDeploymentPrefabParams<CustomConfigs>, CustomConfigs> {
12
+ readonly greengrassDeployment: CfnDeployment;
13
+ constructor(service: TakumiStack<CustomConfigs>, params: GreengrassDeploymentPrefabParams<CustomConfigs>, propsOverride?: PrefabPropsOverride<CustomConfigs>);
14
+ }
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../prefab/iot/greengrass-deployment/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAG,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9F,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAEpE,MAAM,MAAM,gCAAgC,CAAC,aAAa,SAAS,iBAAiB,GAAG,iBAAiB,IAAI;IACxG,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,EAAE,mBAAmB,CAAC,aAAa,CAAC,CAAC;IACrD,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB,EAAE,yBAAyB,CAAC,aAAa,CAAC,CAAC;CACjE,CAAC;AAEF,qBAAa,0BAA0B,CAAC,aAAa,SAAS,iBAAiB,GAAG,iBAAiB,CAAE,SAAQ,MAAM,CAC/G,gCAAgC,CAAC,aAAa,CAAC,EAC/C,aAAa,CAChB;IACG,SAAgB,oBAAoB,EAAE,aAAa,CAAC;gBAGhD,OAAO,EAAE,WAAW,CAAC,aAAa,CAAC,EACnC,MAAM,EAAE,gCAAgC,CAAC,aAAa,CAAC,EACvD,aAAa,CAAC,EAAE,mBAAmB,CAAC,aAAa,CAAC;CAkBzD"}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GreengrassDeploymentPrefab = void 0;
4
+ const aws_greengrassv2_1 = require("aws-cdk-lib/aws-greengrassv2");
5
+ const common_1 = require("../../../common");
6
+ class GreengrassDeploymentPrefab extends common_1.Prefab {
7
+ greengrassDeployment;
8
+ constructor(service, params, propsOverride) {
9
+ super(GreengrassDeploymentPrefab.name, service, params, propsOverride);
10
+ const componentName = params.componentName;
11
+ this.greengrassDeployment = new aws_greengrassv2_1.CfnDeployment(this, this.getId('GreengrassDeployment'), {
12
+ targetArn: params.thingGroupTarget.thingGroup.attrArn,
13
+ deploymentName: this.getResourceName(params.name),
14
+ components: {
15
+ [componentName]: {
16
+ componentVersion: params.greengrassComponent.greengrassComponent.attrComponentVersion,
17
+ },
18
+ },
19
+ });
20
+ }
21
+ }
22
+ exports.GreengrassDeploymentPrefab = GreengrassDeploymentPrefab;
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../prefab/iot/greengrass-deployment/index.ts"],"names":[],"mappings":";;;AAAA,mEAA8D;AAC9D,4CAA8F;AAY9F,MAAa,0BAAwF,SAAQ,eAG5G;IACmB,oBAAoB,CAAgB;IAEpD,YACI,OAAmC,EACnC,MAAuD,EACvD,aAAkD;QAElD,KAAK,CAAC,0BAA0B,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;QAEvE,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;QAE3C,IAAI,CAAC,oBAAoB,GAAG,IAAI,gCAAa,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC,EAAE;YACpF,SAAS,EAAE,MAAM,CAAC,gBAAgB,CAAC,UAAU,CAAC,OAAO;YACrD,cAAc,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC;YACjD,UAAU,EAAE;gBACR,CAAC,aAAa,CAAC,EAAE;oBACb,gBAAgB,EAAE,MAAM,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,oBAAoB;iBACxF;aACJ;SACJ,CAAC,CAAC;IAGP,CAAC;CACJ;AA3BD,gEA2BC"}
@@ -0,0 +1,6 @@
1
+ export * from './domain';
2
+ export * from './fleet';
3
+ export * from './thing-group';
4
+ export * from './greengrass-component';
5
+ export * from './greengrass-deployment';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../prefab/iot/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./domain"), exports);
18
+ __exportStar(require("./fleet"), exports);
19
+ __exportStar(require("./thing-group"), exports);
20
+ __exportStar(require("./greengrass-component"), exports);
21
+ __exportStar(require("./greengrass-deployment"), exports);
22
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../prefab/iot/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,0CAAwB;AACxB,gDAA8B;AAC9B,yDAAuC;AACvC,0DAAwC"}
@@ -0,0 +1,10 @@
1
+ import { CfnThingGroup } from 'aws-cdk-lib/aws-iot';
2
+ import { BaseCustomConfigs, Prefab, PrefabPropsOverride, TakumiStack } from '../../../common';
3
+ export type IoTThingGroupPrefabParams<CustomConfigs extends BaseCustomConfigs = BaseCustomConfigs> = {
4
+ name: string;
5
+ };
6
+ export declare class IoTThingGroupPrefab<CustomConfigs extends BaseCustomConfigs = BaseCustomConfigs> extends Prefab<IoTThingGroupPrefabParams<CustomConfigs>, CustomConfigs> {
7
+ readonly thingGroup: CfnThingGroup;
8
+ constructor(service: TakumiStack<CustomConfigs>, params: IoTThingGroupPrefabParams<CustomConfigs>, propsOverride?: PrefabPropsOverride<CustomConfigs>);
9
+ }
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../prefab/iot/thing-group/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9F,MAAM,MAAM,yBAAyB,CAAC,aAAa,SAAS,iBAAiB,GAAG,iBAAiB,IAAI;IACjG,IAAI,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,qBAAa,mBAAmB,CAAC,aAAa,SAAS,iBAAiB,GAAG,iBAAiB,CAAE,SAAQ,MAAM,CACxG,yBAAyB,CAAC,aAAa,CAAC,EACxC,aAAa,CAChB;IAEG,SAAgB,UAAU,EAAE,aAAa,CAAC;gBAGtC,OAAO,EAAE,WAAW,CAAC,aAAa,CAAC,EACnC,MAAM,EAAE,yBAAyB,CAAC,aAAa,CAAC,EAChD,aAAa,CAAC,EAAE,mBAAmB,CAAC,aAAa,CAAC;CAQzD"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IoTThingGroupPrefab = void 0;
4
+ const aws_iot_1 = require("aws-cdk-lib/aws-iot");
5
+ const common_1 = require("../../../common");
6
+ class IoTThingGroupPrefab extends common_1.Prefab {
7
+ thingGroup;
8
+ constructor(service, params, propsOverride) {
9
+ super(IoTThingGroupPrefab.name, service, params, propsOverride);
10
+ this.thingGroup = new aws_iot_1.CfnThingGroup(this, this.getId('ThingGroup'), {
11
+ thingGroupName: this.getResourceName(params.name),
12
+ });
13
+ }
14
+ }
15
+ exports.IoTThingGroupPrefab = IoTThingGroupPrefab;
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../prefab/iot/thing-group/index.ts"],"names":[],"mappings":";;;AAAA,iDAAoD;AACpD,4CAA8F;AAM9F,MAAa,mBAAiF,SAAQ,eAGrG;IAEmB,UAAU,CAAgB;IAE1C,YACI,OAAmC,EACnC,MAAgD,EAChD,aAAkD;QAElD,KAAK,CAAC,mBAAmB,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;QAEhE,IAAI,CAAC,UAAU,GAAG,IAAI,uBAAa,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE;YAChE,cAAc,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC;SACpD,CAAC,CAAC;IACP,CAAC;CACJ;AAlBD,kDAkBC"}