AWS IoT Greengrass Version 1 entered the extended life phase on June 30, 2023. For more information, see the AWS IoT Greengrass V1 maintenance policy. After this date, AWS IoT Greengrass V1 won't release updates that provide features, enhancements, bug fixes, or security patches. Devices that run on AWS IoT Greengrass V1 won't be disrupted and will continue to operate and to connect to the cloud. We strongly recommend that you migrate to AWS IoT Greengrass Version 2, which adds significant new features and support for additional platforms.
Create and package a Lambda function
The example Python Lambda function in this module uses the AWS IoT Greengrass Core SDK for Python to publish MQTT messages.
In this step, you:
-
Download the AWS IoT Greengrass Core SDK for Python to your computer (not the AWS IoT Greengrass core device).
-
Create a Lambda function deployment package that contains the function code and dependencies.
-
Use the Lambda console to create a Lambda function and upload the deployment package.
-
Publish a version of the Lambda function and create an alias that points to the version.
To complete this module, Python 3.7 must be installed on your core device.
-
From the AWS IoT Greengrass Core SDK downloads page, download the AWS IoT Greengrass Core SDK for Python to your computer.
-
Unzip the downloaded package to get the Lambda function code and the SDK.
The Lambda function in this module uses:
-
The
greengrassHelloWorld.py
file inexamples\HelloWorld
. This is your Lambda function code. Every five seconds, the function publishes one of two possible messages to thehello/world
topic. -
The
greengrasssdk
folder. This is the SDK.
-
-
Copy the
greengrasssdk
folder into theHelloWorld
folder that containsgreengrassHelloWorld.py
. -
To create the Lambda function deployment package, save
greengrassHelloWorld.py
and thegreengrasssdk
folder to a compressedzip
file namedhello_world_python_lambda.zip
. Thepy
file andgreengrasssdk
folder must be in the root of the directory.On UNIX-like systems (including the Mac terminal), you can use the following command to package the file and folder:
zip -r hello_world_python_lambda.zip greengrasssdk greengrassHelloWorld.py
Note
Depending on your distribution, you might need to install
zip
first (for example, by runningsudo apt-get install zip
). The installation command for your distribution might be different.Now you're ready to create your Lambda function and upload the deployment package.
-
Open the Lambda console and choose Create function.
-
Choose Author from scratch.
-
Name your function
Greengrass_HelloWorld
, and set the remaining fields as follows:-
For Runtime, choose Python 3.7.
-
For Permissions, keep the default setting. This creates an execution role that grants basic Lambda permissions. This role isn't used by AWS IoT Greengrass.
Choose Create function.
-
-
Upload your Lambda function deployment package:
-
On the Code tab, under Code source, choose Upload from. From the dropdown, choose .zip file.
-
Choose Upload, and then choose your
hello_world_python_lambda.zip
deployment package. Then, choose Save. -
On the Code tab for the function, under Runtime settings, choose Edit, and then enter the following values.
-
For Runtime, choose Python 3.7.
-
For Handler, enter
greengrassHelloWorld.function_handler
-
-
Choose Save.
Note
The Test button on the AWS Lambda console doesn't work with this function. The AWS IoT Greengrass Core SDK doesn't contain modules that are required to run your Greengrass Lambda functions independently in the AWS Lambda console. These modules (for example,
greengrass_common
) are supplied to the functions after they are deployed to your Greengrass core.
-
-
Publish the Lambda function:
-
From the Actions menu at the top of the page, choose Publish new version.
-
For Version description, enter
First version
, and then choose Publish.
-
-
Create an alias for the Lambda function version:
Note
Greengrass groups can reference a Lambda function by alias (recommended) or by version. Using an alias makes it easier to manage code updates because you don't have to change your subscription table or group definition when the function code is updated. Instead, you just point the alias to the new function version.
-
From the Actions menu at the top of the page, choose Create alias.
-
Name the alias
GG_HelloWorld
, set the version to1
(which corresponds to the version that you just published), and then choose Save.Note
AWS IoT Greengrass doesn't support Lambda aliases for $LATEST versions.
-