@takumi-stack/core 1.0.9 → 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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@takumi-stack/core",
3
- "version": "1.0.9",
3
+ "version": "1.0.10",
4
4
  "author": "sinapsis.co",
5
5
  "license": "MIT",
6
6
  "dependencies": {
@@ -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"}
@@ -1,2 +1,6 @@
1
1
  export * from './domain';
2
+ export * from './fleet';
3
+ export * from './thing-group';
4
+ export * from './greengrass-component';
5
+ export * from './greengrass-deployment';
2
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../prefab/iot/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC"}
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"}
@@ -15,4 +15,8 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
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);
18
22
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../prefab/iot/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB"}
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"}