1// Code generated by smithy-go-codegen DO NOT EDIT.
2
3package types
4
5// Information about a bulk deployment. You cannot start a new bulk deployment
6// while another one is still running or in a non-terminal state.
7type BulkDeployment struct {
8
9	// The ARN of the bulk deployment.
10	BulkDeploymentArn *string
11
12	// The ID of the bulk deployment.
13	BulkDeploymentId *string
14
15	// The time, in ISO format, when the deployment was created.
16	CreatedAt *string
17}
18
19// Relevant metrics on input records processed during bulk deployment.
20type BulkDeploymentMetrics struct {
21
22	// The total number of records that returned a non-retryable error. For example,
23	// this can occur if a group record from the input file uses an invalid format or
24	// specifies a nonexistent group version, or if the execution role doesn't grant
25	// permission to deploy a group or group version.
26	InvalidInputRecords int32
27
28	// The total number of group records from the input file that have been processed
29	// so far, or attempted.
30	RecordsProcessed int32
31
32	// The total number of deployment attempts that returned a retryable error. For
33	// example, a retry is triggered if the attempt to deploy a group returns a
34	// throttling error. ''StartBulkDeployment'' retries a group deployment up to five
35	// times.
36	RetryAttempts int32
37}
38
39// Information about an individual group deployment in a bulk deployment operation.
40type BulkDeploymentResult struct {
41
42	// The time, in ISO format, when the deployment was created.
43	CreatedAt *string
44
45	// The ARN of the group deployment.
46	DeploymentArn *string
47
48	// The ID of the group deployment.
49	DeploymentId *string
50
51	// The current status of the group deployment: ''InProgress'', ''Building'',
52	// ''Success'', or ''Failure''.
53	DeploymentStatus *string
54
55	// The type of the deployment.
56	DeploymentType DeploymentType
57
58	// Details about the error.
59	ErrorDetails []ErrorDetail
60
61	// The error message for a failed deployment
62	ErrorMessage *string
63
64	// The ARN of the Greengrass group.
65	GroupArn *string
66}
67
68// Information about a Greengrass core's connectivity.
69type ConnectivityInfo struct {
70
71	// The endpoint for the Greengrass core. Can be an IP address or DNS.
72	HostAddress *string
73
74	// The ID of the connectivity information.
75	Id *string
76
77	// Metadata for this endpoint.
78	Metadata *string
79
80	// The port of the Greengrass core. Usually 8883.
81	PortNumber int32
82}
83
84// Information about a connector. Connectors run on the Greengrass core and contain
85// built-in integration with local infrastructure, device protocols, AWS, and other
86// cloud services.
87type Connector struct {
88
89	// The ARN of the connector.
90	//
91	// This member is required.
92	ConnectorArn *string
93
94	// A descriptive or arbitrary ID for the connector. This value must be unique
95	// within the connector definition version. Max length is 128 characters with
96	// pattern [a-zA-Z0-9:_-]+.
97	//
98	// This member is required.
99	Id *string
100
101	// The parameters or configuration that the connector uses.
102	Parameters map[string]string
103}
104
105// Information about the connector definition version, which is a container for
106// connectors.
107type ConnectorDefinitionVersion struct {
108
109	// A list of references to connectors in this version, with their corresponding
110	// configuration settings.
111	Connectors []Connector
112}
113
114// Information about a core.
115type Core struct {
116
117	// The ARN of the certificate associated with the core.
118	//
119	// This member is required.
120	CertificateArn *string
121
122	// A descriptive or arbitrary ID for the core. This value must be unique within the
123	// core definition version. Max length is 128 characters with pattern
124	// ''[a-zA-Z0-9:_-]+''.
125	//
126	// This member is required.
127	Id *string
128
129	// The ARN of the thing which is the core.
130	//
131	// This member is required.
132	ThingArn *string
133
134	// If true, the core's local shadow is automatically synced with the cloud.
135	SyncShadow bool
136}
137
138// Information about a core definition version.
139type CoreDefinitionVersion struct {
140
141	// A list of cores in the core definition version.
142	Cores []Core
143}
144
145// Information about a definition.
146type DefinitionInformation struct {
147
148	// The ARN of the definition.
149	Arn *string
150
151	// The time, in milliseconds since the epoch, when the definition was created.
152	CreationTimestamp *string
153
154	// The ID of the definition.
155	Id *string
156
157	// The time, in milliseconds since the epoch, when the definition was last updated.
158	LastUpdatedTimestamp *string
159
160	// The ID of the latest version associated with the definition.
161	LatestVersion *string
162
163	// The ARN of the latest version associated with the definition.
164	LatestVersionArn *string
165
166	// The name of the definition.
167	Name *string
168
169	// Tag(s) attached to the resource arn.
170	Tags map[string]string
171}
172
173// Information about a deployment.
174type Deployment struct {
175
176	// The time, in milliseconds since the epoch, when the deployment was created.
177	CreatedAt *string
178
179	// The ARN of the deployment.
180	DeploymentArn *string
181
182	// The ID of the deployment.
183	DeploymentId *string
184
185	// The type of the deployment.
186	DeploymentType DeploymentType
187
188	// The ARN of the group for this deployment.
189	GroupArn *string
190}
191
192// Information about a device.
193type Device struct {
194
195	// The ARN of the certificate associated with the device.
196	//
197	// This member is required.
198	CertificateArn *string
199
200	// A descriptive or arbitrary ID for the device. This value must be unique within
201	// the device definition version. Max length is 128 characters with pattern
202	// ''[a-zA-Z0-9:_-]+''.
203	//
204	// This member is required.
205	Id *string
206
207	// The thing ARN of the device.
208	//
209	// This member is required.
210	ThingArn *string
211
212	// If true, the device's local shadow will be automatically synced with the cloud.
213	SyncShadow bool
214}
215
216// Information about a device definition version.
217type DeviceDefinitionVersion struct {
218
219	// A list of devices in the definition version.
220	Devices []Device
221}
222
223// Details about the error.
224type ErrorDetail struct {
225
226	// A detailed error code.
227	DetailedErrorCode *string
228
229	// A detailed error message.
230	DetailedErrorMessage *string
231}
232
233// Information about a Lambda function.
234type Function struct {
235
236	// A descriptive or arbitrary ID for the function. This value must be unique within
237	// the function definition version. Max length is 128 characters with pattern
238	// ''[a-zA-Z0-9:_-]+''.
239	//
240	// This member is required.
241	Id *string
242
243	// The ARN of the Lambda function.
244	FunctionArn *string
245
246	// The configuration of the Lambda function.
247	FunctionConfiguration *FunctionConfiguration
248}
249
250// The configuration of the Lambda function.
251type FunctionConfiguration struct {
252
253	// The expected encoding type of the input payload for the function. The default is
254	// ''json''.
255	EncodingType EncodingType
256
257	// The environment configuration of the function.
258	Environment *FunctionConfigurationEnvironment
259
260	// The execution arguments.
261	ExecArgs *string
262
263	// The name of the function executable.
264	Executable *string
265
266	// The memory size, in KB, which the function requires. This setting is not
267	// applicable and should be cleared when you run the Lambda function without
268	// containerization.
269	MemorySize int32
270
271	// True if the function is pinned. Pinned means the function is long-lived and
272	// starts when the core starts.
273	Pinned bool
274
275	// The allowed function execution time, after which Lambda should terminate the
276	// function. This timeout still applies to pinned Lambda functions for each
277	// request.
278	Timeout int32
279}
280
281// The environment configuration of the function.
282type FunctionConfigurationEnvironment struct {
283
284	// If true, the Lambda function is allowed to access the host's /sys folder. Use
285	// this when the Lambda function needs to read device information from /sys. This
286	// setting applies only when you run the Lambda function in a Greengrass container.
287	AccessSysfs bool
288
289	// Configuration related to executing the Lambda function
290	Execution *FunctionExecutionConfig
291
292	// A list of the resources, with their permissions, to which the Lambda function
293	// will be granted access. A Lambda function can have at most 10 resources.
294	// ResourceAccessPolicies apply only when you run the Lambda function in a
295	// Greengrass container.
296	ResourceAccessPolicies []ResourceAccessPolicy
297
298	// Environment variables for the Lambda function's configuration.
299	Variables map[string]string
300}
301
302// The default configuration that applies to all Lambda functions in the group.
303// Individual Lambda functions can override these settings.
304type FunctionDefaultConfig struct {
305
306	// Configuration information that specifies how a Lambda function runs.
307	Execution *FunctionDefaultExecutionConfig
308}
309
310// Configuration information that specifies how a Lambda function runs.
311type FunctionDefaultExecutionConfig struct {
312
313	// Specifies whether the Lambda function runs in a Greengrass container (default)
314	// or without containerization. Unless your scenario requires that you run without
315	// containerization, we recommend that you run in a Greengrass container. Omit this
316	// value to run the Lambda function with the default containerization for the
317	// group.
318	IsolationMode FunctionIsolationMode
319
320	// Specifies the user and group whose permissions are used when running the Lambda
321	// function. You can specify one or both values to override the default values. We
322	// recommend that you avoid running as root unless absolutely necessary to minimize
323	// the risk of unintended changes or malicious attacks. To run as root, you must
324	// set ''IsolationMode'' to ''NoContainer'' and update config.json in
325	// ''greengrass-root/config'' to set ''allowFunctionsToRunAsRoot'' to ''yes''.
326	RunAs *FunctionRunAsConfig
327}
328
329// Information about a function definition version.
330type FunctionDefinitionVersion struct {
331
332	// The default configuration that applies to all Lambda functions in this function
333	// definition version. Individual Lambda functions can override these settings.
334	DefaultConfig *FunctionDefaultConfig
335
336	// A list of Lambda functions in this function definition version.
337	Functions []Function
338}
339
340// Configuration information that specifies how a Lambda function runs.
341type FunctionExecutionConfig struct {
342
343	// Specifies whether the Lambda function runs in a Greengrass container (default)
344	// or without containerization. Unless your scenario requires that you run without
345	// containerization, we recommend that you run in a Greengrass container. Omit this
346	// value to run the Lambda function with the default containerization for the
347	// group.
348	IsolationMode FunctionIsolationMode
349
350	// Specifies the user and group whose permissions are used when running the Lambda
351	// function. You can specify one or both values to override the default values. We
352	// recommend that you avoid running as root unless absolutely necessary to minimize
353	// the risk of unintended changes or malicious attacks. To run as root, you must
354	// set ''IsolationMode'' to ''NoContainer'' and update config.json in
355	// ''greengrass-root/config'' to set ''allowFunctionsToRunAsRoot'' to ''yes''.
356	RunAs *FunctionRunAsConfig
357}
358
359// Specifies the user and group whose permissions are used when running the Lambda
360// function. You can specify one or both values to override the default values. We
361// recommend that you avoid running as root unless absolutely necessary to minimize
362// the risk of unintended changes or malicious attacks. To run as root, you must
363// set ''IsolationMode'' to ''NoContainer'' and update config.json in
364// ''greengrass-root/config'' to set ''allowFunctionsToRunAsRoot'' to ''yes''.
365type FunctionRunAsConfig struct {
366
367	// The group ID whose permissions are used to run a Lambda function.
368	Gid int32
369
370	// The user ID whose permissions are used to run a Lambda function.
371	Uid int32
372}
373
374// Information about a certificate authority for a group.
375type GroupCertificateAuthorityProperties struct {
376
377	// The ARN of the certificate authority for the group.
378	GroupCertificateAuthorityArn *string
379
380	// The ID of the certificate authority for the group.
381	GroupCertificateAuthorityId *string
382}
383
384// Information about a group.
385type GroupInformation struct {
386
387	// The ARN of the group.
388	Arn *string
389
390	// The time, in milliseconds since the epoch, when the group was created.
391	CreationTimestamp *string
392
393	// The ID of the group.
394	Id *string
395
396	// The time, in milliseconds since the epoch, when the group was last updated.
397	LastUpdatedTimestamp *string
398
399	// The ID of the latest version associated with the group.
400	LatestVersion *string
401
402	// The ARN of the latest version associated with the group.
403	LatestVersionArn *string
404
405	// The name of the group.
406	Name *string
407}
408
409// Group owner related settings for local resources.
410type GroupOwnerSetting struct {
411
412	// If true, AWS IoT Greengrass automatically adds the specified Linux OS group
413	// owner of the resource to the Lambda process privileges. Thus the Lambda process
414	// will have the file access permissions of the added Linux group.
415	AutoAddGroupOwner bool
416
417	// The name of the Linux OS group whose privileges will be added to the Lambda
418	// process. This field is optional.
419	GroupOwner *string
420}
421
422// Information about a group version.
423type GroupVersion struct {
424
425	// The ARN of the connector definition version for this group.
426	ConnectorDefinitionVersionArn *string
427
428	// The ARN of the core definition version for this group.
429	CoreDefinitionVersionArn *string
430
431	// The ARN of the device definition version for this group.
432	DeviceDefinitionVersionArn *string
433
434	// The ARN of the function definition version for this group.
435	FunctionDefinitionVersionArn *string
436
437	// The ARN of the logger definition version for this group.
438	LoggerDefinitionVersionArn *string
439
440	// The ARN of the resource definition version for this group.
441	ResourceDefinitionVersionArn *string
442
443	// The ARN of the subscription definition version for this group.
444	SubscriptionDefinitionVersionArn *string
445}
446
447// Attributes that define a local device resource.
448type LocalDeviceResourceData struct {
449
450	// Group/owner related settings for local resources.
451	GroupOwnerSetting *GroupOwnerSetting
452
453	// The local absolute path of the device resource. The source path for a device
454	// resource can refer only to a character device or block device under ''/dev''.
455	SourcePath *string
456}
457
458// Attributes that define a local volume resource.
459type LocalVolumeResourceData struct {
460
461	// The absolute local path of the resource inside the Lambda environment.
462	DestinationPath *string
463
464	// Allows you to configure additional group privileges for the Lambda process. This
465	// field is optional.
466	GroupOwnerSetting *GroupOwnerSetting
467
468	// The local absolute path of the volume resource on the host. The source path for
469	// a volume resource type cannot start with ''/sys''.
470	SourcePath *string
471}
472
473// Information about a logger
474type Logger struct {
475
476	// The component that will be subject to logging.
477	//
478	// This member is required.
479	Component LoggerComponent
480
481	// A descriptive or arbitrary ID for the logger. This value must be unique within
482	// the logger definition version. Max length is 128 characters with pattern
483	// ''[a-zA-Z0-9:_-]+''.
484	//
485	// This member is required.
486	Id *string
487
488	// The level of the logs.
489	//
490	// This member is required.
491	Level LoggerLevel
492
493	// The type of log output which will be used.
494	//
495	// This member is required.
496	Type LoggerType
497
498	// The amount of file space, in KB, to use if the local file system is used for
499	// logging purposes.
500	Space int32
501}
502
503// Information about a logger definition version.
504type LoggerDefinitionVersion struct {
505
506	// A list of loggers.
507	Loggers []Logger
508}
509
510// Information about a resource.
511type Resource struct {
512
513	// The resource ID, used to refer to a resource in the Lambda function
514	// configuration. Max length is 128 characters with pattern ''[a-zA-Z0-9:_-]+''.
515	// This must be unique within a Greengrass group.
516	//
517	// This member is required.
518	Id *string
519
520	// The descriptive resource name, which is displayed on the AWS IoT Greengrass
521	// console. Max length 128 characters with pattern ''[a-zA-Z0-9:_-]+''. This must
522	// be unique within a Greengrass group.
523	//
524	// This member is required.
525	Name *string
526
527	// A container of data for all resource types.
528	//
529	// This member is required.
530	ResourceDataContainer *ResourceDataContainer
531}
532
533// A policy used by the function to access a resource.
534type ResourceAccessPolicy struct {
535
536	// The ID of the resource. (This ID is assigned to the resource when you create the
537	// resource definiton.)
538	//
539	// This member is required.
540	ResourceId *string
541
542	// The permissions that the Lambda function has to the resource. Can be one of
543	// ''rw'' (read/write) or ''ro'' (read-only).
544	Permission Permission
545}
546
547// A container for resource data. The container takes only one of the following
548// supported resource data types: ''LocalDeviceResourceData'',
549// ''LocalVolumeResourceData'', ''SageMakerMachineLearningModelResourceData'',
550// ''S3MachineLearningModelResourceData'', ''SecretsManagerSecretResourceData''.
551type ResourceDataContainer struct {
552
553	// Attributes that define the local device resource.
554	LocalDeviceResourceData *LocalDeviceResourceData
555
556	// Attributes that define the local volume resource.
557	LocalVolumeResourceData *LocalVolumeResourceData
558
559	// Attributes that define an Amazon S3 machine learning resource.
560	S3MachineLearningModelResourceData *S3MachineLearningModelResourceData
561
562	// Attributes that define an Amazon SageMaker machine learning resource.
563	SageMakerMachineLearningModelResourceData *SageMakerMachineLearningModelResourceData
564
565	// Attributes that define a secret resource, which references a secret from AWS
566	// Secrets Manager.
567	SecretsManagerSecretResourceData *SecretsManagerSecretResourceData
568}
569
570// Information about a resource definition version.
571type ResourceDefinitionVersion struct {
572
573	// A list of resources.
574	Resources []Resource
575}
576
577// The owner setting for downloaded machine learning resources.
578type ResourceDownloadOwnerSetting struct {
579
580	// The group owner of the resource. This is the name of an existing Linux OS group
581	// on the system or a GID. The group's permissions are added to the Lambda process.
582	//
583	// This member is required.
584	GroupOwner *string
585
586	// The permissions that the group owner has to the resource. Valid values are
587	// ''rw'' (read/write) or ''ro'' (read-only).
588	//
589	// This member is required.
590	GroupPermission Permission
591}
592
593// Runtime configuration for a thing.
594type RuntimeConfiguration struct {
595
596	// Configuration for telemetry service.
597	TelemetryConfiguration *TelemetryConfiguration
598}
599
600// Attributes that define an Amazon S3 machine learning resource.
601type S3MachineLearningModelResourceData struct {
602
603	// The absolute local path of the resource inside the Lambda environment.
604	DestinationPath *string
605
606	// The owner setting for downloaded machine learning resources.
607	OwnerSetting *ResourceDownloadOwnerSetting
608
609	// The URI of the source model in an S3 bucket. The model package must be in tar.gz
610	// or .zip format.
611	S3Uri *string
612}
613
614// Attributes that define an Amazon SageMaker machine learning resource.
615type SageMakerMachineLearningModelResourceData struct {
616
617	// The absolute local path of the resource inside the Lambda environment.
618	DestinationPath *string
619
620	// The owner setting for downloaded machine learning resources.
621	OwnerSetting *ResourceDownloadOwnerSetting
622
623	// The ARN of the Amazon SageMaker training job that represents the source model.
624	SageMakerJobArn *string
625}
626
627// Attributes that define a secret resource, which references a secret from AWS
628// Secrets Manager. AWS IoT Greengrass stores a local, encrypted copy of the secret
629// on the Greengrass core, where it can be securely accessed by connectors and
630// Lambda functions.
631type SecretsManagerSecretResourceData struct {
632
633	// The ARN of the Secrets Manager secret to make available on the core. The value
634	// of the secret's latest version (represented by the ''AWSCURRENT'' staging label)
635	// is included by default.
636	ARN *string
637
638	// Optional. The staging labels whose values you want to make available on the
639	// core, in addition to ''AWSCURRENT''.
640	AdditionalStagingLabelsToDownload []string
641}
642
643// Information about a subscription.
644type Subscription struct {
645
646	// A descriptive or arbitrary ID for the subscription. This value must be unique
647	// within the subscription definition version. Max length is 128 characters with
648	// pattern ''[a-zA-Z0-9:_-]+''.
649	//
650	// This member is required.
651	Id *string
652
653	// The source of the subscription. Can be a thing ARN, a Lambda function ARN, a
654	// connector ARN, 'cloud' (which represents the AWS IoT cloud), or
655	// 'GGShadowService'.
656	//
657	// This member is required.
658	Source *string
659
660	// The MQTT topic used to route the message.
661	//
662	// This member is required.
663	Subject *string
664
665	// Where the message is sent to. Can be a thing ARN, a Lambda function ARN, a
666	// connector ARN, 'cloud' (which represents the AWS IoT cloud), or
667	// 'GGShadowService'.
668	//
669	// This member is required.
670	Target *string
671}
672
673// Information about a subscription definition version.
674type SubscriptionDefinitionVersion struct {
675
676	// A list of subscriptions.
677	Subscriptions []Subscription
678}
679
680// Configuration settings for running telemetry.
681type TelemetryConfiguration struct {
682
683	// Configure telemetry to be on or off.
684	//
685	// This member is required.
686	Telemetry Telemetry
687
688	// Synchronization status of the device reported configuration with the desired
689	// configuration.
690	ConfigurationSyncStatus ConfigurationSyncStatus
691}
692
693// Configuration settings for running telemetry.
694type TelemetryConfigurationUpdate struct {
695
696	// Configure telemetry to be on or off.
697	//
698	// This member is required.
699	Telemetry Telemetry
700}
701
702// Information about a version.
703type VersionInformation struct {
704
705	// The ARN of the version.
706	Arn *string
707
708	// The time, in milliseconds since the epoch, when the version was created.
709	CreationTimestamp *string
710
711	// The ID of the parent definition that the version is associated with.
712	Id *string
713
714	// The ID of the version.
715	Version *string
716}
717