What is AWS Greengrass?
AWS Greengrass is software that lets you run local compute, messaging, data caching, sync, and ML inference capabilities on connected devices in a secure way. With AWS Greengrass, connected devices can run AWS Lambda functions, execute predictions based on machine learning models, keep device data in sync, and communicate with other devices securely – even when not connected to the Internet.
AWS Greengrass seamlessly extends AWS to devices so they can act locally on the data they generate, while still using the cloud for management, analytics, and durable storage. With Greengrass, you can use familiar languages and programming models to create your device software in the cloud, and then deploy it to your devices. AWS Greengrass can be programmed to filter device data and only transmit necessary information back to the cloud.
For more information about the features of AWS Greengrass, click here.
ML Inference is a feature of AWS Greengrass that makes it easy to perform machine learning inference locally on Greengrass devices using models that are built and trained in the cloud. To sign up for the preview of ML Inference, click here.
How do I get started using Greengrass?
Click here to see the Greengrass getting started guide. You can click here to purchase a Raspberry Pi, or see below to review a list of other qualified devices and a detailed set of technical dependencies.
Which AWS regions is AWS Greengrass service available in?
AWS Greengrass is currently available in the following AWS regions:
• US East (N. Virginia)
• US West (Oregon)
• EU (Frankfurt)
• Asia Pacific (Sydney)
• Asia Pacific (Tokyo)
You can use AWS Greengrass regardless of your geographic location, as long as you have access to one of the above AWS regions.
What are the major components of AWS Greengrass software? What does each component do?
AWS Greengrass consists of three software distributions: AWS Greengrass Core, AWS IoT Device SDK, and the AWS Greengrass SDK. The chart below compares those three software distributions to one another.
AWS Greengrass also works together with Amazon FreeRTOS. For more information about Greengrass and Amazon FreeRTOS, see the FAQ section called “Connecting Greengrass to Amazon FreeRTOS and other Devices.”
|Purpose||Where it Runs
|AWS Greengrass Core||Provides local services (compute, messaging, state, security), and communicates locally with devices that run the AWS IoT Device SDK.||CPU based devices (x86 or ARM) that run a general-purpose OS such as Linux|
|AWS IoT Device SDK||Allows devices to interact locally with Greengrass Core||Almost any device that supports C++ or Python 2.7. Also included in Amazon FreeRTOS|
|AWS Greengrass SDK||Allows Lambda functions to interact with local services inside a Greengrass Core||Inside a Lambda function deployed to Greengrass Core|
What Lambda development languages are supported by AWS Greengrass?
Greengrass supports Lambda functions authored in the following languages:
- Python 2.7
- Node.JS 6.10
- Java 8
Which Lambdas can be deployed to Greengrass?
Any Lambda that uses the Python 2.7, Node.JS 6.10, or Java 8 Lambda Runtime can be deployed to Greengrass Core. Lambdas that get deployed to Greengrass must be packaged together with the Greengrass Core SDK. In addition, you can choose to also add the AWS SDK to your Lambda’s package in order to easily interact with AWS services such as DynamoDB.
Please note: Some cloud services that your Lambda relies upon (e.g. DynamoDB) will not be available to your Lambda functions when 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 Greengrass Core SDK and AWS SDK, if you include both in the same package.
Local Resource Access
What is a Greengrass local resource?
“Local resource” refers to buses and peripherals that are physically present on the Greengrass host, or a file system volume on the Greengrass host OS. For example, to communicate with devices connected via Modbus / CANBUS, a Greengrass Lambda function would need to access the serial port on the device. A local resource is defined at Greengrass group scope, all Lambdas in the Greengrass group can use the defined local resources.
When would I access a local resource?
Greengrass local resource allows your Lambda functions to interact with hardware such as sensors and actuators securely. For example, your Lambda function can read video streams from the camera on the device, or send command and control to GPIO.
Is the local resource access feature free?
The feature is part of Greengrass, and will be provided at no extra cost to Greengrass customers.
What is Greengrass ML Inference?
At re:Invent 2017, we announced a new feature of Greengrass for local machine learning (ML) inference that makes it faster and easier to deploy and run machine learning models on Greengrass devices. Developers can now add cloud trained machine learning models as resources to a Greengrass group, deploy them to target devices and apply them to locally generated data for local inferencing. The feature includes integration with Amazon SageMaker to locate SageMaker trained models, a new Greengrass “machine learning” resource type for declaring and deploying cloud trained models to Greengrass devices, and pre-built MXNet (ML framework) for NVIDIA Jetson, Intel Atom E3900, and Raspberry Pi devices. The new Greengrass machine learning inference feature is available as preview to interested customers.
How can I get access to Greengrass ML Inference?
Click here to learn more about Greengrass ML Inference and sign up for the preview.
How can I use the OPC-UA Protocol with AWS Greengrass?
Greengrass now supports OPC-UA, a popular information exchange standard for industrial communication. With OPC-UA support in Greengrass, you can now easily ingest and process messages from industrial equipment, and deliver them to another device or to the cloud based on business rules you define. Our implementation of OPC-UA is secure, with support for certificate-based authentication. It is based on a well-known open source implementation, and it is fully customizable to suit your particular use case.
Can I bring my own implementation of the OPC-UA protocol, or implement a different protocol?
Yes, Greengrass, you can use this same architecture to bring your own implementation of OPC-UA, and also implement your own support for custom, legacy, and proprietary messaging protocols.
How can I use Greengrass to implement alternative protocols?
Since Lambda functions running on 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 Greengrass Local Resource Access to implement support for protocols that need access to hardware adapter/drivers.
Over the Air (OTA) Updates
What is Greengrass Over the Air (OTA) Updates?
From time to time, AWS will publish updated versions of the Greengrass Core software to provide the following benefits:
- Introduce new or improved features
- Bug fixes
- Security improvements
With Greengrass Over the Air Updates (OTA), customers can get all these benefits without having to manually download and reinstall the Greengrass Core software.
Do I have to use Greengrass OTA Updates?
No. You can always choose to download and install updates manually or following a different software deployment process.
How will I be notified that new versions of Greengrass Core are available?
When new versions of Greengrass Core become available, we will announce it on the AWS Greengrass software developer forum. You can find a link to that forum here.
Greengrass Core Platform Compatibility
What are AWS Greengrass Core devices? What minimum hardware specifications are required?
The AWS Greengrass Core software runs on a hub, gateway, or other device to automatically sync and interact with the cloud. 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. Greengrass requires at least 1GHz of compute (either ARM or X86), 128MB of RAM, plus additional resources to accommodate the desired OS, message throughput, and AWS Lambda execution depending on the use case. Greengrass Core can run on devices that range from a Raspberry Pi to a server-level appliance.
What CPU architectures and operating systems are compatible with AWS Greengrass Core?
The following operating systems and CPU architectures are compatible with Greengrass Core:
- Architecture: ARMv7l; OS: Linux; Distribution: Raspian
- Architecture: x86_64; OS: Linux; Distribution: Amazon Linux
- Architecture: x86_64; OS: Linux; Distribution: Ubuntu 14.04 – 16.04
- Architecture: ARMv8 (AArch64); OS: Linux; Distribution: Ubuntu 14.04 – 16.04
What devices are compatible with AWS Greengrass Core, and how can I get started quickly?
Greengrass Core is compatible with most devices that meet the technical requirements described below. If you’d like to get started quickly, you can purchase one of the following devices from our partners:
Tested with Greengrass Core version 1.0.0 (Released June 7, 2016)
- ADLink MXE-210 APL-I, CPU: Atom E3845/E3826
- ADLink MXE-200, CPU: Atom E3845/E3826
- ADLink MXE-1400, CPU: Atom E3845
- Advantech EIS-D150, CPU: Celeron J1900
- Advantech ARK-1123, CPU: Atom E3825
- Advantech ARK-1124, CPU: Atom N3350/E3940
- Advantech ARK-2121, CPU: Celeron J1900
- Advantech ARK-2250, CPU: Core i3/i5/i7
- Advantech ARK-3520, CPU: Core i3/i5/i8
- Advantech DS-370, CPU: Celeron J1900
- Advantech DS-081, CPU: Core i3/i5
- Advantech DS-570, CPU: Celeron J1900
- Samsung Artik 530
Tested with Greengrass Core version 1.1.0 (Released September 20, 2017)
Tested with Greengrass Core version 1.3.0 (Released November 29, 2017)
- Advantech EIS-D110, CPU: Celeron J1900
- Advantech EIS-D210, CPU: Celeron J1900
- Advantech RSB-4760
- Advantech UNO-1372G
- Advantech UNO-2271G
- Advantech UTX-3115, CPU: Atom E3826
- Annapurna Labs Alpine Family
- Apollo Lake E3930
- Dell Edge Gateway 3002
- Dell Edge Gateway 3003
- Dell Edge Gateway 5000
- Dell Edge Gateway 5100
- Gigabyte BRIX
- IEI DRPC-120-BTi-E5-LED/2G-R10
- IEI TANK-610-BW-N3/2G-R10
- IEI/QNAP TVS-682, CPU: Core i3-6100
- Indra SM206009
- Logic Supply CL100
- Logic Supply DA-1000
- Logic Supply MC850-50
- Logic Supply ML100G-50
- Logic Supply ML340G-10
- Logic Supply ML350G-10
- Logic Supply ML500G-30
- Marvell EspressoBIN
- Marvell MacchiatoBIN
- Nvidia Jetson TX2
- Qualcomm DragonBoard 410C
- Raspberry Pi 3 Model B
- Renesas R-Car Pro M3
- Samsung Artik 710
Will Greengrass run with hardware which is less than 1GHz?
The AWS Greengrass Core software has been tested by our partners to run on the following devices:
Tested with Greengrass Core version 1.0.0 (Released June 7, 2016)
SAMA5D2 MPU Family; SAMA5D2 Products
Tested with Greengrass Core version 1.1.0 (Released September 20, 2017)
Digi CC-WMX6UL-START; ConnectCore 6UL Starter Kit
Digi CC-WMX6UL-KIT; ConnectCore 6UL JSK
What are the detailed technical dependencies required to run Greengrass Core?
AWS Greengrass Core is designed to run on a broad range of CPU architectures and operating systems on a device that satisfies the minimum hardware requirement. Below are the dependencies required for Greengrass Core to run.
1. Required software package and configuration
- SQLite - version 3 or greater
- Glibc library - version 2.14
- Linux Kernel: While several kernel versions may work with Greengrass, for best security and performance we recommend you use as recent as possible version of the Linux Kernel which contains the Greengrass required kernel configurations
- System Trust Store
- boto3 (latest)
- botocore (latest)
- OpenSSL – version 1.0.2 or greater
- Required if running Python Lambdas:Python – version 2.7 or greater
- Required if running Java Lambdas: Java 8
- Required if running Node.js Lambdas: Node.js 6.10
2. Kernel configuration
- Key Retention: CONFIG_KEYS
- Mqueue: CONFIG_POSIX_MQUEUE
- Overlay FS: CONFIG_OVERLAY_FS
- Seccomp Arch Filter: CONFIG_HAVE_ARCH_SECCOMP_FILTER
- Seccomp Filter: CONFIG_SECCOMP_FILTER
- Seccomp: CONFIG_SECCOMP
3. Kernel configuration for Namespace - Kernels must be built with these configurations enabled:
- IPC isolation: CONFIG_IPC_NS
- UTS isolation: CONFIG_UTS_NS
- User isolation: CONFIG_USER_NS
- PID isolation: CONFIG_PID_NS
4. Kernel configuration for Cgroup - Kernels must be built with these configurations enabled:
- Enable cgroups: CONFIG_CGROUPS
- Enable Memory cgroup: CONFIG_MEMCG
- Enable devices cgroup: CONFIG_CGROUP_DEVICE
Connecting Greengrass to Amazon FreeRTOS and Other Devices
How can I connect devices locally to AWS Greengrass Core?
You can connect devices locally to AWS Greengrass Core using Amazon FreeRTOS or the AWS IoT Device SDK. AWS Greengrass discovery is available on the AWS IoT Device SDK via C++ and Python 2.7. For more information, refer to the AWS Greengrass user guide. You can use the Greengrass Discovery library in your Amazon FreeRTOS source code to find and connect to an AWS Greengrass core device. For more information, refer to the Amazon FreeRTOS user guide.
What languages support Greengrass via the AWS IoT Device SDK?
AWS Greengrass discovery is available on the AWS IoT Device SDK via C++ and Python 2.7. For more information, refer to the AWS Greengrass user guide.
What is Amazon FreeRTOS?
Amazon FreeRTOS (a:FreeRTOS) is an operating system that makes microcontroller based edge devices easy to program, deploy, secure, and maintain. Amazon FreeRTOS is based on the FreeRTOS kernel, the popular open source operating system for microcontrollers, and includes software libraries that make it easy to securely connect devices locally, to the cloud, and update them remotely. The Amazon FreeRTOS console enables you to easily select and download the software components relevant to your use case. The Amazon FreeRTOS Qualification Program gives you the confidence that the microcontroller you choose fully supports the Amazon FreeRTOS features and capabilities. Amazon FreeRTOS helps keep microcontroller-based devices secure with support for data encryption and key management. And, Amazon FreeRTOS devices connect to AWS Greengrass Core devices, making it easy to connect multiple Amazon FreeRTOS devices together in a Greengrass Group. Click here to learn more about Amazon FreeRTOS.
Does Amazon FreeRTOS work with AWS Greengrass?
Yes. Amazon FreeRTOS devices can connect directly to the cloud or connect to Greengrass. Amazon FreeRTOS does not require the use of AWS Greengrass. Amazon FreeRTOS runs on IoT endpoints and is often responsible for the ‘sensing’ and ‘acting’ in an IoT topology.
What is the difference between AWS Greengrass and Amazon FreeRTOS?
AWS 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 AWS Greengrass, connected devices can run AWS Lambda functions, keep device data in sync, and communicate with other devices securely – even when not connected to the Internet. Using AWS Lambda, Greengrass ensures your IoT devices can respond quickly to local events, use Lambda functions running on 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.
Amazon FreeRTOS is an operating system for microcontrollers that operates on the edge and does not generally support chipsets that could run AWS Greengrass. These microcontroller devices are found on a variety of IoT endpoints such as fitness trackers, pacemakers, electricity meters, automotive transmissions, and sensor networks. Amazon FreeRTOS devices cannot run Greengrass Core but can trigger the execution of Lambda functions on a Greengrass Core device.
The hardware requirements and operating systems are different on both devices.
|Amazon FreeRTOS||AWS Greengrass|
|Software||Operating system, runs on a microcontroller||Runtime for Linux devices and SDK for Greengrass aware devices|
|Hardware Requirements||>64KB RAM||>128MB of RAM|
|Category||Embedded systems, IoT endpoints||Edge devices, local gateways|
|Use Cases||Microcontroller based devices||Industrial automation systems, wireless routers, smartphones|