Revisit Amazon Web Services re:Invent 2024’s biggest moments and watch keynotes and innovation talks on demand
General questions
What is Amazon IoT Greengrass?
Amazon IoT Greengrass is an Internet of Things (IoT) open source edge runtime and cloud service that helps you build, deploy, and manage device software. Customers use Amazon IoT Greengrass for their IoT applications on millions of devices in homes, factories, vehicles, and businesses. You can program your devices to act locally on the data they generate, execute predictions based on machine learning models, filter and aggregate device data, and only transmit necessary information to the cloud.
AmazonWS IoT Greengrass lets you quickly and easily build intelligent device software. Amazon IoT Greengrass enables local processing, messaging, data management, ML inference, and offers pre-built components to accelerate application development. Amazon IoT Greengrass also provides a secure way to seamlessly connect your edge devices to any of our services as well as to third-party services.
Once software development is complete, Amazon IoT Greengrass enables you to remotely manage and operate software on your devices in the field without needing a firmware update. Amazon IoT Greengrass helps keep your devices up-to-date and makes them smarter over time.
How do I get started using Amazon IoT Greengrass?
Click here to see the Amazon IoT Greengrass getting started guide.
What are the major components of Amazon IoT Greengrass? What does each component do?
Amazon IoT Greengrass consists of a cloud service and two software distribution for IoT devices: Amazon IoT Greengrass Core, Amazon IoT Device SDK, and the Amazon IoT Greengrass SDK. Once the software distribution is installed on your device, you can further add or remove features, components, and manage your IoT device applications using Amazon IoT Greengrass.
The chart below describes the major components. Amazon IoT Greengrass also works together with FreeRTOS. For more information about Amazon IoT Greengrass and FreeRTOS, see the FAQ section: Connecting FreeRTOS and other Devices to Amazon IoT Greengrass.
Purpose | Where it Runs |
|
---|---|---|
Amazon IoT Greengrass Core | Provides local services (compute, messaging, state, security), and communicates locally with devices that run the Amazon IoT Device SDK | CPU-based devices (x86 or Arm) that run a general-purpose OS such as Linux |
Amazon IoT Device SDK | Allows devices to interact locally with Amazon IoT Greengrass Cores | Almost any device that supports C++, Node.js, Java, or Python 2.7, 3.7, and 3.8. |
Amazon IoT Greengrass SDK* | Allows Lambda functions to interact with local services inside an Amazon IoT Greengrass Core | Inside a Lambda function deployed to Amazon IoT Greengrass Core |
*Required for Amazon IoT Greengrass version 1 only
What are Amazon IoT Greengrass Core devices? What minimum hardware specifications are required?
The Amazon IoT Greengrass Core software runs on an IoT device, hub, or gateway to automatically sync and interact with the cloud. Amazon IoT Greengrass Core is designed to run on devices with a general-purpose processor that are powerful enough to run a general-purpose operating system, such as Linux. Amazon IoT Greengrass requires at least 1GHz of compute (either Arm or x86), 96MB* of RAM (v2.0 edge runtime or higher), plus additional resources to accommodate the desired OS, message throughput, and Amazon Lambda execution depending on the use case. Amazon IoT Greengrass Core can run on devices that range from a Raspberry Pi to a server-level appliance.
*Based on an Amazon Web Services study that used the following JDK: JDK version used for the tests: openjdk version "1.8.0_275", OpenJDK Runtime Environment (build 1.8.0_275-8u275-b01-0ubuntu1~18.04-b01), and OpenJDK 64-Bit Server VM (build 25.275-b01, mixed mode). Memory usage may be higher using different inputs.
Which CPU architectures and operating systems is Amazon IoT Greengrass compatible with?
Operating systems and CPU architectures supported by Amazon IoT Greengrass Core and tested for compatibility with Amazon Web Services are listed here.
Other Linux variants may also successfully run IoT Greengrass, but may not have been validated by the Amazon IoT Greengrass team. You can validate other Linux variants for compatibility using the IoT Greengrass dependency checker on GitHub. Alternatively, you can run IoT Greengrass in “process mode” which lowers the compatibility threshold, but removes support for Linux containers.
What devices are compatible with Amazon IoT Greengrass Core, and how can I get started quickly?
You can run Amazon IoT Greengrass Core an on device that meets the minimum hardware and software requirements. You can also self-test your devices to see if they will run optimally with Amazon IoT Greengrass and other Amazon Web Services services using Amazon IoT Device Tester. You can also discover and evaluate devices that are compatible with Amazon IoT Greengrass in the Amazon Web Services Partner Device Catalog.
How can I validate my device will run Amazon IoT Greengrass Core?
To ensure your devices work with Amazon IoT Greengrass Core, test it using the Amazon IoT Device Tester for Amazon IoT Greengrass. Download the tool and read the documentation.
Is there any difference between Amazon IoT Greengrass functionality in the Amazon Web Services China (Beijing) region, operated by Sinnet, and other Amazon Web Services regions?
You can view differences in availability between regions here.
What Amazon Lambda development languages are supported by Amazon IoT Greengrass?
Amazon IoT Greengrass supports Lambda functions authored in the following languages:
- Python 2.7, 3.7, and 3.8
- Node v8.10.0 and v12.x
- Java 8
- C
- C++
- Any language that supports importing C libraries
Which Lambdas can be deployed to Amazon IoT Greengrass?
Any Lambda that uses the Python 2.7, 3.7, or 3.8, Node v8.10.0 or v12.x, or Java 8 Lambda Runtime can be deployed to Amazon IoT Greengrass Core. Lambdas that get deployed to Amazon IoT Greengrass must be packaged together with the Amazon IoT Greengrass Core SDK. In addition, you can choose to also add the Amazon SDK to your Lambda’s package in order to easily interact with our services such as Amazon DynamoDB.
Please note: Some cloud services that your Lambda relies upon (e.g. DynamoDB) will not be available to your Lambda functions when Amazon IoT Greengrass Core is in offline mode, and API calls to those services will fail in offline mode. In addition, your Lambda functions need to use the appropriate namespace for each Amazon IoT Greengrass Core SDK and Amazon SDK, if you include both in the same package.
Can I run Amazon IoT Greengrass in a Docker container? What about another container environment like LXD or Ubuntu snap packaging?
Yes, by configuring your Amazon IoT Greengrass group to run with no containerization, you can run Amazon IoT Greengrass in a Docker container. You can also deploy Amazon IoT Greengrass as a snap, a containerized software package that can run on a variety of Linux distributions. To get started, you can access an Amazon IoT Greengrass Docker file here and you can find documentation about how you can pull the Amazon IoT Greengrass Docker image from Amazon ECR here. You can also deploy Amazon IoT Greengrass as a snap, a containerized software package that can run on a variety of Linux distributions. To get started, you can access the Amazon IoT Greengrass snap here and get started here.
Can I run Amazon IoT Greengrass on Mac OS or Windows?
Yes, by running Amazon IoT Greengrass with no Amazon IoT Greengrass container at the group level in a Docker container, you’ll be able to run Amazon IoT Greengrass on Mac OS or Windows. You can learn more about this capability in our documentation.
What is the Amazon IoT Greengrass SLA?
The Amazon IoT Greengrass SLA for cloud management stipulates that you may be eligible for a credit towards a portion of your monthly service fees if Amazon IoT Greengrass fails to achieve a Monthly Uptime Percentage of at least 99.9% for Amazon IoT Greengrass cloud service.
For full details on all of the terms and conditions of the SLA, as well as details on how to submit a claim, please see the Amazon IoT Greengrass SLA details page.
What components of Amazon IoT Greengrass are open source?
Beginning with Amazon IoT Greengrass 2.0, the edge runtime and several components are now open source, and published in GitHub. For more details, see the list of open source components.
Can I make changes to the Amazon IoT Greengrass edge runtime source code for my project?
Yes. The Amazon IoT Greengrass open source edge runtime is distributed under the Apache 2.0 license, so it can be modified to fit any specific needs of your application or project without the permission of us.
Is there different pricing when I use different versions of Amazon IoT Greengrass?
No. There is no difference in pricing between versions. For more information on pricing, see pricing page.
Local resource access
What is an Amazon IoT Greengrass local resource?
“Local resource” refers to buses and peripherals that are physically present on the Amazon IoT Greengrass host, or a file system volume on the Amazon IoT Greengrass host OS. For example, to communicate with devices connected via Modbus / CANBUS, an Amazon IoT Greengrass Lambda function would need to access the serial port on the device. A local resource is defined at Amazon IoT Greengrass group scope, and all Lambdas in the Amazon IoT Greengrass group can use the defined local resources.
When would I access a local resource?
Amazon IoT Greengrass local resource allows your Lambda functions to securely interact with hardware such as sensors and actuators. For example, your Lambda function can read video streams from the camera on the device or send command and control to GPIO.
Security
What is a hardware root of trust and why might I want one?
Hardware roots of trust provide tamper-protected trusted execution environments where a true random number generator can produce the private keys used for encryption functions. These hardware “secure elements” are resistant to malware tampering and are physically tied to a given IoT device, establishing a strong root of trust upon which software can be deployed safely.
How do I introduce hardware root of trust security to my Amazon IoT Greengrass architecture?
First, you must run your Amazon IoT Greengrass Core software on an edge device with a secure element. Following the hardware vendor’s directions, generate a private key on that secure element. Next, follow our documentation to update the config.json file settings to use the secure element private key.
How are secure elements qualified to work with the Hardware Security Integration feature?
Secure element vendors have configured their secure elements to use a set of PKCS#11 standard APIs to integrate with Amazon nformation Recieved later IoT Greengrass. Vendors use a set of testing tools to qualify that their hardware is configured correctly.
ML Inference
How can I use my own trained ML model?
You can bring your trained ML model by placing it in .tar.gz and .zip format in Amazon S3. You will then let Amazon IoT Greengrass know the S3 URI and Amazon IoT Greengrass will deploy to target devices.
Which Amazon Web Services regions is Amazon IoT Greengrass ML Inference available in?
Amazon IoT Greengrass ML Inference is currently available in the following Amazon Web Services regions:
- Amazon Web Services GovCloud (US West)
- US East (N. Virginia)
- US West (Oregon)
- Amazon Web Services China (Beijing) region, operated by Sinnet
- Asia (Tokyo)
- Asia (Sydney)
- EU (Frankfurt)
- EU (Dublin)
You can use Amazon IoT Greengrass ML Inference regardless of your geographic location, as long as you have access to one of the above Amazon Web Services regions.
Amazon IoT Greengrass Components
What are Amazon IoT Greengrass components?
Amazon IoT Greengrass components are building blocks that enable easy creation of complex workflows such as machine learning inference, local processing, messaging, and data management. Amazon IoT Greengrass also offers pre-built components such as Stream Manager that supports data export to local and cloud targets. These components help accelerate application development so you don't have to worry about understanding device protocols, managing credentials, or interacting with external APIs, and you can interact with our services and third-party applications without writing code. In addition, you can also build your own components on top of Amazon IoT Greengrass. All components are designed to enable ease of use, as they can configured and managed through the Amazon IoT Greengrass console. These components enable you to re-use common business logic from one Amazon IoT Greengrass device to another, as you can easily discover, import, configure, and deploy components at the edge.
How can I add an Amazon IoT Greengrass component to my device configuration, or to my device?
Amazon IoT Greengrass components can be added via the “components” section for each group in Amazon IoT Greengrass console. Once added, you configure the Amazon IoT Greengrass components parameters and deploy the group to add them to your Amazon IoT Greengrass Core device.
Who can use Amazon IoT Greengrass components?
Any Amazon IoT Greengrass customer can use Amazon IoT Greengrass components in the Amazon Web Services Management Console.
What Amazon IoT Greengrass components are available?
You can find available Amazon IoT Greengrass components in our documentation.
Protocol Adapters
How can I use the OPC-UA Protocol with Amazon IoT Greengrass?
You can create custom implementations for Amazon IoT Greengrass that allow you to use OPC-UA to ingest and process messages from industrial equipment. Based on rules you define, messages can be delivered to local or cloud targets. You can start with this tutorial that shows an example custom OPC-UA implementation on your Amazon IoT Greengrass core.
How can I use Amazon IoT Greengrass to implement alternative protocols?
Since Lambda functions running on Amazon IoT Greengrass Cores have access to network resources, you can use Lambda to implement support for any protocol that is implemented on top of TCP/IP. In addition, you can also take advantage of Amazon IoT Greengrass Local Resource Access to implement support for protocols that need access to hardware adapter/drivers.
Amazon IoT Greengrass also provides Modbus-RTU, Modbus-TCP, and EtherNet/IP Protocol Adapter connectors that can help you connect to edge devices. For more information, refer to the connector documentation here.
How can I ingest industrial device data into Amazon IoT Greengrass?
You can use the IoT SiteWise connector to ingest device data from OPC UA servers, the Modbus-TCP connector to ingest device data from Modbus-TCP servers, and the EtherNet/IP connector to ingest device data from EtherNet/IP servers. Data export to Amazon IoT SiteWise is enabled by default and you can use custom streams to export data to Amazon IoT Analytics, Amazon Kinesis, and Amazon S3. You can also use custom streams to send data to Lambda functions to conduct local processing before you export the data. Alternatively, you can create a custom implementation that uses locally deployed Lambda functions to ingest and process device data and then deliver the data to local or cloud targets.
Over the air (OTA) updates
What are Amazon IoT Greengrass over the air (OTA) updates?
From time to time, Amazon Web Services will publish updated versions of the v IoT Greengrass Core software to provide the following benefits:
- Introduce new or improved features
- Bug fixes
- Security improvements
With Amazon IoT Greengrass Over the Air Updates (OTA), customers can get all these benefits without having to manually download and reinstall the Amazon IoT Greengrass Core software.
Do I have to use Amazon IoT Greengrass OTA updates?
No. You can always choose to download and install updates manually or follow a different software deployment process.
How will I be notified that new versions of Amazon IoT Greengrass Core are available?
When new versions of Amazon IoT Greengrass Core become available, we will announce it on the Amazon IoT Greengrass software developer forum.
Amazon IoT Device Tester for Amazon IoT Greengrass
What is Amazon IoT Device Tester for Amazon IoT Greengrass?
Amazon IoT Device Tester for Amazon IoT Greengrass is a test automation tool that lets you self-test and qualify Amazon IoT Greengrass on your Linux devices. Amazon IoT Device Tester provides a collection of automated tests that enable you to verify whether devices can run Amazon IoT Greengrass and be authenticated by and interoperate with Amazon IoT services.
What does Amazon IoT Device Tester for Amazon IoT Greengrass test?
Amazon IoT Device Tester for Amazon IoT Greengrass verifies that the combination of a device’s CPU architecture, Linux kernel configuration, and drivers work with Amazon IoT Greengrass by testing the following:
- Required software packages have been installed
- Linux kernel containing Amazon IoT Greengrass required kernel configuration (e.g. kernel configured for cgroups)
- Over the air updates
- Device can connect with IoT services and is able to run Amazon Lambda functions
- Local resource access functionality
- Device shadow functionality
In which regions is Amazon IoT Device Tester for Amazon IoT Greengrass available?
Amazon IoT Device Tester for Amazon IoT Greengrass is available in all the regions where Amazon IoT Greengrass is available.
How much does Amazon IoT Device Tester for Amazon IoT Greengrass cost?
Amazon IoT Device Tester for Amazon IoT Greengrass is free to use. However, you will be responsible for any costs associated with Amazon Web Services usage as part of testing. A single run of Amazon IoT Device Tester tests on a single Amazon IoT Greengrass device will cost less than RMB¥ 2.
Connecting FreeRTOS and other devices to Amazon IoT Greengrass
How can I connect devices locally to Amazon IoT Greengrass Core?
You can connect devices locally to Amazon IoT Greengrass Core using FreeRTOS or the Amazon IoT Device SDK. Amazon IoT Greengrass discovery is available on the Amazon IoT Device SDK via C++, Node.js, Java, and Python 2.7, 3.7, and 3.8. For more information, refer to the Amazon IoT Greengrass user guide. You can use the Amazon IoT Greengrass discovery library in your FreeRTOS source code to find and connect to an Amazon IoT Greengrass Core device.
What languages support Amazon IoT Greengrass via the Amazon IoT Device SDK?
Amazon IoT Greengrass discovery is available on the Amazon IoT Device SDK via C++ and Python 2.7 and 3.7. For more information, refer to the Amazon IoT Greengrass developer guide.
Does FreeRTOS work with Amazon IoT Greengrass?
Yes. FreeRTOS devices can connect directly to the cloud or connect to Amazon IoT Greengrass. FreeRTOS runs on IoT endpoints and is often responsible for the ‘sensing’ and ‘acting’ in an IoT topology.
What is the difference between Amazon IoT Greengrass and FreeRTOS?
Amazon IoT Greengrass is software that lets you run local compute, messaging, data caching, sync, and ML inference capabilities for connected devices in a secure way. With Amazon IoT Greengrass, connected devices can run Amazon Lambda functions, keep device data in sync, and communicate with other devices securely – even when not connected to the Internet. Using Amazon Lambda, Amazon IoT Greengrass ensures your IoT devices can respond quickly to local events, use Lambda functions running on Amazon IoT Greengrass Core to interact with local resources, operate with intermittent connections, stay updated with over the air updates, and minimize the cost of transmitting IoT data to the cloud.
FreeRTOS is an open source operating system for microcontrollers that operates on the edge and does not generally support chipsets that could run Amazon IoT Greengrass. These microcontroller devices are found on a variety of IoT endpoints such as fitness trackers, pacemakers, electricity meters, automotive transmissions, and sensor networks. FreeRTOS devices cannot run Amazon IoT Greengrass Core but can connect, send, and receive messages to and from an IoT Greengrass Core device for local processing at the edge.
The hardware requirements and operating systems are different on both devices.
FreeRTOS | Amazon IoT Greengrass | |
---|---|---|
Software | Operating system, runs on a microcontroller | Runtime for Linux devices and SDK for Amazon IoT Greengrass aware devices |
Hardware Requirements | >64KB RAM | >96MB* of RAM (v2.0 edge runtime or higher) >128MB of RAM (v1.11 edge runtime or lower) |
Category | Embedded systems, IoT endpoints | Edge devices, local gateways |
Use Cases | Microcontroller-based devices | Industrial automation systems, wireless routers, video cameras, gateways |
*Based on an Amazon Web Services study that used the following JDK: JDK version used for the tests: openjdk version "1.8.0_275", OpenJDK Runtime Environment (build 1.8.0_275-8u275-b01-0ubuntu1~18.04-b01), and OpenJDK 64-Bit Server VM (build 25.275-b01, mixed mode). Memory usage may be higher using different inputs.
Learn more about Amazon IoT Greengrass pricing