Set off AWS IoT Greengrass element deployments from AWS CodeCommit

As computing energy extends into Web of Factor (IoT) units, software program turns into increasingly essential to creating selections, processing information, and offering perception to finish customers on the system. Units are the spine of many companies and purposes. Whatever the use case, clients profit from fast, widespread deployment of software program updates and enhancements throughout system fleets. With AWS IoT Greengrass V2, AWS clients can simply construct, deploy, and handle customized system software program as AWS IoT Greengrass elements. AWS IoT Greengrass handles actions reminiscent of monitoring the element variations, managing the fleets of units, and orchestrating element updates.

On this weblog, we are going to reveal how one can automate the deployment of element adjustments on AWS IoT Greengrass. This answer reduces the time it takes builders to deploy customized system software program throughout a fleet from minutes to seconds, saving builders beneficial time and enhancing agility.

This answer makes use of a centralized code repository with Steady Integration and Steady Deployment (CI/CD) to help in following DevOps greatest practices. For extra details about CI/CD and DevOps on AWS, reference the Working towards Steady Integration and Steady Supply on AWS whitepaper.

On this article, we are going to current a technique for automating the deployment of customized AWS IoT Greengrass elements. AWS IoT Greengrass contains AWS-provided elements so as to add widespread performance to your units and likewise permits for customized elements creation. Customized elements might analyze information, show a front-end dashboard, or run an software with intermittent connectivity to the cloud. For demonstration functions, we will likely be utilizing three pre-built elements. Nonetheless, this answer is definitely adaptable to elements chances are you’ll have already got working in your setting.

This answer clones a Github repository to an AWS CodeCommit repository for example implementation. Different implementations can be utilized so long as the code is deployed to CodeCommit. Originally of the steps under, we are going to define how one can clone a repository from Github into AWS CodeCommit. Nonetheless, different code repositories may be imported into AWS CodeCommit if essential in your use case. For extra data on migrating code to an AWS CodeCommit repo, see the documentation right here.

For this stroll by way of, you must have the next stipulations:

Set up AWS CLI

Ensure you have put in and setup AWS CLI with the required permissions:

Set up CDK

Here’s a information to Get Began with AWS CDK:

Please confirm the cdk package deal model put in is 2.x or larger.

The answer makes use of an AWS CodeCommit repo to retailer the element code, a Lambda operate to set off the construct, and AWS CodeBuild to orchestrate the deployment of the up to date element. Lastly, AWS IoT Greengrass pushes the up to date element out to the units.ggv2-cdk-arch

  • A commit is made to the AWS CodeCommit repository. An Amazon CloudWatch Occasion occasion has been configured such that any time a commit is made to the configured repository, the occasion happens.
  • An AWS Lambda operate is triggered by the Amazon CloudWatch Occasion.  The AWS Lambda operate first determines if the commit was made on a file that’s a part of the supply code for the element. If that’s the case, it saves the element identify(s) as AWS CodeBuild Venture Atmosphere Variables and begins the AWS CodePipeline.
  • AWS CodeBuild job is triggered by the AWS CodePipeline. The AWS CodeBuild job runs a shell script which deploys the element to the units utilizing the AWS IoT Greengrass API.

AWS Cloud Growth Package (AWS CDK) is a framework for outlining cloud infrastructure in code, and provisioning it through AWS CloudFormation. If you’re new to the AWS CDK, observe the getting began information. 

The CDK will deploy the next assets within the AWS Account:

  • AWS CodePipeline
  • AWS Lambda
  • CodeBuild
  • Amazon S3
  • [Optional] Amazon EC2
  • AWS CLI v2
  • AWS CDK v2

Create and clone code repository

  • Create CodeCommit Venture
    • Go to AWS CodeCommit Console
    • Choose Create Repository
    • Present identify for the repository. For instance ggv2-cdk-blog-test
    • Select Create
  • Clone the CodeCommit repository in your native machine, for instance if the CodeCommit repository is known as  ggv2-cdk-blog:
  • With a view to deploy the cdk you have to to repeat the cdk contents from github repository:
    • To simply copy the contents of this github mission to your new mission, copy to your CodeCommit mission listing, and unzip
      • Word: The .gitignore file is a part of, in case you don’t discover the file after unzip examine your settings to view hidden information within the IDE

Supply code updates

Please replace following attributes in cdk.json file with acceptable values:

  • account
    • Account ID of your AWS account, for instance: 1234567890
  • codecommit_repository_arn
    • For instance: arn:aws:codecommit:us-east-1:111111111111:MyDemo*
  • area
  • create_core_device
    • acceptable values are true or false
    • Even in case you select false ensure to offer a reputation for an current core system within the possibility core_device_name and core_device_group_name
  • default_branch_name
    •  department to trace for the CodePipeline. For instance: foremost
  •   core_device_name
    •  The identify of your new/current Greengrass core system.
  •  core_device_group_name
    • The identify of your new/current Greengrass core system group.
  •  project_prefix

Deploy CDK pipeline

  • Arrange your virtualenv for Python. You might want to make use of python3 in alternative of python, relying in your native python configuration.
  • Bootstrap your account/area for CDK – exchange the suitable variables (i.e. ACCOUNT-ID, REGION, ADMIN-PROFILE) earlier than executing.
    • Instructions to run:
      • export CDK_NEW_BOOTSTRAP=1 
        npx cdk bootstrap --cloudformation-execution-policies arn:aws:iam::aws:coverage/AdministratorAccess 
      •  Word: Confirm you’ve got the AdministratorAccess coverage in your AWS account or you may customise the coverage for use by AWS CDK in an effort to create AWS assets
      • For instance, like this:
      • export CDK_NEW_BOOTSTRAP=1                                    
        npx cdk bootstrap --cloudformation-execution-policies arn:aws:iam::aws:coverage/<CustomPolicy> 
  • Commit updates to the repository and deploy the CDK app. You might have to git push origin <foremost department identify> , as an alternative of git push
  •  Non-obligatory: To replace in your individual mission, run the next:

The code repository for this weblog has pattern customized AWS IoT Greengrass elements, that can show the message Good day World within the log file of the element. The subsequent part will present extra details about constructing your individual AWS IoT Greengrass elements.

Including your individual AWS IoT Greengrass elements

The code on this weblog makes use of Greengrass Growth Package (gdk cli) in an effort to construct and publish Greengrass elements. For extra data please examine this documentation.

So as to add new elements to the mission, create a brand new element listing within the elements listing. Be certain your elements embody the next:

  • gdk-config.json (GDK configuration file)
  • buildspec.yml (for CodeBuild)
  • necessities.txt (for Python dependencies; at present utilized by supplied buildspec.yml examples)

Constructing AWS IoT Greengrass elements

Listed here are 5 tricks to construct AWS IoT Greengrass v2 Elements. For extra data please refer under:

Cleansing Up

  • CDK Cleanup
    • Run the next command out of your terminal on the trail the place the code repository exists (Instance: Customers/johndoe/desktop/ggv2-cdk-blog ~ %)
    • cdk destroy


You now have setup a DevOps pipeline for a number of elements in the identical code repository. With these enhancements, when a developer pushes code updates to elements within the repository, the AWS IoT Greengrass V2 elements routinely deploy a brand new model with the updates. Count on to see builders be capable to iterate quicker, creating enterprise worth and innovation at a brand new tempo.

Study extra about AWS IoT Greengrass by way of this fingers on workshop.  For extra details about public elements for AWS IoT Greengrass, please go to

In regards to the Authors

Jon Slominski is a Sr. Options Architect with the Prototyping & Cloud Engineering (PACE) workforce at AWS. Constructing prototypes targeted on IoT, AI/ML, and robotics, Jon helps clients innovate and envision the artwork of the potential. Exterior of labor, Jon enjoys spending time and touring along with his spouse and daughters.
Joyson Neville Lewis is an IoT Information Architect at AWS Skilled Providers. He has labored as a Software program/Information engineer earlier than diving into the Conversational AI and Industrial IoT house the place he works with firms to attach the dots between enterprise and AI utilizing Voice Assistant/Chatbot and IoT options.
Jack Tanny is an Affiliate Information/ML Engineer in AWS’s Skilled Providers workforce. He builds options that use information to resolve issues and unlock enterprise worth for our clients. In his free time, you may often discover Jack within the mountains, biking, snowboarding, or tenting.

Similar Posts

Leave a Reply

Your email address will not be published.