AWS IoT Greengrass
Developer Guide, Version 2
AWS IoT Greengrass: Developer Guide, Version 2
Copyright © Amazon Web Services, Inc. and/or its affiliates. All rights reserved.
Amazon's trademarks and trade dress may not be used in connection with any product or service that is not Amazon's, in any manner that is likely to cause confusion among customers, or in any manner that disparages or discredits Amazon. All other trademarks not owned by Amazon are the property of their respective owners, who may or may not be affiliated with, connected to, or sponsored by Amazon.
Table of Contents
What is AWS IoT Greengrass? ... 1
For first-time users ... 1
For existing users ... 1
How AWS IoT Greengrass works ... 2
Key concepts ... 2
Features of AWS IoT Greengrass ... 4
Greengrass feature compatibility by operating system ... 5
Move from Version 1 ... 8
Differences between V1 and V2 ... 8
Run V1 applications on V2 ... 10
What's new in Version 2 ... 12
AWS IoT Greengrass Core v2.5.3 software update ... 13
AWS IoT Greengrass Core v2.5.2 software update ... 14
AWS IoT Greengrass Core v2.5.1 software update ... 15
AWS IoT Greengrass Core v2.5.0 software update ... 16
AWS IoT Greengrass Core v2.4.0 software update ... 19
AWS IoT Greengrass Core v2.3.0 software update ... 21
AWS IoT Greengrass Core v2.2.0 software update ... 22
AWS IoT Greengrass Core v2.1.0 software update ... 24
AWS IoT Greengrass Core v2.0.5 software update ... 29
AWS IoT Greengrass Core v2.0.4 software update ... 30
Getting started tutorial ... 32
Prerequisites ... 32
Step 1: Set up an AWS account ... 33
Step 2: Set up your environment ... 34
Step 3: Install the AWS IoT Greengrass Core software ... 37
(Optional) Run the Greengrass software (Linux) ... 42
Verify the Greengrass CLI installation on the device ... 43
Step 4: Develop and test a component on your device ... 44
Step 5: Create your component in the AWS IoT Greengrass service ... 52
Step 6: Deploy your component ... 60
Next steps ... 62
Setting up Greengrass core devices ... 64
Supported platforms and requirements ... 64
Supported platforms ... 64
Device requirements ... 65
Lambda function requirements ... 66
Feature considerations for Windows devices ... 67
Set up an AWS account ... 68
Install the AWS IoT Greengrass Core software ... 69
Install with automatic provisioning ... 71
Install with manual provisioning ... 78
Install with fleet provisioning ... 100
Install with custom provisioning ... 127
Installer arguments ... 136
Run the AWS IoT Greengrass Core software ... 138
Check if the AWS IoT Greengrass Core software runs as a system service ... 139
Run the AWS IoT Greengrass Core software as a system service ... 140
Run the AWS IoT Greengrass Core software without a system service ... 140
Run AWS IoT Greengrass in Docker ... 141
Supported platforms and requirements ... 141
Software downloads ... 142
Choose how to provision AWS resources ... 143
Build the AWS IoT Greengrass image from a Dockerfile ... 143
Run AWS IoT Greengrass in Docker with automatic provisioning ... 147
Run AWS IoT Greengrass in Docker with manual provisioning ... 152
Troubleshooting AWS IoT Greengrass in a Docker container ... 163
Configure the AWS IoT Greengrass Core software ... 165
Deploy the Greengrass nucleus component ... 165
Configure the Greengrass nucleus as a system service ... 165
Control memory allocation with JVM options ... 168
Configure the user that runs components ... 169
Configure system resource limits ... 172
Connect on port 443 or through a network proxy ... 173
Configure MQTT timeouts and cache settings ... 177
Update the AWS IoT Greengrass Core software (OTA) ... 178
Requirements ... 178
Considerations for core devices ... 178
Greengrass nucleus update behavior ... 179
Perform an OTA update ... 180
Uninstall the AWS IoT Greengrass Core software ... 180
AWS-provided components ... 183
Greengrass nucleus ... 189
Versions ... 190
Operating system ... 190
Requirements ... 190
Dependencies ... 190
Download and installation ... 190
Configuration ... 191
Local log file ... 198
Changelog ... 198
Client device auth ... 203
Versions ... 204
Type ... 204
Operating system ... 204
Requirements ... 204
Dependencies ... 205
Configuration ... 206
Local log file ... 209
Changelog ... 210
CloudWatch metrics ... 210
Versions ... 211
Type ... 211
Operating system ... 211
Requirements ... 212
Dependencies ... 214
Configuration ... 216
Input data ... 220
Output data ... 222
Licenses ... 223
Local log file ... 223
Changelog ... 224
See also ... 224
Docker application manager ... 225
Versions ... 225
Type ... 225
Operating system ... 225
Requirements ... 225
Dependencies ... 227
Configuration ... 228
Local log file ... 228
Changelog ... 229
See also ... 229
Edge connector for Kinesis Video Streams ... 229
Versions ... 230
Type ... 231
Operating system ... 231
Requirements ... 231
Dependencies ... 233
Configuration ... 233
Licenses ... 233
Usage ... 234
Local log file ... 234
Changelog ... 234
See also ... 234
Greengrass CLI ... 234
Versions ... 235
Type ... 236
Operating system ... 236
Requirements ... 236
Dependencies ... 236
Configuration ... 237
Local log file ... 238
Changelog ... 239
AWS IoT Device Defender ... 240
Versions ... 240
Type ... 241
Operating system ... 241
Requirements ... 241
Dependencies ... 242
Configuration ... 244
Input data ... 247
Output data ... 247
Local log file ... 248
Licenses ... 249
Changelog ... 249
IP detector ... 249
Versions ... 250
Type ... 250
Operating system ... 250
Requirements ... 250
Dependencies ... 251
Configuration ... 252
Local log file ... 252
Changelog ... 253
Kinesis Data Firehose ... 253
Versions ... 254
Type ... 254
Operating system ... 254
Requirements ... 254
Dependencies ... 256
Configuration ... 258
Input data ... 260
Output data ... 261
Local log file ... 261
Licenses ... 262
Changelog ... 262
See also ... 262
Lambda launcher ... 262
Versions ... 263
Type ... 263
Operating system ... 263
Requirements ... 263
Dependencies ... 263
Configuration ... 264
Local log file ... 264
Changelog ... 264
Lambda manager ... 265
Versions ... 265
Operating system ... 265
Type ... 265
Requirements ... 266
Dependencies ... 266
Configuration ... 267
Local log file ... 267
Changelog ... 268
Lambda runtimes ... 268
Versions ... 269
Type ... 269
Operating system ... 269
Requirements ... 269
Dependencies ... 269
Configuration ... 269
Local log file ... 269
Changelog ... 269
Legacy subscription router ... 270
Versions ... 270
Type ... 270
Operating system ... 271
Dependencies ... 271
Configuration ... 272
Local log file ... 275
Changelog ... 275
Local debug console ... 275
Versions ... 276
Type ... 276
Operating system ... 276
Requirements ... 276
Dependencies ... 276
Configuration ... 278
Usage ... 279
Local log file ... 282
Changelog ... 283
Log manager ... 283
Versions ... 284
Type ... 284
Operating system ... 285
Requirements ... 285
Dependencies ... 286
Configuration ... 287
Usage ... 297
Local log file ... 298
Changelog ... 298
Machine learning components ... 299
Lookout for Vision Edge Agent ... 304
SageMaker Edge Manager ... 307
DLR image classification ... 314
DLR object detection ... 320
DLR image classification model store ... 327
DLR object detection model store ... 330
DLR installer ... 333
TensorFlow Lite image classification ... 338
TensorFlow Lite object detection ... 344
TensorFlow Lite image classification model store ... 349
TensorFlow Lite object detection model store ... 352
TensorFlow Lite installer ... 354
Modbus-RTU protocol adapter ... 359
Versions ... 360
Type ... 360
Operating system ... 360
Requirements ... 360
Dependencies ... 361
Configuration ... 363
Input data ... 365
Output data ... 366
Modbus RTU requests and responses ... 368
Local log file ... 374
Licenses ... 374
Changelog ... 375
MQTT bridge ... 375
Versions ... 376
Type ... 376
Operating system ... 376
Requirements ... 376
Dependencies ... 376
Configuration ... 377
Local log file ... 379
Changelog ... 380
MQTT broker (Moquette) ... 380
Versions ... 381
Type ... 381
Operating system ... 381
Requirements ... 381
Dependencies ... 381
Configuration ... 382
Local log file ... 383
Changelog ... 383
Nucleus telemetry emitter ... 383
Versions ... 384
Type ... 384
Operating system ... 384
Dependencies ... 384
Configuration ... 385
Output data ... 386
Usage ... 389
Local log file ... 389
Changelog ... 390
PKCS#11 provider ... 390
Versions ... 390
Type ... 390
Operating system ... 391
Requirements ... 391
Dependencies ... 392
Configuration ... 392
Local log file ... 393
Changelog ... 393
Secret manager ... 393
Versions ... 394
Type ... 394
Operating system ... 394
Requirements ... 394
Dependencies ... 395
Configuration ... 396
Local log file ... 397
Changelog ... 398
Secure tunneling ... 398
Versions ... 399
Type ... 399
Operating system ... 399
Requirements ... 399
Dependencies ... 399
Configuration ... 401
Local log file ... 402
Licenses ... 402
See also ... 402
Changelog ... 402
Shadow manager ... 403
Versions ... 403
Type ... 403
Operating system ... 404
Requirements ... 404
Dependencies ... 404
Configuration ... 405
Local log file ... 410
Changelog ... 410
Amazon SNS ... 411
Versions ... 411
Type ... 412
Operating system ... 412
Requirements ... 412
Dependencies ... 413
Configuration ... 415
Input data ... 417
Output data ... 418
Local log file ... 419
Licenses ... 419
Changelog ... 419
Stream manager ... 420
Versions ... 420
Type ... 420
Operating system ... 420
Requirements ... 421
Dependencies ... 421
Configuration ... 423
Local log file ... 425
Changelog ... 425
Systems Manager Agent ... 426
Versions ... 426
Type ... 426
Operating system ... 426
Requirements ... 426
Dependencies ... 428
Configuration ... 428
Local log file ... 429
See also ... 430
Changelog ... 430
Token exchange service ... 430
Versions ... 431
Type ... 431
Operating system ... 431
Dependencies ... 431
Configuration ... 431
Local log file ... 431
Changelog ... 432
IoT SiteWise OPC-UA collector ... 432
Versions ... 432
Type ... 432
Operating system ... 433
Requirements ... 433
Dependencies ... 433
Configuration ... 433
Output data ... 433
Local log file ... 434
Licenses ... 434
Changelog ... 434
See also ... 434
IoT SiteWise publisher ... 434
Versions ... 435
Type ... 435
Operating system ... 435
Requirements ... 435
Dependencies ... 436
Configuration ... 436
Input data ... 436
Local log file ... 436
Licenses ... 437
Changelog ... 437
See also ... 437
IoT SiteWise processor ... 437
Versions ... 438
Type ... 438
Operating system ... 438
Requirements ... 438
Dependencies ... 440
Configuration ... 440
Local log file ... 440
Licenses ... 440
Changelog ... 441
See also ... 441
Community components ... 442
Greengrass development tools ... 443
Greengrass Development Kit CLI ... 443
Prerequisites ... 444
Changelog ... 444
Install or update the Greengrass Development Kit CLI ... 445
GDK CLI commands ... 446
GDK CLI configuration file ... 451
Greengrass Command Line Interface ... 455
Install the Greengrass CLI ... 455
Greengrass CLI commands ... 457
Develop components ... 467
Component lifecycle ... 468
Component types ... 468
Create components ... 469
Create a component (GDK CLI) ... 470
Create a component (shell commands) ... 475
Test components with local deployments ... 477
Publish components to deploy ... 479
Publish a component (GDK CLI) ... 479
Publish a component (shell commands) ... 480
Interact with AWS services ... 482
Run a Docker container ... 485
Requirements ... 485
Run a Docker container from a public image in Amazon ECR or Docker Hub ... 488
Run a Docker container from a private image in Amazon ECR ... 490
Run a Docker container from an image in Amazon S3 ... 491
Use interprocess communication in Docker container components ... 494
Use AWS credentials in Docker container components (Linux) ... 496
Use stream manager in Docker container components (Linux) ... 498
Recipe reference ... 500
Recipe format ... 501
Recipe variables ... 512
Recipe examples ... 514
Environment variables ... 518
Deploy components to devices ... 519
Create deployments ... 522
Update component configurations ... 528
Revise deployments ... 534
Cancel deployments ... 535
Check deployment status ... 536
Check deployment status ... 536
Check device deployment status ... 536
Logging and monitoring ... 538
Monitoring tools ... 538
Monitor Greengrass logs ... 538
Access file system logs ... 539
Access CloudWatch Logs ... 541
Access system service logs ... 542
Enable logging to CloudWatch Logs ... 542
Configure logging for AWS IoT Greengrass ... 543
AWS CloudTrail logs ... 544
Log API calls with CloudTrail ... 545
AWS IoT Greengrass V2 information in CloudTrail ... 545
Understanding AWS IoT Greengrass V2 log file entries ... 546
Gather system health telemetry data ... 547
Telemetry metrics ... 548
Configure telemetry agent settings ... 549
Subscribe to telemetry data in EventBridge ... 549
Check core device status ... 553
Check health of a core device ... 553
Check health of a core device group ... 554
Check core device component status ... 554
Run Lambda functions ... 555
Requirements ... 555
Configure Lambda function lifecycle ... 556
Configure Lambda function containerization ... 556
Import a Lambda function as a component (console) ... 558
Step 1: Choose a Lambda function to import ... 558
Step 2: Configure Lambda function parameters ... 559
Step 3: (Optional) Specify supported platforms for the Lambda function ... 560
Step 4: (Optional) Specify component dependencies for the Lambda function ... 560
Step 5: (Optional) Run the Lambda function in a container ... 561
Step 6: Create the Lambda function component ... 562
Import a Lambda function (CLI) ... 562
Step 1: Define the Lambda function configuration ... 562
Step 2: Create the Lambda function component ... 575
Communicate with the Greengrass nucleus, other components, and AWS IoT Core ... 577
Supported SDKs ... 577
Connect to the AWS IoT Greengrass Core IPC service ... 578
Authorize components to perform IPC operations ... 584
Subscribe to IPC event streams ... 586
Define subscription handlers ... 586
Best practices for subscription handlers ... 587
Example subscription handlers ... 588
Publish/subscribe local messages ... 593
Minimum SDK versions ... 593
Authorization ... 593
PublishToTopic ... 594
SubscribeToTopic ... 598
Examples ... 603
Publish/subscribe AWS IoT Core MQTT messages ... 618
Minimum SDK versions ... 619
Authorization ... 619
PublishToIoTCore ... 620
SubscribeToIoTCore ... 623
Examples ... 629
Interact with component lifecycle ... 634
Minimum SDK versions ... 635
Authorization ... 635
UpdateState ... 636
SubscribeToComponentUpdates ... 636
DeferComponentUpdate ... 637
PauseComponent ... 638
ResumeComponent ... 638
Interact with component configuration ... 639
Minimum SDK versions ... 640
GetConfiguration ... 640
UpdateConfiguration ... 641
SubscribeToConfigurationUpdate ... 641
SubscribeToValidateConfigurationUpdates ... 642
SendConfigurationValidityReport ... 643
Retrieve secret values ... 644
Minimum SDK versions ... 644
Authorization ... 644
GetSecretValue ... 645
Examples ... 648
Interact with local shadows ... 652
Minimum SDK versions ... 652
Authorization ... 652
GetThingShadow ... 655
UpdateThingShadow ... 659
DeleteThingShadow ... 663
ListNamedShadowsForThing ... 666
Interact with local IoT devices ... 671
Tutorial: Connect and test client devices ... 671
Prerequisites ... 672
Review and update the core device AWS IoT policy ... 672
Enable client device support ... 673
Connect client devices ... 676
Develop a component that interacts with client devices ... 678
Client device components ... 683
Connect client devices to core devices ... 676
Requirements ... 684
Greengrass components for client device support ... 691
Configure cloud discovery (console) ... 692
Configure cloud discovery (AWS CLI) ... 692
Associate client devices ... 692
Manage core device endpoints ... 694
Test communications ... 698
Greengrass discovery RESTful API ... 705
Relay MQTT messages between client devices and AWS IoT Core ... 710
Configure and deploy the MQTT bridge component ... 710
Relay MQTT messages ... 711
Interact with client devices in components ... 711
Configure and deploy the MQTT bridge component ... 712
Receive MQTT messages from client devices ... 713
Send MQTT messages to client devices ... 713
Troubleshooting ... 713
Greengrass discovery issues ... 713
Interact with device shadows ... 719
Interact with shadows in components ... 719
Retrieve and modify shadow states ... 719
React to shadow state changes ... 720
Sync local device shadows with AWS IoT Core ... 721
Prerequisites ... 722
Configure the shadow manager component ... 722
Sync local shadows ... 723
Manage data streams ... 724
Stream management workflow ... 724
Requirements ... 725
Data security ... 725
Local data security ... 725
Client authentication ... 726
See also ... 726
Create custom components that use stream manager ... 726
Define component recipes that use stream manager ... 727
Connect to stream manager in application code ... 735
Use StreamManagerClient to work with streams ... 737
Create message stream ... 737
Append message ... 740
Read messages ... 744
List streams ... 746
Describe message stream ... 747
Update message stream ... 748
Delete message stream ... 751
See also ... 752
Export configurations for supported cloud destinations ... 752
Configure stream manager ... 762
Stream manager parameters ... 763
See also ... 764
Perform machine learning inference ... 765
How AWS IoT Greengrass ML inference works ... 765
What's different in AWS IoT Greengrass Version 2? ... 766
Requirements ... 766
Supported model sources ... 766
Supported runtimes ... 767
Machine learning components ... 767
Perform sample image classification inference ... 772
Prerequisites ... 772
Step 1: Subscribe to the default notifications topic ... 773
Step 2: Deploy the TensorFlow Lite image classification component ... 773
Step 3: View inference results ... 774
Next steps ... 776
Perform sample image classification inference on images from a camera ... 776
Prerequisites ... 776
Step 1: Configure the camera module on your device ... 777
Step 2: Verify your subscription to the default notifications topic ... 779
Step 3: Modify the TensorFlow Lite image classification component configuration and deploy it . 779 Step 4: View inference results ... 781
Next steps ... 781
Use SageMaker Edge Manager ... 781
How it works ... 782
Requirements ... 782
Get started with SageMaker Edge Manager ... 783
Use Lookout for Vision ... 789
Customize your machine learning components ... 790
Modify the configuration of a public inference component ... 791
Use a custom model with the sample inference component ... 792
Create custom machine learning components ... 794
Create a custom inference component ... 796
Troubleshooting ... 801
Failed to fetch library ... 802
Cannot open shared object file ... 802
<library> not found ... 802
No CUDA-capable device is detected ... 802
No such file or directory ... 802
Memory errors ... 803
Disk space errors ... 803
Timeout errors ... 803
Manage core devices with AWS Systems Manager ... 804
Install the Systems Manager Agent ... 804
Step 1: Complete general Systems Manager setup steps ... 805
Step 2: Create an IAM service role for Systems Manager ... 805
Step 3: Add permissions to the token exchange role ... 805
Step 4: Deploy the Systems Manager Agent component ... 808
Step 5: Verify core device registration with Systems Manager ... 810
Uninstall the Systems Manager Agent ... 811
Step 1: Deregister the core device from Systems Manager ... 811
Step 2: Uninstall the Systems Manager Agent component ... 811
Step 3: Uninstall the Systems Manager Agent software ... 812
Security ... 813
Data protection ... 813
Data encryption ... 814
Hardware security integration ... 815
Device authentication and authorization ... 823
X.509 certificates ... 824
AWS IoT policies ... 825
Update a core device's AWS IoT policy ... 828
Minimal AWS IoT policy ... 830
Minimal AWS IoT policy to support client devices ... 832
Minimal AWS IoT policy for client devices ... 833
Identity and access management ... 835
Audience ... 835
Authenticating with identities ... 835
Managing access using policies ... 837
See also ... 839
How AWS IoT Greengrass works with IAM ... 839
Identity-based policy examples ... 842
Authorize core devices to interact with AWS services ... 843
Minimal IAM policy for installer to provision resources ... 847
Greengrass service role ... 849
AWS managed policies ... 855
Cross-service confused deputy prevention ... 858
Troubleshooting identity and access issues ... 859
Allow device traffic through a proxy or firewall ... 860
Endpoints for basic operation ... 861
Endpoints for installation with automatic provisioning ... 862
Endpoints for AWS-provided components ... 863
Compliance validation ... 863
Resilience ... 864
Infrastructure security ... 864
Configuration and vulnerability analysis ... 865
Code integrity ... 865
VPC endpoints (AWS PrivateLink) ... 866
Considerations for AWS IoT Greengrass VPC endpoints ... 867
Create an interface VPC endpoint for AWS IoT Greengrass control plane operations ... 867
Creating a VPC endpoint policy for AWS IoT Greengrass ... 867
Security best practices ... 868
Grant minimum possible permissions ... 868
Don't hardcode credentials in Greengrass components ... 868
Don't log sensitive information ... 868
Keep your device clock in sync ... 869
See also ... 869
Using AWS IoT Device Tester for AWS IoT Greengrass V2 ... 870
AWS IoT Greengrass qualification suite ... 870
Custom test suites ... 871
Supported versions of AWS IoT Device Tester for AWS IoT Greengrass V2 ... 871
Latest IDT version for AWS IoT Greengrass V2 ... 871
Unsupported versions of AWS IoT Device Tester for AWS IoT Greengrass V2 ... 872
Use IDT to run the AWS IoT Greengrass qualification suite ... 874
Test suite versions ... 874
Test group descriptions ... 874
Prerequisites ... 876
Configure your device to run IDT tests ... 884
Configure IDT settings ... 890
Run the AWS IoT Greengrass qualification suite ... 896
Understanding results and logs ... 899
Use IDT to develop and run your own test suites ... 901
Download the latest version of IDT for AWS IoT Greengrass ... 876
Test suite creation workflow ... 902
Tutorial: Build and run the sample IDT test suite ... 902
Tutorial: Develop a simple IDT test suite ... 906
Create IDT test suite configuration files ... 912
Configure the IDT test orchestrator ... 917
Configure the IDT state machine ... 922
Create IDT test case executables ... 938
Use the IDT context ... 943
Configure settings for test runners ... 946
Debug and run custom test suites ... 953
Review IDT test results and logs ... 955
IDT usage metrics ... 959
Troubleshooting IDT for AWS IoT Greengrass V2 ... 964
Where to look for errors ... 964
Resolving IDT for AWS IoT Greengrass V2 errors ... 964
Support policy for AWS IoT Device Tester for AWS IoT Greengrass ... 969
Troubleshooting ... 970
View AWS IoT Greengrass Core software and component logs ... 970
AWS IoT Greengrass Core software issues ... 970
Unable to set up core device ... 971
Unable to set up nucleus as a system service ... 971
Unable to connect to AWS IoT Core ... 971
Out of memory error ... 971
Unable to install Greengrass CLI ... 971
User root is not allowed to execute ... 972
Failed to map segment from shared object: operation not permitted ... 972
software.amazon.awssdk.services.iam.model.IamException: The security token included in the request is invalid ... 972
Error: com.aws.greengrass.security.provider.pkcs11.PKCS11CryptoKeyService: Private key or certificate with label <label> does not exist ... 973
AWS IoT Greengrass cloud issues ... 973
An error occurred (AccessDeniedException) when calling the CreateComponentVersion operation: User: arn:aws:iam::123456789012:user/<username> is not authorized to perform: null ... 973
Core device deployment issues ... 974
Error: com.aws.greengrass.componentmanager.exceptions.PackageDownloadException: Failed to download artifact ... 974
Error: com.aws.greengrass.componentmanager.exceptions.ArtifactChecksumMismatchException: Integrity check for downloaded artifact failed. Probably due to file corruption. ... 975
Error: com.aws.greengrass.componentmanager.exceptions.NoAvailableComponentVersionException: Failed to negotiate component <name> version with cloud and no local applicable version satisfying requirement <requirements> ... 975
software.amazon.awssdk.services.secretsmanager.model.SecretsManagerException: User: <user> is not authorized to perform: secretsmanager:GetSecretValue on resource: <arn> ... 976
Info: com.aws.greengrass.deployment.exceptions.RetryableDeploymentDocumentDownloadException: Greengrass Cloud Service returned an error when getting full deployment configuration ... 976
Warn: com.aws.greengrass.deployment.DeploymentService: Failed to get thing group hierarchy 977 Info: com.aws.greengrass.deployment.DeploymentDocumentDownloader: Calling Greengrass cloud to get full deployment configuration ... 977
Core device component issues ... 977
Instant exceeds minimum or maximum instant ... 977
Warn: '<command>' is not recognized as an internal or external command ... 978
Python script doesn't log messages ... 978
com.aws.greengrass.componentmanager.plugins.docker.exceptions.DockerLoginException: Error logging into the registry using credentials - 'The stub received bad data.' ... 979
AWS CLI issues ... 979
Error: Invalid choice: 'greengrassv2' ... 979
Tag your resources ... 981
Using tags in AWS IoT Greengrass V2 ... 981
Tag with the AWS Management Console ... 981
Tag with the AWS IoT Greengrass V2 API ... 981
Using tags with IAM policies ... 982
Open source software ... 983
Document history ... 984
AWS glossary ... 995
For first-time users
What is AWS IoT Greengrass?
AWS IoT Greengrass is an open source Internet of Things (IoT) edge runtime and cloud service that helps you build, deploy and manage IoT applications on your devices. You can use AWS IoT Greengrass to build software that enables your devices to act locally on the data that they generate, run predictions based on machine learning models, and filter and aggregate device data. AWS IoT Greengrass enables your devices to collect and analyze data closer to where that data is generated, react autonomously to local events, and communicate securely with other devices on the local network. Greengrass devices can also communicate securely with AWS IoT Core and export IoT data to the AWS Cloud. You can use AWS IoT Greengrass to build edge applications using pre-built software modules, called components, that can connect your edge devices to AWS services or third-party services. You can also use AWS IoT Greengrass to package and run your software using Lambda functions, Docker containers, native operating system processes, or custom runtimes of your choice.
The following example shows how an AWS IoT Greengrass device interacts with the AWS Cloud.
For first-time users of AWS IoT Greengrass
If you're new to AWS IoT Greengrass, we recommend that you review the following section:
• How AWS IoT Greengrass works (p. 2)
Next, follow the getting started tutorial (p. 32) to try out the basic features of AWS IoT Greengrass.
In this tutorial, you install the AWS IoT Greengrass Core software on a device, develop a Hello World component, and package that component for deployment.
For existing users of AWS IoT Greengrass
For current users of AWS IoT Greengrass, we recommend the following topics to help you understand the new features in AWS IoT Greengrass Version 2, and learn how to move from version 1 to version 2:
• What's new in AWS IoT Greengrass Version 2 (p. 12)
• Move from AWS IoT Greengrass Version 1 (p. 8)
How AWS IoT Greengrass works
How AWS IoT Greengrass works
The AWS IoT Greengrass client software, also called AWS IoT Greengrass Core software, runs on Windows and Linux-based distributions, such as Ubuntu or Raspberry Pi OS, for devices with ARM or x86 architectures. With AWS IoT Greengrass, you can program devices to act locally on the data they generate, run predictions based on machine learning models, and filter and aggregate device data.
AWS IoT Greengrass enables local execution of AWS Lambda functions, Docker containers, native OS processes, or custom runtimes of your choice.
AWS IoT Greengrass provides pre-built software modules called components that let you easily extend edge device functionality. AWS IoT Greengrass components enable you to connect to AWS services and third-party applications at the edge. After you develop your IoT applications, AWS IoT Greengrass enables you to remotely deploy, configure, and manage those applications on your fleet of devices in the field.
The following example shows how an AWS IoT Greengrass device interacts with the AWS IoT Greengrass cloud service and other AWS services in the AWS Cloud.
Key concepts for AWS IoT Greengrass
The following are essential concepts for understanding and using AWS IoT Greengrass:
Greengrass core device
A device that runs the AWS IoT Greengrass Core software. A Greengrass core device is an AWS IoT thing. You can add multiple core devices to AWS IoT thing groups to create and manage groups of Greengrass core devices. For more information, see Setting up AWS IoT Greengrass core devices (p. 64).
Greengrass client device
A device that connects to and communicates with a Greengrass core device over MQTT. A Greengrass client device is an AWS IoT thing. The core device can process, filter, and aggregate data from client
Key concepts
devices that connect to it. You can configure the core device to relay MQTT messages between client devices, the AWS IoT Core cloud service, and Greengrass components. For more information, see Interact with local IoT devices (p. 671).
Client devices can run FreeRTOS or use the AWS IoT Device SDK or Greengrass discovery API (p. 705) to get information about core devices to which they can connect.
Greengrass component
A software module that is deployed to and runs on a Greengrass core device. All software that is developed and deployed with AWS IoT Greengrass is modeled as a component. AWS IoT Greengrass provides pre-built public components that provide features and functionality that you can use in your applications. You can also develop your own custom components, on your local device or in the cloud. After you develop a custom component, you can use the AWS IoT Greengrass cloud service to deploy it to single or multiple core devices. You can create a custom component and deploy that component to a core device. When you do, the core device downloads the following resources to run the component:
• Recipe: A JSON or YAML file that describes the software module by defining component details, configuration, and parameters.
• Artifact: The source code, binaries, or scripts that define the software that will run on your device.
You can create artifacts from scratch, or you can create a component using a Lambda function, a Docker container, or a custom runtime.
• Dependency: The relationship between components that enables you to enforce automatic updates or restarts of dependent components. For example, you can have a secure message processing component dependent on an encryption component. This ensures that any updates to the encryption component automatically update and restart the message processing component.
For more information, see AWS-provided components (p. 183) and Develop AWS IoT Greengrass components (p. 467).
Deployment
The process to send components and apply the desired component configuration to a destination target device, which can be a single Greengrass core device or a group of Greengrass core devices.
Deployments automatically apply any updated component configurations to the target and include any other components that are defined as dependencies. You can also clone an existing deployment to create a new deployment that uses the same components but is deployed to a different target.
Deployments are continuous, which means that any updates you make to the components or the component configuration of a deployment automatically get sent to all destination targets. For more information, see Deploy AWS IoT Greengrass components to devices (p. 519).
AWS IoT Greengrass Core software
The set of all AWS IoT Greengrass software that you install on a core device. AWS IoT Greengrass Core software comprises the following:
• Nucleus: This required component provides the minimum functionality of the AWS IoT Greengrass Core software. The nucleus manages deployments, orchestration, and lifecycle management of other components. It also facilitates communication between AWS IoT Greengrass components locally on an individual device. For more information, see Greengrass nucleus (p. 189).
• Optional components: These configurable components are provided by AWS IoT Greengrass and enable additional features on your edge devices. Depending on your requirements, you can choose the optional components that you want to deploy to your device, such as data streaming, local machine learning inference, or a local command line interface. For more information, see AWS- provided components (p. 183).
You can upgrade your AWS IoT Greengrass Core software by deploying new versions of your components to your device.
Features of AWS IoT Greengrass
Features of AWS IoT Greengrass
AWS IoT Greengrass Version 2 consists of the following elements:
• Software distributions
• The Greengrass nucleus component, which is the minimum installation of the AWS IoT Greengrass Core software. This component manages deployments, orchestration, and lifecycle management of Greengrass components.
• Additional optional components provided by AWS that integrate with services, protocols, and software.
• The AWS IoT Device SDK, which contains the interprocess communication (IPC) SDK and the Greengrass discovery SDK for client devices.
• The Stream Manager SDK.
• Cloud service
• AWS IoT Greengrass V2 API
• AWS IoT Greengrass V2 console
AWS IoT Greengrass Core software
You can use the AWS IoT Greengrass Core software that runs on your edge devices to do the following:
• Process data streams on the local device with automatic exports to the AWS Cloud. For more information, see Manage data streams on the AWS IoT Greengrass Core (p. 724).
• Support MQTT messaging between AWS IoT and components. For more information, see Publish/
subscribe AWS IoT Core MQTT messages (p. 618).
• Interact with local devices that connect and communicate over MQTT. For more information, see Interact with local IoT devices (p. 671).
• Support local publish and subscribe messaging between components. For more information, see Publish/subscribe local messages (p. 593).
• Deploy and invoke components and Lambda functions. For more information, see Deploy AWS IoT Greengrass components to devices (p. 519).
• Manage component lifecycles, such as with support for install and run scripts. For more information, see AWS IoT Greengrass component recipe reference (p. 500).
• Perform secure, over-the-air (OTA) software updates of the AWS IoT Greengrass Core software and custom components. For more information, see Update the AWS IoT Greengrass Core software (OTA) (p. 178) and Deploy AWS IoT Greengrass components to devices (p. 519).
• Provide secure, encrypted storage of local secrets and controlled access by components. For more information, see Secret manager (p. 393).
• Secure connections between devices and the AWS Cloud with device authentication and authorization.
For more information, see Device authentication and authorization for AWS IoT Greengrass (p. 823).
You configure and manage Greengrass core devices through AWS IoT Greengrass APIs where you create continuous software deployments. For more information, see Deploy AWS IoT Greengrass components to devices (p. 519).
Some features are supported on only certain platforms. For more information, see Greengrass feature compatibility by operating system (p. 5).
For more information about supported platforms, requirements, and downloads, see Setting up AWS IoT Greengrass core devices (p. 64).
By downloading this software, you agree to the Greengrass Core Software License Agreement.
Greengrass feature compatibility by operating system
Greengrass feature compatibility by operating system
AWS IoT Greengrass supports devices that run various operating systems. Some features are supported on only certain operating systems. Use the following tables to learn which features are available for each supported operating system. For more information about supported operating systems, requirements, and how to set up Greengrass core devices, see Setting up AWS IoT Greengrass core devices (p. 64).
Messaging
Feature Linux Windows
Exchange MQTT messages between AWS IoT and
components Yes Yes
Exchange local publish/
subscribe messages between
components Yes Yes
Interact with local IoT devices
over MQTT Yes Yes
Interact with local Modbus-RTU devices using the Modbus-RTU
component Yes No
Security
Feature Linux Windows
Secure connections with device
authentication and authorization Yes Yes
Deploy and access secure, encrypted secrets from AWS
Secrets Manager Yes Yes
Use a hardware security module (HSM) to securely store the device's private key and certificate
Yes No
Audit core devices with AWS IoT
Device Defender Yes Yes
Use AWS credentials to interact
with AWS services Yes Yes
Installation
Feature Linux Windows
Install AWS IoT Greengrass with
automatic provisioning Yes Yes
Greengrass feature compatibility by operating system
Feature Linux Windows
Install AWS IoT Greengrass with
manual provisioning Yes Yes
Install AWS IoT Greengrass with
AWS IoT fleet provisioning Yes Yes
Install AWS IoT Greengrass with
custom provisioning plugins Yes Yes
Run AWS IoT Greengrass in a Docker container using a
prebuilt Docker image Yes No
Remote maintenance and updates
Feature Linux Windows
Perform secure, over-the-air
(OTA) software updates Yes Yes
Manage core devices with AWS
Systems Manager Yes No
Connect to core devices with
AWS IoT secure tunneling Yes No
Machine learning
Feature Linux Windows
Perform machine learning inference using Amazon
SageMaker Edge Manager Yes Yes
Perform machine learning inference using Amazon Lookout
for Vision Yes No
Perform machine learning
inference using DLR Yes Yes
Perform machine learning
inference using TensorFlow Yes Yes
Component features
Feature Linux Windows
Deploy and invoke Lambda
functions Yes No
Run Docker containers in
components Yes Yes
Greengrass feature compatibility by operating system
Feature Linux Windows
Process and export high-volume data streams using stream
manager Yes Yes
Manage component lifecycles
with lifecycle scripts Yes Yes
Interact with device shadows Yes Yes
Upload logs to Amazon
CloudWatch Logs Yes Yes
Upload data to Amazon CloudWatch metrics using the
CloudWatch metrics component Yes Yes
Publish messages to Amazon Simple Notification Service using
the Amazon SNS component Yes No
Publish data to Amazon Kinesis Data Firehose delivery streams
using stream manager Yes Yes
Publish data to Amazon Kinesis Data Firehose delivery streams using the Kinesis Data Firehose component
Yes No
Gather and act on real-time
system telemetry metrics Yes Yes
Configure system resource limits
for component processes Yes No
Pause and resume component
processes Yes No
Integrate with AWS IoT SiteWise using the AWS IoT SiteWise
components Yes No
Publish video streams to Amazon Kinesis Video Streams using the edge connector for Kinesis Video Streams component
Yes No
Component development
Feature Linux Windows
Develop components locally on
core devices Yes Yes
Move from Version 1
Feature Linux Windows
Interact with a core device using
the AWS IoT Greengrass CLI Yes Yes
Interact with a core device using
the local debug console Yes Yes
Use the AWS IoT Device SDK for
Python in custom components Yes Yes
Use the AWS IoT Device SDK for
C++ in custom components Yes Yes
Use the AWS IoT Device SDK for
Java in custom components Yes Yes
Device certification
Feature Linux Windows
Use AWS IoT Device Tester for AWS IoT Greengrass V2 to
validate IoT devices Yes Yes
Move from AWS IoT Greengrass Version 1
AWS IoT Greengrass Version 2 is a new major version release of the AWS IoT Greengrass Core software, APIs, and console. You can't use the AWS IoT Greengrass Core software v1.x with the V2 APIs. Likewise, you can't use the AWS IoT Greengrass Core software v2.0 with the V1 APIs. However, by using some modifications, you can run your V1 applications on AWS IoT Greengrass V2.
Topics
• Differences between V1 and V2 (p. 8)
• Run AWS IoT Greengrass V1 applications on AWS IoT Greengrass V2 (p. 10)
Differences between V1 and V2
AWS IoT Greengrass V2 introduces new fundamental concepts for devices, fleets, and deployable software. This section describes the V1 concepts that are different in V2.
• AWS IoT Greengrass groups and deployments
In AWS IoT Greengrass V1, a group defines a core device, the settings and software for that core device, and the list of AWS IoT things that connect to that core device.
In AWS IoT Greengrass V2, you use deployments to define the software components and configurations that run on core devices. Each deployment targets a single core device or an AWS IoT thing group that can contain multiple core devices. Deployments to thing groups are continuous, so when you add a core device to a thing group, it receives the software configuration for that fleet. For more information, see Deploy AWS IoT Greengrass components to devices (p. 519).
You can also create local deployments to develop and test custom software components. For more information, see Create AWS IoT Greengrass components (p. 469).
Differences between V1 and V2
• AWS IoT Greengrass Core software and connectors
In AWS IoT Greengrass V1, the AWS IoT Greengrass Core software is a single package that contains the software and all of its features. AWS IoT Greengrass connectors are modules that you deploy to AWS IoT Greengrass V1 core devices.
In AWS IoT Greengrass V2, the AWS IoT Greengrass Core software is modular, so that you can choose what to install to control the memory footprint. The Greengrass nucleus component (p. 189) is the minimum required installation of the AWS IoT Greengrass Core software that handles deployments, orchestration, and lifecycle management of other components. Features such as stream manager, secret manager, and log manager are components that you deploy only when you need those features.
AWS IoT Greengrass V2 also provides some AWS IoT Greengrass V1 connectors as components. For more information, see AWS-provided components (p. 183).
• AWS Lambda functions
In AWS IoT Greengrass V1, Lambda functions define the software that runs on core devices. In each Greengrass group, you define subscriptions and local resources that the function uses. You also define the container parameters for functions that the AWS IoT Greengrass Core software runs in a containerized Lambda runtime environment.
In AWS IoT Greengrass V2, components are the software that run on core devices. Components can consist of any software applications, and each component has a recipe that defines the component's metadata, parameters, dependencies, and scripts to run at each step in the component lifecycle. The recipe also defines the component's artifacts, which are binary files such as scripts, compiled code, and static resources. When you deploy a component to a core device, the core device downloads the component recipe and artifacts to run the component. For more information, see Develop AWS IoT Greengrass components (p. 467).
You can import Lambda functions as components that run in a Lambda runtime environment in AWS IoT Greengrass V2. When you import the Lambda function, you specify the subscriptions, local resources, and container parameters for the function. For more information, see Run AWS IoT Greengrass V1 applications on AWS IoT Greengrass V2 (p. 10)..
• Subscriptions
In AWS IoT Greengrass V1, subscriptions specify where Lambda functions receive event messages to consume as function payloads. Functions subscribe to local publish/subscribe messages and AWS IoT Core MQTT messages.
In AWS IoT Greengrass V2, components manage their own subscriptions to local publish/subscribe and AWS IoT Core MQTT messages. In the component recipe, you define authorization policies to specify which topics the component can use to communicate. In component code, you can use interprocess communication (IPC) for local publish/subscribe messaging and AWS IoT Core MQTT messaging. For more information, see Use the AWS IoT Device SDK to communicate with the Greengrass nucleus, other components, and AWS IoT Core (p. 577).
• Local resources
In AWS IoT Greengrass V1, Lambda functions run in containers that you configure to access volumes and devices on the core device's file system.
In AWS IoT Greengrass V2, components run outside containers, so you don't need to specify which local resources the component can access. You can develop components that work directly with local resources on core devices. You can also develop components that run Docker containers. For more information, see Run a Docker container (p. 485).
NoteWhen you import a containerized Lambda function as a component, you specify the local resources that the function uses.
• Greengrass devices (connected devices)
Run V1 applications on V2
In AWS IoT Greengrass V1, Greengrass devices are AWS IoT things that you add to a Greengrass group to connect to the core device in that group and communicate over MQTT. You must deploy that group each time that you add or remove a connected device. You use subscriptions to relay messages between connected devices, AWS IoT Core, and applications on the core device.
In AWS IoT Greengrass V2, connected devices are called Greengrass client devices, and you associate client devices to core devices to connect them and communicate over MQTT. You can define authorization policies that apply to groups of client devices, so you don't need to create a deployment to add or remove a client device. To relay messages between client devices, AWS IoT Core, and Greengrass components, you can configure an optional MQTT bridge component. For more information, see Interact with local IoT devices (p. 671).
In both AWS IoT Greengrass V1 and AWS IoT Greengrass V2, devices can run FreeRTOS or use the AWS IoT Device SDK or Greengrass discovery API (p. 705) to get information about core devices to which they can connect.
• Local shadow service
In AWS IoT Greengrass V1, the local shadow service is enabled by default, and supports only unnamed classic shadows. You use the Greengrass Core SDK in your Lambda functions to interact with shadows on your devices.
In AWS IoT Greengrass V2, you enable the local shadow service by deploying the shadow manager component. You can then use the AWS IoT Device SDK V2 in Lambda functions, or in custom components, to interact with shadows on your devices.
In both AWS IoT Greengrass V1 and AWS IoT Greengrass V2, you can sync local shadow states with cloud shadows in AWS IoT Core. For more information, see Interact with device shadows (p. 719).
Run AWS IoT Greengrass V1 applications on AWS IoT Greengrass V2
You can run most AWS IoT Greengrass V1 applications on AWS IoT Greengrass V2. You can use AWS- provided components that offer the same functionality as AWS IoT Greengrass connectors, and you can import Lambda functions as components that run on AWS IoT Greengrass V2.
Topics
• Can I run my Greengrass v1.x applications on Greengrass v2.0? (p. 10)
• Run V1 Lambda functions (p. 11)
• Run AWS IoT Greengrass connectors (p. 12)
• Run machine learning inference (p. 12)
• Connect V1 Greengrass devices (p. 12)
Can I run my Greengrass v1.x applications on Greengrass v2.0?
AWS IoT Greengrass provides features that you can use to run your AWS IoT Greengrass Core software v1.x applications on the AWS IoT Greengrass Core software v2.0. However, if your v1.x applications use any of the following listed features, you won't be able to run them on the v2.0 software yet.
• Stream manager telemetry metrics
• The C and C++ Lambda function runtimes.
Run V1 applications on V2
You can develop custom components (p. 467) to build any feature or runtime to run on Greengrass core devices.
Run V1 Lambda functions
You can import Lambda functions as AWS IoT Greengrass V2 components. If your components use features such as stream manager or local secrets, you must define dependencies on the AWS-provided components that package these features' functionality. When you deploy a component, the deployment includes the component dependencies that you specify. You configure these dependent features when you deploy your Lambda function component.
If your Lambda function uses features such as stream manager or local secrets, you must define dependencies on the AWS-provided components that package these features. When you deploy the Lambda function component, the deployment also includes the component for each feature that you define as a dependency. In the deployment, you can configure parameters such as which secrets to deploy to the core device. Not all V1 features require a component dependency for your Lambda function on V2. The following list describes how to use V1 features on V2 in your Lambda function component.
• Stream manager
If your Lambda function uses stream manager, specify aws.greengrass.StreamManager as a component dependency when you import the function. When you deploy the stream manager component, specify the stream manager parameters to set for the target core devices. For more information, see Stream manager (p. 420).
• Local secrets
If your Lambda function uses local secrets, specify aws.greengrass.SecretManager as a component dependency when you import the function. When you deploy the secret manager component, specify the secret resources to deploy to the target core devices. The core device's role alias must point to an IAM role that allows the core device to retrieve the secret resources to deploy.
For more information, see Secret manager (p. 393).
• Subscriptions
If your Lambda function publishes messages to the local publish/subscribe broker or to AWS IoT Core, specify aws.greengrass.LegacySubscriptionRouter as a component dependency when you import the function. When you deploy the legacy subscription router component, specify the subscriptions that the Lambda function uses. For more information, see Legacy subscription router (p. 270).
Note
This component is required only if your Lambda function uses the publish() function in the AWS IoT Greengrass Core SDK. If you update your Lambda function code to use the interprocess communication (IPC)s interface in the V2 AWS IoT Device SDK, you don't need to deploy the legacy subscription router component. For more information, see the following interprocess communication (p. 577) services:
• Publish/subscribe local messages (p. 593)
• Publish/subscribe AWS IoT Core MQTT messages (p. 618)
• Local volumes and devices
If your containerized Lambda function accesses local volumes or devices, specify those volumes and devices when you import the Lambda function. This feature doesn't require a component dependency.
• Local shadows
What's new in Version 2
If your Lambda function interacts with local shadows, you must update the Lambda function code to use the AWS IoT Device SDK V2. You must also specify aws.greengrass.ShadowManager as a component dependency when you import the function.
• Access other AWS services
If your Lambda function uses AWS credentials to make requests to other AWS services, specify aws.greengrass.TokenExchangeService as a component dependency when you import the function. The core device's role alias must point to an IAM role that allows the core device to perform the AWS operations that the Lambda function uses. For more information, see Token exchange service (p. 430) and Authorize core devices to interact with AWS services (p. 843).
For more information, see Run AWS Lambda functions (p. 555).
Run AWS IoT Greengrass connectors
You can deploy AWS-provided components that offer the same functionality of AWS IoT Greengrass connectors. When you create the deployment, you can configure the connectors' parameters. For more information, see the following AWS IoT Greengrass V2 components that provide Greengrass connectors:
• CloudWatch metrics component (p. 210)
• AWS IoT Device Defender component (p. 240)
• Kinesis Data Firehose component (p. 253)
• Modbus-RTU protocol adapter component (p. 359)
• Amazon SNS component (p. 411)
AWS IoT Greengrass V2 doesn't provide a component to replace the Docker application deployment connector, but you can create components that run Docker containers from images. For more information, see Run a Docker container (p. 485).
Run machine learning inference
AWS IoT Greengrass V2 provides sample Amazon SageMaker Neo DLR machine learning components and models. You can use these features for image classification and object detection. To use other machine learning frameworks, such as MXNet and TensorFlow, you can develop your own custom components that use these frameworks.
Connect V1 Greengrass devices
In AWS IoT Greengrass V2, Greengrass devices (or connected devices) are called client devices. AWS IoT Greengrass V2 support for client devices is backward-compatible with AWS IoT Greengrass V1, so you can connect V1 core devices to V2 core devices without changing their application code. To enable client devices to connect a V2 core device, deploy Greengrass components that enable client device support, and associate the client devices to the core device. To relay messages between client devices, the AWS IoT Core cloud service, and Greengrass components (including Lambda functions), deploy and configure the MQTT bridge component (p. 375). You can deploy the IP detector component (p. 249) to automatically detect connectivity information, or you can manually manage endpoints. For more information, see Interact with local IoT devices (p. 671).
What's new in AWS IoT Greengrass Version 2
AWS IoT Greengrass Version 2 is a new major version release of AWS IoT Greengrass that introduces the following features:
AWS IoT Greengrass Core v2.5.3 software update
• Open source edge runtime—The edge runtime is now open source and distributed under the Apache 2.0 license and available on GitHub. You can now view the AWS IoT Greengrass edge runtime code, which allows you to troubleshoot interactions with your application and helps you build more reliable and performant applications running on AWS IoT Greengrass. You can also customize and extend the AWS IoT Greengrass edge runtime to meet your specific hardware and software needs. For more information, see Open source AWS IoT Greengrass Core software (p. 983).
• Improved modularity—You can add or remove pre-built software components based on your use cases, and your device CPU and memory resources. For example, you can choose to include only pre- built AWS IoT Greengrass components, such as stream manager, when you need to process data streams with your application. Or, you can include only machine learning components when you want to perform machine learning inference locally on your devices. For more information, see Develop AWS IoT Greengrass components (p. 467) and AWS-provided components (p. 183).
• New local development tools—AWS IoT Greengrass includes a new command line interface (CLI) that enables you to locally develop and debug applications on your device. In addition, the new local debug console helps you visually debug applications on your device. With these new capabilities, you can develop and debug code on a test device before using the cloud to deploy to your production devices.
For more information, see Greengrass CLI (p. 234) and Local debug console (p. 275).
• Improved fleet deployment features—AWS IoT Greengrass is now integrated with AWS IoT thing groups. This enables you to organize your devices in groups and manage application deployments across your devices with features that control rollout rates, timeouts, and rollbacks. For more information, see Deploy AWS IoT Greengrass components to devices (p. 519).
AWS IoT Greengrass release notes provide details about AWS IoT Greengrass releases—new features, updates and improvements, and general fixes. AWS IoT Greengrass has the following types of releases:
• New feature releases for AWS IoT Greengrass
• AWS IoT Greengrass Core software updates
This section contains all of the AWS IoT Greengrass V2 release notes, latest first, and includes major feature changes and significant bug fixes. For information about additional minor fixes, see the aws- greengrass organization on GitHub.
Release notes
• Release: AWS IoT Greengrass Core v2.5.3 software update on January 6, 2022 (p. 13)
• Release: AWS IoT Greengrass Core v2.5.2 software update on December 3, 2021 (p. 14)
• Release: AWS IoT Greengrass Core v2.5.1 software update on November 23, 2021 (p. 15)
• Release: AWS IoT Greengrass Core v2.5.0 software update on November 12, 2021 (p. 16)
• Release: AWS IoT Greengrass Core v2.4.0 software update on August 3, 2021 (p. 19)
• Release: AWS IoT Greengrass Core v2.3.0 software update on June 29, 2021 (p. 21)
• Release: AWS IoT Greengrass Core v2.2.0 software update on June 18, 2021 (p. 22)
• Release: AWS IoT Greengrass Core v2.1.0 software update on April 26, 2021 (p. 24)
• Release: AWS IoT Greengrass Core v2.0.5 software update on March 09, 2021 (p. 29)
• Release: AWS IoT Greengrass Core v2.0.4 software update on February 04, 2021 (p. 30)
Release: AWS IoT Greengrass Core v2.5.3 software update on January 6, 2022
This release provides version 2.5.3 of the Greengrass nucleus component and the new PKCS#11 provider component.
AWS IoT Greengrass Core v2.5.2 software update
Release date: January 6, 2022 Release highlights
• Hardware security integration—You can now configure the AWS IoT Greengrass Core software to use a private key and certificate that you securely store in a hardware security module (HSM). For more information, see Hardware security integration (p. 815).
Release details
• Public component updates (p. 14)
Public component updates
The following table lists AWS-provided components that include new and updated features.
Important
When you deploy a component, AWS IoT Greengrass installs the latest supported versions of all component dependencies for that component. Because of this, new patch versions of AWS- provided public components might be automatically deployed to your core devices if you add new devices to a thing group, or you update the deployment that targets those devices. Some automatic updates, such as a nucleus update, can cause your devices to restart unexpectedly.
To prevent unintended updates for a component that is running on your device, we recommend that you directly include your preferred version of that component when you create a
deployment (p. 522). For more information about update behavior for AWS IoT Greengrass Core software, see Update the AWS IoT Greengrass Core software (OTA) (p. 178).
Component Details Greengrass
nucleus Version 2.5.3 of the Greengrass nucleus (p. 189) is available.
New features
• Adds support for hardware security integration. You can use a hardware security module (HSM) to securely store the device's private key and certificate. For more information, see Hardware security integration (p. 815).
Bug fixes and improvements
• Fixes an issue with runtime exceptions while the nucleus establishes MQTT connections with AWS IoT Core.
PKCS#11 provider Version 2.0.0 of the PKCS#11 provider component (p. 390) is available.
New features
• Adds support for hardware security integration. You can use a hardware security module (HSM) to securely store the device's private key and certificate. For more information, see Hardware security integration (p. 815).
Release: AWS IoT Greengrass Core v2.5.2 software update on December 3, 2021
This release provides version 2.5.2 of the Greengrass nucleus component.
Release date: December 3, 2021
AWS IoT Greengrass Core v2.5.1 software update
Release details
• Public component updates (p. 15)
Public component updates
The following table lists AWS-provided components that include new and updated features.
Important
When you deploy a component, AWS IoT Greengrass installs the latest supported versions of all component dependencies for that component. Because of this, new patch versions of AWS- provided public components might be automatically deployed to your core devices if you add new devices to a thing group, or you update the deployment that targets those devices. Some automatic updates, such as a nucleus update, can cause your devices to restart unexpectedly.
To prevent unintended updates for a component that is running on your device, we recommend that you directly include your preferred version of that component when you create a
deployment (p. 522). For more information about update behavior for AWS IoT Greengrass Core software, see Update the AWS IoT Greengrass Core software (OTA) (p. 178).
Component Details Greengrass
nucleus Version 2.5.2 of the Greengrass nucleus (p. 189) is available.
Bug fixes and improvements
• Fixes an issue where after the Greengrass nucleus updates, the Windows service fails to start again after you stop it or reboot the device.
AWS IoT Device
Defender Version 3.0.1 of the AWS IoT Device Defender (p. 240) component is available.
This version of the AWS IoT Device Defender component expects different configuration parameters than version 2.x. If you use a non-default configuration for version 2.x, and you want to upgrade from v2.x to v3.x, you must update the component's configuration. For more information, see AWS IoT Device Defender component configuration (p. 244).
New features
• Adds support for core devices that run Windows.
• Changes the component type from Lambda component to generic component. This component now no longer depends on the legacy subscription router component to create subscriptions.
• Adds the new UseInstaller configuration parameter that lets you optionally disable the installation script that installs component dependencies.
Release: AWS IoT Greengrass Core v2.5.1 software update on November 23, 2021
This release provides version 2.5.1 of the Greengrass nucleus component.
Release date: November 23, 2021 Release details
• Public component updates (p. 16)
AWS IoT Greengrass Core v2.5.0 software update
Public component updates
The following table lists AWS-provided components that include new and updated features.
Important
When you deploy a component, AWS IoT Greengrass installs the latest supported versions of all component dependencies for that component. Because of this, new patch versions of AWS- provided public components might be automatically deployed to your core devices if you add new devices to a thing group, or you update the deployment that targets those devices. Some automatic updates, such as a nucleus update, can cause your devices to restart unexpectedly.
To prevent unintended updates for a component that is running on your device, we recommend that you directly include your preferred version of that component when you create a
deployment (p. 522). For more information about update behavior for AWS IoT Greengrass Core software, see Update the AWS IoT Greengrass Core software (OTA) (p. 178).
Component Details Greengrass
nucleus Version 2.5.1 of the Greengrass nucleus (p. 189) is available.
Bug fixes and improvements
• Adds support for 32-bit versions of the Java Runtime Environment (JRE) on Windows.
• Changes thing group removal behavior for core devices whose AWS IoT policy doesn't grant the
greengrass:ListThingGroupsForCoreDevice permission. With this version, the deployment continues, logs a warning, and doesn't remove components when you remove the core device from a thing group.
For more information, see Deploy AWS IoT Greengrass components to devices (p. 519).
• Fixes an issue with system environment variables that the Greengrass nucleus makes available to Greengrass component processes. You can now restart a component for it to use the latest system environment variables.
Release: AWS IoT Greengrass Core v2.5.0 software update on November 12, 2021
This release provides version 2.5.0 of the Greengrass nucleus component, new AWS-provided components, and updates to AWS-provided components.
Release date: November 12, 2021 Release highlights
• Windows device support—You can now run the AWS IoT Greengrass Core software on devices running Windows operating systems. For more information, see Supported platforms and requirements (p. 64) and Greengrass feature compatibility by operating system (p. 5).
• New thing group removal behavior—You can now remove a core device from a thing group to remove that thing group's components in the next deployment to that device.
Important
As a result of this change, a core device's AWS IoT policy must have the
greengrass:ListThingGroupsForCoreDevice permission. If you used the AWS IoT Greengrass Core software installer to provision resources (p. 71), the default AWS IoT policy allows greengrass:*, which includes this permission. For more information, see Device authentication and authorization for AWS IoT Greengrass (p. 823).