@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 +1 -1
- package/prefab/iot/fleet/index.d.ts +10 -0
- package/prefab/iot/fleet/index.d.ts.map +1 -0
- package/prefab/iot/fleet/index.js +212 -0
- package/prefab/iot/fleet/index.js.map +1 -0
- package/prefab/iot/greengrass-component/index.d.ts +13 -0
- package/prefab/iot/greengrass-component/index.d.ts.map +1 -0
- package/prefab/iot/greengrass-component/index.js +19 -0
- package/prefab/iot/greengrass-component/index.js.map +1 -0
- package/prefab/iot/greengrass-deployment/index.d.ts +15 -0
- package/prefab/iot/greengrass-deployment/index.d.ts.map +1 -0
- package/prefab/iot/greengrass-deployment/index.js +23 -0
- package/prefab/iot/greengrass-deployment/index.js.map +1 -0
- package/prefab/iot/index.d.ts +4 -0
- package/prefab/iot/index.d.ts.map +1 -1
- package/prefab/iot/index.js +4 -0
- package/prefab/iot/index.js.map +1 -1
- package/prefab/iot/thing-group/index.d.ts +10 -0
- package/prefab/iot/thing-group/index.d.ts.map +1 -0
- package/prefab/iot/thing-group/index.js +16 -0
- package/prefab/iot/thing-group/index.js.map +1 -0
- package/tsconfig.tsbuildinfo +1 -1
package/package.json
CHANGED
|
@@ -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"}
|
package/prefab/iot/index.d.ts
CHANGED
|
@@ -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"}
|
package/prefab/iot/index.js
CHANGED
|
@@ -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
|
package/prefab/iot/index.js.map
CHANGED
|
@@ -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"}
|