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.
AWS CloudFormation support for AWS IoT Greengrass
AWS CloudFormation is a service that can help you create, manage, and replicate your AWS resources. You can use AWS CloudFormation templates to define AWS IoT Greengrass groups and the client devices, subscriptions, and other components that you want to deploy. For an example, see Example template.
The resources and infrastructure that you generate from a template is called a stack. You can define all of your resources in one template or refer to resources from other stacks. For more information about AWS CloudFormation templates and features, see What is AWS CloudFormation? in the AWS CloudFormation User Guide.
Creating resources
AWS CloudFormation templates are JSON or YAML documents that describe the properties and relationships of AWS resources. The following AWS IoT Greengrass resources are supported:
Groups
Cores
Client devices (devices)
Lambda functions
Connectors
Resources (local, machine learning, and secret)
Subscriptions
Loggers (logging configurations)
In AWS CloudFormation templates, the structure and syntax of Greengrass resources are based on the
AWS IoT Greengrass API. For example, the example
template associates a top-level DeviceDefinition
with a
DeviceDefinitionVersion
that contains an individual client device. For
more information, see Overview of the AWS IoT Greengrass group object model.
The AWS IoT Greengrass resource types reference in the AWS CloudFormation User Guide describes the Greengrass resources that you can manage with AWS CloudFormation. When you use AWS CloudFormation templates to create Greengrass resources, we recommend that you manage them only from AWS CloudFormation. For example, you should update your template if you want to add, change, or remove a device (instead of using the AWS IoT Greengrass API or AWS IoT console). This allows you to use rollback and other AWS CloudFormation change management features. For more information about using AWS CloudFormation to create and manage your resources and stacks, see Working with stacks in the AWS CloudFormation User Guide.
For a walkthrough that shows how to create and deploy AWS IoT Greengrass resources in an AWS CloudFormation template, see Automating AWS IoT Greengrass setup with AWS CloudFormation
Deploying resources
After you create an AWS CloudFormation stack that contains your group version, you can use the AWS CLI or AWS IoT console to deploy it.
Note
To deploy a group, you must have a Greengrass service role associated with your AWS account. The service role allows AWS IoT Greengrass to access your resources in AWS Lambda and other AWS services. This role should exist if you already deployed a Greengrass group in the current AWS Region. For more information, see Greengrass service role.
- To deploy the group (AWS CLI)
-
-
Run the create-deployment command.
aws greengrass create-deployment --group-id
GroupId
--group-version-idGroupVersionId
--deployment-type NewDeploymentNote
The
CommandToDeployGroup
statement in the example template shows how to output the command with your group and group version IDs when you create a stack.
-
- To deploy the group (console)
-
In the AWS IoT console navigation pane, under Manage, expand Greengrass devices, and then choose Groups (V1).
Choose your group.
-
On the group configuration page, choose Deploy.
Example template
The following example template creates a Greengrass group that contains a core, client
device, function, logger, subscription, and two resources. To do this, the template
follows the object model of the AWS IoT Greengrass API. For example, the client devices that you want
to add to the group are contained in a DeviceDefinitionVersion
resource,
which is associated with a DeviceDefinition
resource. To add the devices to
the group, the group version references the ARN of the
DeviceDefinitionVersion
.
The template includes parameters that let you specify the certificate ARNs for the core
and device and the version ARN of the source Lambda function (which is an AWS Lambda resource).
It uses the Ref
and GetAtt
intrinsic functions to
reference IDs, ARNs, and other attributes that are required to create Greengrass resources.
The template also defines two AWS IoT devices (things), which represent the core and client device that are added to the Greengrass group.
After you create the stack with your Greengrass resources, you can use the AWS CLI or the AWS IoT console to deploy the group.
Note
The CommandToDeployGroup
statement in the example
shows how to output a complete create-deployment CLI command that you can use
to deploy your group.
Supported AWS Regions
Currently, you can create and manage AWS IoT Greengrass resources only in the following AWS Regions:
US East (Ohio)
US East (N. Virginia)
US West (Oregon)
Asia Pacific (Mumbai)
Asia Pacific (Seoul)
Asia Pacific (Singapore)
Asia Pacific (Sydney)
Asia Pacific (Tokyo)
China (Beijing)
Europe (Frankfurt)
Europe (Ireland)
Europe (London)
AWS GovCloud (US-West)