AWS IoT Greengrass
Developer Guide

What Is AWS IoT Greengrass?

AWS IoT Greengrass is software that extends cloud capabilities to local devices. This enables devices to collect and analyze data closer to the source of information, react autonomously to local events, and communicate securely with each other on local networks. AWS IoT Greengrass developers can use AWS Lambda functions and prebuilt connectors to create serverless applications that are deployed to devices for local execution.

The following diagram shows the basic architecture of AWS IoT Greengrass.

AWS IoT Greengrass makes it possible for customers to build IoT devices and application logic. Specifically, AWS IoT Greengrass provides cloud-based management of application logic that runs on devices. Locally deployed Lambda functions and connectors are triggered by local events, messages from the cloud, or other sources.

In AWS IoT Greengrass, devices securely communicate on a local network and exchange messages with each other without having to connect to the cloud. AWS IoT Greengrass provides a local pub/sub message manager that can intelligently buffer messages if connectivity is lost so that inbound and outbound messages to the cloud are preserved.

AWS IoT Greengrass protects user data:

  • Through the secure authentication and authorization of devices.

  • Through secure connectivity in the local network.

  • Between local devices and the cloud.

Device security credentials function in a group until they are revoked, even if connectivity to the cloud is disrupted, so that the devices can continue to securely communicate locally.

AWS IoT Greengrass provides secure, over-the-air software updates of Lambda functions.

AWS IoT Greengrass consists of:

  • Software distributions

    • AWS IoT Greengrass core software

    • AWS IoT Greengrass core SDK

  • Cloud service

    • AWS IoT Greengrass API

  • Features

    • Lambda runtime

    • Shadows implementation

    • Message manager

    • Group management

    • Discovery service

    • Over-the-air update agent

    • Local resource access

    • Machine learning inference

    • Local secrets manager

AWS IoT Greengrass Core Software

The AWS IoT Greengrass core software provides the following functionality:

  • Deployment and local execution of connectors and Lambda functions.

  • Secure, encrypted storage of local secrets and controlled access by connectors and Lambda functions.

  • MQTT messaging over the local network between devices, connectors, and Lambda functions using managed subscriptions.

  • MQTT messaging between AWS IoT and devices, connectors, and Lambda functions using managed subscriptions.

  • Secure connections between devices and the cloud using device authentication and authorization.

  • Local shadow synchronization of devices. Shadows can be configured to sync with the cloud.

  • Controlled access to local device and volume resources.

  • Deployment of cloud-trained machine learning models for running local inference.

  • Automatic IP detection that enables devices to discover the Greengrass core device.

  • Central deployment of new or updated group configuration. After the configuration data is downloaded, the core device is automatically restarted.

  • Secure, over-the-air software updates of user-defined Lambda functions.

AWS IoT Greengrass core instances are configured through AWS IoT Greengrass APIs that create and update AWS IoT Greengrass group definitions stored in the cloud.

AWS IoT Greengrass Core Versions

The following tabs describe what's new and changed in AWS IoT Greengrass core software versions.

GGC v1.7.0GGC v1.6.0GGC v1.5.0GGC v1.3.0GGC v1.1.0GGC v1.0.0
GGC v1.7.0

Current version.

New features:

Bug fixes and improvements:

  • General performance improvements and bug fixes.

In addition, the following features are available with this release:

  • The AWS IoT Device Tester for AWS IoT Greengrass, which you can use to verify that your CPU architecture, kernel configuration, and drivers work with AWS IoT Greengrass. For more information, see AWS IoT Device Tester for AWS IoT Greengrass User Guide.

  • The AWS IoT Greengrass Core Software, AWS IoT Greengrass Core SDK, and AWS IoT Greengrass Machine Learning SDK packages are available for dowload through Amazon CloudFront. For more information, see AWS IoT Greengrass Downloads.

GGC v1.6.0

New features:

  • Lambda executables that run binary code on the Greengrass core. Use the new AWS IoT Greengrass Core SDK for C to write Lambda executables in C and C++. For more information, see Lambda Executables.

  • Optional local storage message cache that can persist across restarts. You can configure the storage settings for MQTT messages that are queued for processing. For more information, see MQTT Message Queue.

  • Configurable maximum reconnect retry interval for when the core device is disconnected. For more information, see the mqttMaxConnectionRetryInterval property in AWS IoT Greengrass Core Configuration File.

  • Local resource access to the host /proc directory. For more information, see Access Local Resources with Lambda Functions.

  • Configurable write directory. The AWS IoT Greengrass core software can be deployed to read-only and read-write locations. For more information, see Configure a Write Directory for AWS IoT Greengrass.

Bug fixes and improvements:

  • Performance improvement for publishing messages in the Greengrass core and between devices and the core.

  • Reduced the compute resources required to process logs generated by user-defined Lambda functions.

GGC v1.5.0

New features:

  • AWS IoT Greengrass Machine Learning (ML) Inference is generally available. You can perform ML inference locally on AWS IoT Greengrass devices using models that are built and trained in the cloud. For more information, see Perform Machine Learning Inference.

  • Greengrass Lambda functions now support binary data as input payload, in addition to JSON. To use this feature, you must upgrade to AWS IoT Greengrass Core SDK version 1.1.0, which you can download from the Software page in the AWS IoT console.

Bug fixes and improvements:

  • Reduced the overall memory footprint.

  • Performance improvements for sending messages to the cloud.

  • Performance and stability improvements for the download agent, Device Certificate Manager, and OTA update agent.

  • Minor bug fixes.

GGC v1.3.0

New features:

GGC v1.1.0

New features:

  • Deployed AWS IoT Greengrass groups can be reset by deleting Lambda functions, subscriptions, and configurations. For more information, see Reset Deployments.

  • Support for Node.js 6.10 and Java 8 Lambda runtimes, in addition to Python 2.7.

To migrate from the previous version of the AWS IoT Greengrass core:

  • Copy certificates from the /greengrass/configuration/certs folder to /greengrass/certs.

  • Copy /greengrass/configuration/config.json to /greengrass/config/config.json.

  • Run /greengrass/ggc/core/greengrassd instead of /greengrass/greengrassd.

  • Deploy the group to the new core.

GGC v1.0.0

Initial version.

AWS IoT Greengrass Groups

An AWS IoT Greengrass group is a collection of settings and components, such as an AWS IoT Greengrass core, devices, and subscriptions. Groups are used to define a scope of interaction. For example, a group might represent one floor of a building, one truck, or an entire mining site. The following diagram shows the components that can make up an Greengrass group.

In the preceding diagram:

A: AWS IoT Greengrass group definition

A collection of information about the AWS IoT Greengrass group.

B: AWS IoT Greengrass group settings

These include:

  • AWS IoT Greengrass group role.

  • Certification authority and local connection configuration.

  • AWS IoT Greengrass core connectivity information.

  • Default Lambda runtime environment.

  • CloudWatch and local logs configuration.

C: AWS IoT Greengrass core

The AWS IoT thing that represents the AWS IoT Greengrass core. For more information, see Configure the AWS IoT Greengrass Core.

D: Lambda function definition

A list of Lambda functions that run locally on the core, with associated configuration data. For more information, see Run Lambda Functions on the AWS IoT Greengrass Core.

E: Subscription definition

A list of subscriptions that enable communication using MQTT messages. A subscription defines:

  • A message source and message target. These can be devices, Lambda functions, connectors, AWS IoT, and the local shadow service

  • A subject, which is an MQTT topic or topic filter that's used to filter message data.

For more information, see Greengrass Messaging Workflow.

F: Connector definition

A list of connectors that run locally on the core, with associated configuration data. For more information, see Integrate with Services and Protocols Using Greengrass Connectors.

G: Device definition

A list of AWS IoT things (devices) that are members of the AWS IoT Greengrass group, with associated configuration data. For more information, see Devices in AWS IoT Greengrass.

H: Resource definition

A list of local resources, machine learning resources, and secret resources on the AWS IoT Greengrass core, with associated configuration data. For more information, see Access Local Resources with Lambda Functions, Perform Machine Learning Inference, and Deploy Secrets to the AWS IoT Greengrass Core.

Logging definition

The logging configuration for the group. For more information, see Monitoring with AWS IoT Greengrass Logs.

When deployed, the AWS IoT Greengrass group definition, Lambda functions, connectors, resources, and subscription table are copied to an AWS IoT Greengrass core device.

Devices in AWS IoT Greengrass

There are two types of devices:

AWS IoT Greengrass cores

A Greengrass core is an AWS IoT device that runs the AWS IoT Greengrass core software, which enables it to communicate directly with the AWS IoT and AWS IoT Greengrass cloud services. A core has its own certificate used for authenticating with AWS IoT. It has a device shadow and exists in the AWS IoT device registry. AWS IoT Greengrass cores run a local Lambda runtime, a deployment agent, and an IP address tracker that sends IP address information to the AWS IoT Greengrass cloud service to allow Greengrass devices to automatically discover their group and core connection information. For more information, see Configure the AWS IoT Greengrass Core.

AWS IoT devices connected to a Greengrass core

These Greengrass devices are added to a Greengrass group and run Amazon FreeRTOS or have the AWS IoT Device SDK installed. For more information, see AWS IoT Greengrass Discovery Library in the Amazon FreeRTOS User Guide or AWS IoT SDKs in the AWS IoT Developer Guide.

Greengrass devices are connected to an AWS IoT Greengrass core. They can be configured to communicate with Lambda functions, connectors, and other devices in the group, and with AWS IoT or the local shadow service. If the core device loses connectivity to the cloud, devices can continue to communicate over the local network. Devices can vary in size, from smaller microcontroller-based devices to large appliances.

The following table shows how these device types are related.

The AWS IoT Greengrass core device stores certificates in two locations:

  • Core device certificate in /greengrass/certs - The core device certificate is named hash.cert.pem (for example, 86c84488a5.cert.pem). This certificate is used to authenticate the core when connecting to the AWS IoT and AWS IoT Greengrass services.

  • MQTT core server certificate in /greengrass-root/ggc/var/state/server - The MQTT core server certificate is named server.crt. This certificate is used for mutual authentication between the local MQTT service (that's on the Greengrass core) and Greengrass devices before messages are exchanged.

SDKs

The following AWS-provided SDKs are used to work with AWS IoT Greengrass:

GGC 1.7.0GGC 1.6.0GGC v1.5.0GGC v1.3.0GGC v1.1.0GGC v1.0.0
GGC 1.7.0
AWS SDK

Use the AWS SDK to build applications that interact with any AWS service, including Amazon S3, Amazon DynamoDB, AWS IoT, AWS IoT Greengrass, and more. In the context of AWS IoT Greengrass, you can use the AWS SDK in deployed Lambda functions to make direct calls to any AWS service. For more information, see AWS SDK.

AWS IoT Device SDK

The AWS IoT Device SDK helps devices connect to AWS IoT or AWS IoT Greengrass services. Devices must know which AWS IoT Greengrass group they belong to and the IP address of the AWS IoT Greengrass core that they should connect to.

Although you can use any of the AWS IoT Device SDK platforms to connect to an AWS IoT Greengrass core, only the C++ and Python SDKs provide AWS IoT Greengrass-specific functionality, such as access to the AWS IoT Greengrass Discovery Service and AWS IoT Greengrass core root CA downloads. For more information, see AWS IoT Device SDK.

AWS IoT Greengrass Core SDK

The AWS IoT Greengrass Core SDK enables Lambda functions to interact with the Greengrass core, publish messages to AWS IoT, interact with the local shadow service, invoke other deployed Lambda functions, and access secret resources. This SDK is used by Lambda functions that run on an AWS IoT Greengrass core. For more information, see AWS IoT Greengrass Core SDK.

AWS IoT Greengrass Machine Learning SDK

The AWS IoT Greengrass Machine Learning SDK enables Lambda functions to consume machine learning models that are deployed to the Greengrass core as machine learning resources. This SDK is used by Lambda functions that run on an AWS IoT Greengrass core and interact with a local inference service. For more information, see AWS IoT Greengrass Machine Learning SDK.

GGC 1.6.0
AWS SDKs

Using the AWS SDKs, you can build applications that work with any AWS service, including Amazon S3, Amazon DynamoDB, AWS IoT, AWS IoT Greengrass, and more. In the context of AWS IoT Greengrass, you can use the AWS SDK in deployed Lambda functions to make direct calls to any AWS service. For more information, see SDKs for Greengrass Lambda Functions.

AWS IoT Device SDKs

The AWS IoT Device SDKs helps devices connect to AWS IoT or AWS IoT Greengrass services. Devices must know which AWS IoT Greengrass group they belong to and the IP address of the AWS IoT Greengrass core that they should connect to.

Although you can use any of the AWS IoT Device SDKs to connect to an AWS IoT Greengrass core, only the C++ and Python Device SDKs provide AWS IoT Greengrass-specific functionality, such as access to the AWS IoT Greengrass Discovery Service and AWS IoT Greengrass core root CA downloads. For more information, see AWS IoT Device SDK.

AWS IoT Greengrass Core SDK

The AWS IoT Greengrass Core SDK enables Lambda functions to interact with the AWS IoT Greengrass core on which they run in order to publish messages, interact with the local Device Shadow service, or invoke other deployed Lambda functions. This SDK is used exclusively for writing Lambda functions running in the Lambda runtime on an AWS IoT Greengrass core. For more information, see SDKs for Greengrass Lambda Functions.

GGC v1.5.0
AWS SDKs

Using the AWS SDKs, you can build applications that work with any AWS service, including Amazon S3, Amazon DynamoDB, AWS IoT, AWS IoT Greengrass, and more. In the context of AWS IoT Greengrass, you can use the AWS SDK inside deployed Lambda functions to make direct calls to any AWS service.

AWS IoT Device SDKs

The AWS IoT Device SDKs helps devices connect to AWS IoT or AWS IoT Greengrass services. Devices must know which AWS IoT Greengrass group they belong to and the IP address of the AWS IoT Greengrass core that they should connect to.

Although you can use any of the AWS IoT Device SDKs to connect to an AWS IoT Greengrass core, only the C++ and Python Device SDKs provide AWS IoT Greengrass-specific functionality, such as access to the AWS IoT Greengrass Discovery Service and AWS IoT Greengrass core root CA downloads. For more information, see AWS IoT Device SDK.

AWS IoT Greengrass Core SDK

The AWS IoT Greengrass Core SDK enables Lambda functions to interact with the AWS IoT Greengrass core on which they run in order to publish messages, interact with the local Device Shadow service, or invoke other deployed Lambda functions. This SDK is used exclusively for writing Lambda functions running in the Lambda runtime on an AWS IoT Greengrass core. Lambda functions running on an AWS IoT Greengrass core can interact with AWS cloud services directly using the AWS SDK. The AWS IoT Greengrass Core SDK and the AWS SDK are contained in different packages, so you can use both packages simultaneously. You can download the AWS IoT Greengrass Core SDK from the Software page of the AWS IoT console.

The AWS IoT Greengrass Core SDK follows the AWS SDK programming model. It allows you to easily port Lambda functions developed for the cloud to Lambda functions that run on an AWS IoT Greengrass core. For example, using the AWS SDK, the following Lambda function publishes a message to the topic "/some/topic" in the cloud:

import boto3 client = boto3.client('iot-data') response = client.publish( topic = "/some/topic", qos = 0, payload = "Some payload".encode() )

To port this Lambda function for execution on an AWS IoT Greengrass core, replace the import boto3 statement with the import greengrasssdk, as shown in the following snippet:

Note

The AWS IoT Greengrass Core SDK only supports sending MQTT messages with QoS = 0.

import greengrasssdk client = greengrasssdk.client('iot-data') response = client.publish( topic='/some/topic', qos=0, payload='some payload'.encode() )

This allows you to test your Lambda functions in the cloud and migrate them to AWS IoT Greengrass with minimal effort.

Note

The AWS SDK is natively part of the environment of a Lambda function that runs in the AWS cloud. If you want to use boto3 in a Lambda function that's deployed to an AWS IoT Greengrass core, make sure to include the AWS SDK in your package. In addition, if you use both the AWS IoT Greengrass Core SDK and the AWS SDK in the same package, make sure that your Lambda functions use the correct namespaces. For more information about how to create your deployment package, see:

GGC v1.3.0
AWS SDKs

Using the AWS SDKs, you can build applications that work with any AWS service, including Amazon S3, Amazon DynamoDB, AWS IoT, AWS IoT Greengrass, and more. In the context of AWS IoT Greengrass, you can use the AWS SDK inside deployed Lambda functions to make direct calls to any AWS service.

AWS IoT Device SDKs

The AWS IoT Device SDKs helps devices connect to AWS IoT or AWS IoT Greengrass services. Devices must know which AWS IoT Greengrass group they belong to and the IP address of the AWS IoT Greengrass core that they should connect to.

Although you can use any of the AWS IoT Device SDKs to connect to an AWS IoT Greengrass core, only the C++ and Python Device SDKs provide AWS IoT Greengrass-specific functionality, such as access to the AWS IoT Greengrass Discovery Service and AWS IoT Greengrass core root CA downloads. For more information, see AWS IoT Device SDK.

AWS IoT Greengrass Core SDK

The AWS IoT Greengrass Core SDK enables Lambda functions to interact with the AWS IoT Greengrass core on which they run in order to publish messages, interact with the local Device Shadow service, or invoke other deployed Lambda functions. This SDK is used exclusively for writing Lambda functions running in the Lambda runtime on an AWS IoT Greengrass core. Lambda functions running on an AWS IoT Greengrass core can interact with AWS cloud services directly using the AWS SDK. The AWS IoT Greengrass Core SDK and the AWS SDK are contained in different packages, so you can use both packages simultaneously. You can download the AWS IoT Greengrass Core SDK from the Software page of the AWS IoT console.

The AWS IoT Greengrass Core SDK follows the AWS SDK programming model. It allows you to easily port Lambda functions developed for the cloud to Lambda functions that run on an AWS IoT Greengrass core. For example, using the AWS SDK, the following Lambda function publishes a message to the topic "/some/topic" in the cloud:

import boto3 client = boto3.client('iot-data') response = client.publish( topic = "/some/topic", qos = 0, payload = "Some payload".encode() )

To port this Lambda function for execution on an AWS IoT Greengrass core, replace the import boto3 statement with the import greengrasssdk, as shown in the following snippet:

Note

The AWS IoT Greengrass Core SDK only supports sending MQTT messages with QoS = 0.

import greengrasssdk client = greengrasssdk.client('iot-data') response = client.publish( topic='/some/topic', qos=0, payload='some payload'.encode() )

This allows you to test your Lambda functions in the cloud and migrate them to AWS IoT Greengrass with minimal effort.

Note

The AWS SDK is natively part of the environment of a Lambda function that runs in the AWS cloud. If you want to use boto3 in a Lambda function that's deployed to an AWS IoT Greengrass core, make sure to include the AWS SDK in your package. In addition, if you use both the AWS IoT Greengrass Core SDK and the AWS SDK in the same package, make sure that your Lambda functions use the correct namespaces. For more information about how to create your deployment package, see:

GGC v1.1.0
AWS SDKs

Using the AWS SDKs, you can build applications that work with any AWS service, including Amazon S3, Amazon DynamoDB, AWS IoT, AWS IoT Greengrass, and more. In the context of AWS IoT Greengrass, you can use the AWS SDK inside deployed Lambda functions to make direct calls to any AWS service.

AWS IoT Device SDKs

The AWS IoT Device SDKs helps devices connect to AWS IoT or AWS IoT Greengrass services. Devices must know which AWS IoT Greengrass group they belong to and the IP address of the AWS IoT Greengrass core that they should connect to.

Although you can use any of the AWS IoT Device SDKs to connect to an AWS IoT Greengrass core, only the C++ and Python Device SDKs provide AWS IoT Greengrass-specific functionality, such as access to the AWS IoT Greengrass Discovery Service and AWS IoT Greengrass core root CA downloads. For more information, see AWS IoT Device SDK.

AWS IoT Greengrass Core SDK

The AWS IoT Greengrass Core SDK enables Lambda functions to interact with the AWS IoT Greengrass core on which they run in order to publish messages, interact with the local Device Shadow service, or invoke other deployed Lambda functions. This SDK is used exclusively for writing Lambda functions running in the Lambda runtime on an AWS IoT Greengrass core. Lambda functions running on an AWS IoT Greengrass core can interact with AWS cloud services directly using the AWS SDK. The AWS IoT Greengrass Core SDK and the AWS SDK are contained in different packages, so you can use both packages simultaneously. You can download the AWS IoT Greengrass Core SDK from the Software page of the AWS IoT console.

The AWS IoT Greengrass Core SDK follows the AWS SDK programming model. It allows you to easily port Lambda functions developed for the cloud to Lambda functions that run on an AWS IoT Greengrass core. For example, using the AWS SDK, the following Lambda function publishes a message to the topic "/some/topic" in the cloud:

import boto3 client = boto3.client('iot-data') response = client.publish( topic = "/some/topic", qos = 0, payload = "Some payload".encode() )

To port this Lambda function for execution on an AWS IoT Greengrass core, replace the import boto3 statement with the import greengrasssdk, as shown in the following snippet:

Note

The AWS IoT Greengrass Core SDK only supports sending MQTT messages with QoS = 0.

import greengrasssdk client = greengrasssdk.client('iot-data') response = client.publish( topic='/some/topic', qos=0, payload='some payload'.encode() )

This allows you to test your Lambda functions in the cloud and migrate them to AWS IoT Greengrass with minimal effort.

Note

The AWS SDK is natively part of the environment of a Lambda function that runs in the AWS cloud. If you want to use boto3 in a Lambda function that's deployed to an AWS IoT Greengrass core, make sure to include the AWS SDK in your package. In addition, if you use both the AWS IoT Greengrass Core SDK and the AWS SDK in the same package, make sure that your Lambda functions use the correct namespaces. For more information about how to create your deployment package, see:

GGC v1.0.0
AWS SDKs

Using the AWS SDKs, you can build applications that work with any AWS service, including Amazon S3, Amazon DynamoDB, AWS IoT, AWS IoT Greengrass, and more. In the context of AWS IoT Greengrass, you can use the AWS SDK inside deployed Lambda functions to make direct calls to any AWS service.

AWS IoT Device SDKs

The AWS IoT Device SDKs helps devices connect to AWS IoT or AWS IoT Greengrass services. Devices must know which AWS IoT Greengrass group they belong to and the IP address of the AWS IoT Greengrass core that they should connect to.

Although you can use any of the AWS IoT Device SDKs to connect to an AWS IoT Greengrass core, only the C++ and Python Device SDKs provide AWS IoT Greengrass-specific functionality, such as access to the AWS IoT Greengrass Discovery Service and AWS IoT Greengrass core root CA downloads. For more information, see AWS IoT Device SDK.

AWS IoT Greengrass Core SDK

The AWS IoT Greengrass Core SDK enables Lambda functions to interact with the AWS IoT Greengrass core on which they run in order to publish messages, interact with the local Device Shadow service, or invoke other deployed Lambda functions. This SDK is used exclusively for writing Lambda functions running in the Lambda runtime on an AWS IoT Greengrass core. Lambda functions running on an AWS IoT Greengrass core can interact with AWS cloud services directly using the AWS SDK. The AWS IoT Greengrass Core SDK and the AWS SDK are contained in different packages, so you can use both packages simultaneously. You can download the AWS IoT Greengrass Core SDK from the Software page of the AWS IoT console.

The AWS IoT Greengrass Core SDK follows the AWS SDK programming model. It allows you to easily port Lambda functions developed for the cloud to Lambda functions that run on an AWS IoT Greengrass core. For example, using the AWS SDK, the following Lambda function publishes a message to the topic "/some/topic" in the cloud:

import boto3 client = boto3.client('iot-data') response = client.publish( topic = "/some/topic", qos = 0, payload = "Some payload".encode() )

To port this Lambda function for execution on an AWS IoT Greengrass core, replace the import boto3 statement with the import greengrasssdk, as shown in the following snippet:

Note

The AWS IoT Greengrass Core SDK only supports sending MQTT messages with QoS = 0.

import greengrasssdk client = greengrasssdk.client('iot-data') response = client.publish( topic='/some/topic', qos=0, payload='some payload'.encode() )

This allows you to test your Lambda functions in the cloud and migrate them to AWS IoT Greengrass with minimal effort.

Note

The AWS SDK is natively part of the environment of a Lambda function that runs in the AWS cloud. If you want to use boto3 in a Lambda function that's deployed to an AWS IoT Greengrass core, make sure to include the AWS SDK in your package. In addition, if you use both the AWS IoT Greengrass Core SDK and the AWS SDK in the same package, make sure that your Lambda functions use the correct namespaces. For more information about how to create your deployment package, see:

Supported Platforms and Requirements

The AWS IoT Greengrass core software is supported on the platforms listed here, and requires a few dependencies.

GGC v1.7.0GGC v1.6.0GGC v1.5.0GGC v1.3.0GGC v1.1.0GGC v1.0.0
GGC v1.7.0
  • Supported platforms:

    • Architecture: ARMv7l; OS: Linux; Distribution: Raspbian Stretch, 2018-06-29. While several versions may work with AWS IoT Greengrass, we recommend this as it is the officially supported distribution.

    • Architecture: x86_64; OS: Linux; Distribution: Amazon Linux (amzn-ami-hvm-2016.09.1.20170119-x86_64-ebs), Ubuntu 14.04 – 16.04

    • Architecture: ARMv8 (AArch64); OS: Linux; Distribution: Arch Linux

    You can download the core software from the Software page in the AWS IoT console or from the AWS IoT Greengrass Core Software downloads.

  • The following items are required:

    • Minimum 128 MB RAM allocated to the AWS IoT Greengrass core device.

    • Linux kernel version 4.4 or greater: while several versions may work with AWS IoT Greengrass, for optimal security and performance, we recommend version 4.4 or greater.

    • Glibc library version 2.14 or greater.

    • The /var/run directory must be present on the device.

    • AWS IoT Greengrass requires hardlink and softlink protection to be enabled on the device. Without this, AWS IoT Greengrass can only be run in insecure mode, using the -i flag.

    • The ggc_user and ggc_group user and group must be present on the device.

    • The following Linux kernel configurations must be enabled on the device:

      • Namespace: CONFIG_IPC_NS, CONFIG_UTS_NS, CONFIG_USER_NS, CONFIG_PID_NS

      • CGroups: CONFIG_CGROUP_DEVICE, CONFIG_CGROUPS, CONFIG_MEMCG

      • Others: CONFIG_POSIX_MQUEUE, CONFIG_OVERLAY_FS, CONFIG_HAVE_ARCH_SECCOMP_FILTER, CONFIG_SECCOMP_FILTER, CONFIG_KEYS, CONFIG_SECCOMP

    • /dev/stdin, /dev/stdout, and /dev/stderr must be enabled.

    • The Linux kernel must support cgroups.

    • The memory cgroup must be enabled and mounted to allow AWS IoT Greengrass to set the memory limit for Lambda functions.

    • The root certificate for Amazon S3 and AWS IoT must be present in the system trust store.

  • The following items may be optional:

    • The devices cgroup must be enabled and mounted if Lambda functions with Local Resource Access (LRA) are used to open files on the AWS IoT Greengrass core device.

    • Python version 2.7 is required if Python Lambda functions are used. If so, ensure that it's added to your PATH environment variable.

    • NodeJS version 6.10 or greater is required if Node.JS Lambda functions are used. If so, ensure that it's added to your PATH environment variable.

    • Java version 8 or greater is required if Java Lambda functions are used. If so, ensure that it's added to your PATH environment variable.

    • The following commands are required for Greengrass OTA Agent: wget, realpath, tar, readlink, basename, dirname, pidof, df, grep, and umount.

GGC v1.6.0
  • Supported platforms:

    • Architecture: ARMv7l; OS: Linux; Distribution: Raspbian Jessie, 2017-03-02

      Note

      You can choose to use Raspbian Stretch instead of Jessie. Using Stretch will require additional memory set-up. For more information, see this step.

    • Architecture: x86_64; OS: Linux; Distribution: Amazon Linux (amzn-ami-hvm-2016.09.1.20170119-x86_64-ebs)

    • Architecture: x86_64; OS: Linux; Distribution: Ubuntu 14.04 – 16.04

    • Architecture: ARMv8 (AArch64); OS: Linux; Distribution: Ubuntu 14.04 – 16.04 (Annapurna Alpine V2)

  • The following items are required:

    • Minimum 128 MB RAM allocated to the AWS IoT Greengrass core device.

    • Linux kernel version 4.4 or greater: while several versions may work with AWS IoT Greengrass, for optimal security and performance, we recommend version 4.4 or greater.

    • Glibc library version 2.14 or greater.

    • The /var/run directory must be present on the device.

    • AWS IoT Greengrass requires hardlink and softlink protection to be enabled on the device. Without this, AWS IoT Greengrass can only be run in insecure mode, using the -i flag.

    • The ggc_user and ggc_group user and group must be present on the device.

    • The following Linux kernel configurations must be enabled on the device:

      • Namespace: CONFIG_IPC_NS, CONFIG_UTS_NS, CONFIG_USER_NS, CONFIG_PID_NS

      • CGroups: CONFIG_CGROUP_DEVICE, CONFIG_CGROUPS, CONFIG_MEMCG

      • Others: CONFIG_POSIX_MQUEUE, CONFIG_OVERLAY_FS, CONFIG_HAVE_ARCH_SECCOMP_FILTER, CONFIG_SECCOMP_FILTER, CONFIG_KEYS, CONFIG_SECCOMP

    • /dev/stdin, /dev/stdout, and /dev/stderr must be enabled.

    • The Linux kernel must support cgroups.

    • The memory cgroup must be enabled and mounted to allow AWS IoT Greengrass to set the memory limit for Lambda functions.

    • The root certificate for Amazon S3 and AWS IoT must be present in the system trust store.

  • The following items may be optional:

    • The devices cgroup must be enabled and mounted if Lambda functions with Local Resource Access (LRA) are used to open files on the AWS IoT Greengrass core device.

    • Python version 2.7 is required if Python Lambda functions are used. If so, ensure that it's added to your PATH environment variable.

    • NodeJS version 6.10 or greater is required if Node.JS Lambda functions are used. If so, ensure that it's added to your PATH environment variable.

    • Java version 8 or greater is required if Java Lambda functions are used. If so, ensure that it's added to your PATH environment variable.

    • OpenSSL 1.01 or greater is required for Greengrass OTA Agent as well as the following commands: wget, realpath, tar, readlink, basename, dirname, pidof, df, grep, and umount.

GGC v1.5.0
  • Supported platforms:

    • Architecture: ARMv7l; OS: Linux; Distribution: Raspbian Jessie, 2017-03-02

      Note

      You can choose to use Raspbian Stretch instead of Jessie. Using Stretch will require additional memory set-up. For more information, see this step.

    • Architecture: x86_64; OS: Linux; Distribution: Amazon Linux (amzn-ami-hvm-2016.09.1.20170119-x86_64-ebs)

    • Architecture: x86_64; OS: Linux; Distribution: Ubuntu 14.04 – 16.04

    • Architecture: ARMv8 (AArch64); OS: Linux; Distribution: Ubuntu 14.04 – 16.04 (Annapurna Alpine V2)

  • The following items are required:

    • Minimum 128 MB RAM allocated to the AWS IoT Greengrass core device.

    • Linux kernel version 4.4 or greater: while several versions may work with AWS IoT Greengrass, for optimal security and performance, we recommend version 4.4 or greater.

    • Glibc library version 2.14 or greater.

    • The /var/run directory must be present on the device.

    • AWS IoT Greengrass requires hardlink and softlink protection to be enabled on the device. Without this, AWS IoT Greengrass can only be run in insecure mode, using the -i flag.

    • The ggc_user and ggc_group user and group must be present on the device.

    • The following Linux kernel configurations must be enabled on the device:

      • Namespace: CONFIG_IPC_NS, CONFIG_UTS_NS, CONFIG_USER_NS, CONFIG_PID_NS

      • CGroups: CONFIG_CGROUP_DEVICE, CONFIG_CGROUPS, CONFIG_MEMCG

      • Others: CONFIG_POSIX_MQUEUE, CONFIG_OVERLAY_FS, CONFIG_HAVE_ARCH_SECCOMP_FILTER, CONFIG_SECCOMP_FILTER, CONFIG_KEYS, CONFIG_SECCOMP

    • /dev/stdin, /dev/stdout, and /dev/stderr must be enabled.

    • The Linux kernel must support cgroups.

    • The memory cgroup must be enabled and mounted to allow AWS IoT Greengrass to set the memory limit for Lambda functions.

    • The root certificate for Amazon S3 and AWS IoT must be present in the system trust store.

  • The following items may be optional:

    • The devices cgroup must be enabled and mounted if Lambda functions with Local Resource Access (LRA) are used to open files on the AWS IoT Greengrass core device.

    • Python version 2.7 is required if Python Lambda functions are used. If so, ensure that it's added to your PATH environment variable.

    • NodeJS version 6.10 or greater is required if Node.JS Lambda functions are used. If so, ensure that it's added to your PATH environment variable.

    • Java version 8 or greater is required if Java Lambda functions are used. If so, ensure that it's added to your PATH environment variable.

    • OpenSSL 1.01 or greater is required for Greengrass OTA Agent as well as the following commands: wget, realpath, tar, readlink, basename, dirname, pidof, df, grep, and umount.

GGC v1.3.0
  • Supported platforms:

    • Architecture: ARMv7l; OS: Linux; Distribution: Raspbian Jessie, 2017-03-02

    • Architecture: x86_64; OS: Linux; Distribution: Amazon Linux (amzn-ami-hvm-2016.09.1.20170119-x86_64-ebs)

    • Architecture: x86_64; OS: Linux; Distribution: Ubuntu 14.04 – 16.04

    • Architecture: ARMv8 (AArch64); OS: Linux; Distribution: Ubuntu 14.04 – 16.04 (Annapurna Alpine V2)

  • The following items are required:

    • Minimum 128 MB RAM allocated to the AWS IoT Greengrass core device.

    • Linux kernel version 4.4 or later. Although several versions might work with AWS IoT Greengrass, for optimal security and performance, we recommend version 4.4 or later.

    • Glibc library version 2.14 or later.

    • The /var/run directory must be present on the device.

    • AWS IoT Greengrass requires hardlink and softlink protection to be enabled on the device. Without this, AWS IoT Greengrass can only be run in insecure mode, using the -i flag.

    • The ggc_user and ggc_group user and group must be present on the device.

    • The following Linux kernel configurations must be enabled on the device:

      • Namespace: CONFIG_IPC_NS, CONFIG_UTS_NS, CONFIG_USER_NS, CONFIG_PID_NS

      • CGroups: CONFIG_CGROUP_DEVICE, CONFIG_CGROUPS, CONFIG_MEMCG

      • Others: CONFIG_POSIX_MQUEUE, CONFIG_OVERLAY_FS, CONFIG_HAVE_ARCH_SECCOMP_FILTER, CONFIG_SECCOMP_FILTER, CONFIG_KEYS, CONFIG_SECCOMP

    • The sqlite3 package is required for AWS IoT device shadows. Make sure it’s added to your PATH environment variable.

    • /dev/stdin, /dev/stdout, and /dev/stderr must be enabled.

    • The Linux kernel must support cgroups.

    • The memory cgroup must be enabled and mounted to allow AWS IoT Greengrass to set the memory limit for Lambda functions.

    • The root certificate for Amazon S3 and AWS IoT must be present in the system trust store.

  • The following items might be optional:

    • The devices cgroup must be enabled and mounted if Lambda functions with local resource access (LRA) are used to open files on the AWS IoT Greengrass core device.

    • Python version 2.7 is required if Python Lambda functions are used. If so, make sure that it's added to your PATH environment variable.

    • Node.js version 6.10 or later is required if Node.js Lambda functions are used. If so, make sure that it's added to your PATH environment variable.

    • Java version 8 or later is required if Java Lambda functions are used. If so, make sure that it's added to your PATH environment variable.

    • OpenSSL 1.01 or later is required for Greengrass OTA Agent as are the following commands: wget, realpath, tar, readlink, basename, dirname, pidof, df, grep, and umount.

GGC v1.1.0
  • Supported platforms:

    • Architecture: ARMv7l; OS: Linux; Distribution: Raspbian Jessie, 2017-03-02

    • Architecture: x86_64; OS: Linux; Distribution: Amazon Linux (amzn-ami-hvm-2016.09.1.20170119-x86_64-ebs)

    • Architecture: x86_64; OS: Linux; Distribution: Ubuntu 14.04 – 16.04

    • Architecture: ARMv8 (AArch64); OS: Linux; Distribution: Ubuntu 14.04 – 16.04 (Annapurna Alpine V2)

  • The following items are required:

    • Minimum 128 MB RAM allocated to the AWS IoT Greengrass core device.

    • Linux kernel version 4.4 or later. Although several versions might work with AWS IoT Greengrass, for optimal security and performance, we recommend version 4.4 or later.

    • Glibc library version 2.14 or later.

    • The /var/run directory must be present on the device.

    • AWS IoT Greengrass requires hardlink and softlink protection to be enabled on the device. Without this, AWS IoT Greengrass can only be run in insecure mode, using the -i flag.

    • The ggc_user and ggc_group user and group must be present on the device.

    • The following Linux kernel configurations must be enabled on the device:

      • Namespace: CONFIG_IPC_NS, CONFIG_UTS_NS, CONFIG_USER_NS, CONFIG_PID_NS

      • CGroups: CONFIG_CGROUP_DEVICE, CONFIG_CGROUPS, CONFIG_MEMCG

      • Others: CONFIG_POSIX_MQUEUE, CONFIG_OVERLAY_FS, CONFIG_HAVE_ARCH_SECCOMP_FILTER, CONFIG_SECCOMP_FILTER, CONFIG_KEYS, CONFIG_SECCOMP

    • The sqlite3 package is required for AWS IoT device shadows. Make sure it’s added to your PATH environment variable.

    • /dev/stdin, /dev/stdout, and /dev/stderr must be enabled.

    • The Linux kernel must support cgroups.

    • The memory cgroup must be enabled and mounted to allow AWS IoT Greengrass to set the memory limit for Lambda functions.

    • The root certificate for Amazon S3 and AWS IoT must be present in the system trust store.

  • The following items might be optional:

    • Python version 2.7 is required if Python Lambda functions are used. If so, make sure that it's added to your PATH environment variable.

    • Node.js version 6.10 or later is required if Node.js Lambda functions are used. If so, make sure that it's added to your PATH environment variable.

    • Java version 8 or later is required if Java Lambda functions are used. If so, make sure that it's added to your PATH environment variable.

GGC v1.0.0
  • Supported platforms:

    • Architecture: ARMv7l; OS: Linux; Distribution: Raspbian Jessie, 2017-03-02

    • Architecture: x86_64; OS: Linux; Distribution: Amazon Linux (amzn-ami-hvm-2016.09.1.20170119-x86_64-ebs)

    • Architecture: x86_64; OS: Linux; Distribution: Ubuntu 14.04 – 16.04

    • Architecture: ARMv8 (AArch64); OS: Linux; Distribution: Ubuntu 14.04 – 16.04 (Annapurna Alpine V2)

  • The following items are required:

    • Minimum 128 MB RAM allocated to the AWS IoT Greengrass core device.

    • Linux kernel version 4.4 or later. Although several versions might work with AWS IoT Greengrass, for optimal security and performance, we recommend version 4.4 or later.

    • Glibc library version 2.14 or later.

    • The /var/run directory must be present on the device.

    • AWS IoT Greengrass requires hardlink and softlink protection to be enabled on the device. Without this, AWS IoT Greengrass can only be run in insecure mode, using the -i flag.

    • The ggc_user and ggc_group user and group must be present on the device.

    • The following Linux kernel configurations must be enabled on the device:

      • Namespace: CONFIG_IPC_NS, CONFIG_UTS_NS, CONFIG_USER_NS, CONFIG_PID_NS

      • CGroups: CONFIG_CGROUP_DEVICE, CONFIG_CGROUPS, CONFIG_MEMCG

      • Others: CONFIG_POSIX_MQUEUE, CONFIG_OVERLAY_FS, CONFIG_HAVE_ARCH_SECCOMP_FILTER, CONFIG_SECCOMP_FILTER, CONFIG_KEYS, CONFIG_SECCOMP

    • The sqlite3 package is required for AWS IoT device shadows. Make sure it’s added to your PATH environment variable.

    • /dev/stdin, /dev/stdout, and /dev/stderr must be enabled.

    • The Linux kernel must support cgroups.

    • The memory cgroup must be enabled and mounted to allow AWS IoT Greengrass to set the memory limit for Lambda functions.

    • The root certificate for Amazon S3 and AWS IoT must be present in the system trust store.

  • The following items might be optional:

    • Python version 2.7 is required if Python Lambda functions are used. If so, make sure that it's added to your PATH environment variable.

AWS IoT Greengrass Downloads

You can use the following information to locate and download software for use with AWS IoT Greengrass.

AWS IoT Greengrass Core Software

AWS IoT Greengrass Software extends AWS functionality onto a AWS IoT Greengrass core device, enabling local Devices to act locally on the data they generate.

AWS IoT Greengrass Core SDK Software

The AWS IoT Greengrass Core SDK enables Lambda functions to interact with the AWS IoT Greengrass core on which they run.

AWS IoT Greengrass Docker Software

The AWS IoT Greengrass Docker Software download enables you to run AWS IoT Greengrass in a Docker container. Instructions are provided in the Docker file.

v1.7.0
v1.7.0

AWS IoT Greengrass ML SDK Software

The AWS IoT Greengrass Machine Learning SDK enables the Lambda functions you author to consume the machine learning model available on the device.

v1.0.0
v1.0.0

We Want to Hear from You

We welcome your feedback. To contact us, visit the AWS IoT Greengrass Forum.