What is AWS Greengrass?

AWS Greengrass is software that extends AWS cloud capabilities to local devices, thereby enabling them to collect and analyze data closer to the source of information, while also allowing devices to securely communicate with each other on local networks. More specifically, Greengrass enables developers to author serverless code (AWS Lambda functions) in the cloud and conveniently deploy them to devices for local execution of applications.

Amazon Greengrass is available

Get Started Here

 

 

What value does AWS Greengrass provide customers?

AWS Greengrass enables customers to build IoT devices that can execute local applications, which can be programmed with AWS lambda functions that are backed by the cloud. Specifically, Greengrass allows customers to locally execute Lambda functions that are triggered by local events, messages from the cloud, or other desired sources.

AWS Greengrass enables devices to securely communicate on a local network and exchange messages with each other without having to connect to the cloud. Moreover, Greengrass provides a local pub/sub message broker that can intelligently buffer messages in the event of lost connectivity, so that inbound and outbound messages to the cloud can be buffered.

AWS Greengrass protects user data with secure authentication and authorization of devices, as well as secure connectivity, both within the local network and between local devices and the cloud. Device security credentials continue to function until a defined expiration date, even if connectivity to the cloud is disrupted, so that the devices can continue to securely communicate locally.

AWS Greengrass provides convenient fleet management of devices through secure over-the-air updates of software versions and Lambda functions. In this way, customers can scale their IoT solutions by centrally administering devices, permissions, applications from the cloud.

What are the major components of AWS Greengrass software? What does each component do?

AWS Greengrass consists of two software distributions: Greengrass Core and AWS IoT Device SDK.

The AWS Greengrass Core software: 1) Allows deployment and execution of local applications created using Lambda functions and managed through device shadows. 2) Enables local messaging between devices over a secure network via a pub/sub model through MQTT protocol. 3) Ensures secure connections between devices and with the cloud via device authentication and authorization. 4) Provides device fleet management from the cloud via a device registry and over-the-air updates.

The Device SDK on the AWS Greengrass Core is an extension of the existing AWS IoT Device SDK, which enables constrained devices to discover, connect to, and communicate with the Greengrass Core Device. Devices that run the AWS IoT Device SDK are referred to as Devices).

See the chart below for a distinction between The AWS Greengrass Core and AWS IoT Device SDK:

Functionality

AWS Greengrass Core

AWS IoT Device SDK

Role

Providing local services (e.g. storage), command and control of AWS Greengrass Devices that run the AWS IoT Device SDK.

Interacting with the environment.

Runs Lambda functions?

Yes

No, but can invoke via AWS Greengrass Core.

Runs in response to:

Time, messages from devices and/or the cloud

Messages, sensors, interrupts, etc.

Runs messaging broker?

Yes

No

Runs storage subsystem?

Yes

No

Minimum requirements

1GHz and 128MB (more depending on use case)

With Cloud Discovery: C++

Without Cloud Discovery: Node.js, Python 2.7

Persistent local storage

Required

Not required

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. Highly versatile, Greengrass Core can run on devices that range from a Raspberry Pi to a server-level appliance.

Which Python Lambdas can be deployed to Greengrass?

Any Lambda that uses the Python 2.7 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.

What minimum hardware specifications are required to run the AWS IoT Device SDK? What languages does the Device SDK support?

Any device that supports TLS can use the AWS IoT Device SDK. AWS Greengrass is available on the AWS IoT Device SDK via C++.

What is AWS Greengrass’ relevance in the context of AWS cloud services?

AWS Greengrass makes it easier for customers to build systems of devices (including heterogeneous devices) that work together with AWS cloud. Greengrass is not designed to substitute the cloud, but instead to provide tools to customers to use the cloud to build applications and systems that can be deployed on premise. Greengrass is an extension of the AWS cloud services. By using Greengrass for local execution, customers can be selective about the data that should be processed and stored locally versus the most valuable data that should be processed and stored in the cloud.  

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:

ADLink MXE-210 APL-I, CPU: Atom E3845/E3826

ADLink MXE-200, CPU: Atom E3845/E3826

ADLink MXE-1400, CPU: Atom E3845

Advantech EIS-D110, CPU: Celeron J1900

Advantech EIS-D150, CPU: Celeron J1900

Advantech EIS-D210, 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

Advantech UTX-3115, CPU: Atom E3826

Advantech UTX-3117, CPU: Atom E3930

IEI/QNAP TVS-682, CPU: Core i3-6100

Dell 5000 Series, Atom E3825

Digi CC-WMX6UL-START; ConnectCore 6UL Starter Kit

Digi CC-WMX6UL-KIT;ConnectCore 6UL JSK

Digi CC-WMX6-KIT;ConnectCore Wi-i.MX6 JSK

Qualcomm DragonBoard 410C

Raspberry Pi 3 Model B

Samsung Artik 710

Samsung Artik 530

Q. What CPU architectures and operating systems are compatible with AWS Greengrass Core?

The following operating systems and CPU architectures are compatible with Greengrass Core:

  • Operating Systems: Ubuntu 14.04 LTS, Jessie Kernel 4.1/4.4, and other Linux distributions with Kernel 4.4 or greater
  • CPU Architectures: x86_64, Armv7, Aarch64 (ArmV8)

See the next FAQ for a list of detailed dependencies.

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
  • Python - version 2.7 or greater
  • Glibc library - version 2.14
  • Linux Kernel - version 4.4.11+ with OverlayFS enabled
  • boto3 (latest)
  • botocore (latest)
  • OpenSSL – version 1.0.2 or greater
  • libseccomp
  • bash

 

2.Kernel configuration

  • Mqueue: CONFIG_POSIX_MQUEUE
  • Overlay: CONFIG_OF_OVERLAY
  • Overlay FS: CONFIG_OVERLAY_FS
  • Seccomp Arch Filter: CONFIG_HAVE_ARCH_SECCOMP_FILTER
  • Seccomp Filter: CONFIG_SECCOMP_FILTER
  • Seccomp: CONFIG_SECCOMP
  • Devpts: CONFIG_DEVPTS_MULTIPLE_INSTANCES

 

3.Kernel configuration for Namespace - Kernels must be built with these configurations enabled:

  • IPC isolation: CONFIG_IPC_NS
  • Network isolation: CONFIG_NET_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 freezer cgroup: CONFIG_CGROUP_FREEZER
  • Enable devices cgroup: CONFIG_CGROUP_DEVICE
  • Enable pids cgroup: CONFIG_CGROUP_PIDS