Skip to content

Greengrass V2 Local Deployment

0

Hey Team,

We have setup like there is already one Greengrass Deployment Created over cloud for with thingGroup Inventory. When first time device onboard it is getting mapped under Inventory thing group. On the device greengrass automatically starts deployment, and start downloading the component artifacts. Now, we are having an issue like on assembly line we have lower internet connectivity. Component download is taking much time. So, what we are thinking is we have components artifacts & recipes downloaded and SCP those to device via trusted machine and trigger the greengrass restart. Before we start anything I thought to explore this page https://docs.aws.amazon.com/greengrass/v2/developerguide/gg-cli-deployment.html. Now, what I have tried is I have few components already deployed on the device via cloud. Consider following are the components

  1. aws.greengrass.LogManager
  2. aws.greengrass.SecureTunneling
  3. aws.greengrass.telemetry.NucleusEmitter

Now, using following command I am trying to remove those components

sudo /greengrass/v2/bin/greengrass-cli deployment create --remove "aws.greengrass.LogManager,aws.greengrass.SecureTunneling,aws.greengrass.telemetry.NucleusEmitter"

The movement I trigger this command it returns me the deployment id but in greengrass.log file I am seeing following in logs

2025-08-13T09:12:44.103Z [INFO] (pool-3-thread-76) com.aws.greengrass.componentmanager.ComponentManager: prepare-package-start. {packageIdentifier=ElsaResources-v2.0.0} 2025-08-13T09:12:44.168Z [INFO] (pool-3-thread-76) com.aws.greengrass.componentmanager.ComponentManager: prepare-package-start. {packageIdentifier=aws.greengrass.LogManager-v2.3.7} 2025-08-13T09:12:44.171Z [INFO] (pool-3-thread-76) com.aws.greengrass.componentmanager.ComponentManager: prepare-package-start. {packageIdentifier=OpenWakeWord-v3.1.0} 2025-08-13T09:12:44.186Z [INFO] (pool-3-thread-76) com.aws.greengrass.componentmanager.ComponentManager: prepare-package-start. {packageIdentifier=VideoConferenceManager-v25.0.0} 2025-08-13T09:12:44.194Z [INFO] (pool-3-thread-76) com.aws.greengrass.componentmanager.ComponentManager: prepare-package-start. {packageIdentifier=ElsaVoice-v23.1.0} 2025-08-13T09:12:44.196Z [INFO] (pool-3-thread-76) com.aws.greengrass.componentmanager.ComponentManager: prepare-package-start. {packageIdentifier=TelementryManager-v5.0.1} 2025-08-13T09:12:44.250Z [INFO] (pool-3-thread-76) com.aws.greengrass.componentmanager.ComponentManager: prepare-package-start. {packageIdentifier=aws.greengrass.SecretManager-v2.1.8} 2025-08-13T09:12:44.263Z [INFO] (pool-3-thread-76) com.aws.greengrass.componentmanager.ComponentManager: prepare-package-start. {packageIdentifier=CameraApp-v2.1.0} 2025-08-13T09:12:44.443Z [INFO] (pool-3-thread-76) com.aws.greengrass.componentmanager.ComponentManager: prepare-package-start. {packageIdentifier=ElsaLauncher-v27.1.0-orin_dp} 2025-08-13T09:12:44.578Z [INFO] (pool-3-thread-76) com.aws.greengrass.componentmanager.ComponentManager: prepare-package-start. {packageIdentifier=aws.greengrass.Nucleus-v2.12.6} 2025-08-13T09:12:44.652Z [INFO] (pool-3-thread-76) com.aws.greengrass.componentmanager.ComponentManager: prepare-package-start. {packageIdentifier=DICOMViewer-v2.0.0} 2025-08-13T09:12:44.685Z [INFO] (pool-3-thread-76) com.aws.greengrass.componentmanager.ComponentManager: prepare-package-start. {packageIdentifier=aws.greengrass.TokenExchangeService-v2.0.3} 2025-08-13T09:12:44.686Z [INFO] (pool-3-thread-76) com.aws.greengrass.componentmanager.ComponentManager: prepare-package-start. {packageIdentifier=aws.greengrass.Cli-v2.12.6} 2025-08-13T09:12:44.722Z [INFO] (pool-3-thread-76) com.aws.greengrass.componentmanager.ComponentManager: prepare-package-start. {packageIdentifier=GeneralManager-v26.1.2-orin} 2025-08-13T09:12:44.755Z [INFO] (pool-3-thread-76) com.aws.greengrass.componentmanager.ComponentManager: prepare-package-start. {packageIdentifier=DatabaseManager-v26.0.0-JetPack} 2025-08-13T09:12:44.924Z [INFO] (pool-3-thread-76) com.aws.greengrass.componentmanager.ComponentManager: prepare-package-start. {packageIdentifier=Mirotalk-v25.0.0} 2025-08-13T09:12:45.526Z [INFO] (pool-3-thread-76) com.aws.greengrass.componentmanager.ComponentManager: prepare-package-start. {packageIdentifier=AuthenticationManager-v25.1.0-orin} 2025-08-13T09:12:45.718Z [INFO] (pool-3-thread-76) com.aws.greengrass.componentmanager.ComponentManager: prepare-package-start. {packageIdentifier=MusicManager-v21.1.0-orin} **2025-08-13T09:12:45.816Z [INFO] (pool-3-thread-76) com.aws.greengrass.componentmanager.ComponentManager: prepare-package-start. {packageIdentifier=aws.greengrass.SecureTunneling-v1.0.18} **2025-08-13T09:12:45.862Z [INFO] (pool-3-thread-76) com.aws.greengrass.componentmanager.ComponentManager: prepare-package-start. {packageIdentifier=InputVoiceManager-v25.1.0-orin} 2025-08-13T09:12:45.897Z [INFO] (pool-3-thread-76) com.aws.greengrass.componentmanager.ComponentManager: prepare-package-start. {packageIdentifier=UpdateManager-v27.1.0-orin} 2025-08-13T09:12:45.910Z [INFO] (pool-3-thread-76) com.aws.greengrass.componentmanager.ComponentManager: prepare-package-start. {packageIdentifier=FrontendManager-v26.0.0} 2025-08-13T09:12:45.919Z [INFO] (pool-3-thread-76) com.aws.greengrass.componentmanager.ComponentManager: prepare-package-start. {packageIdentifier=NetworkManager-v25.1.0-orin} 2025-08-13T09:12:45.935Z [INFO] (pool-3-thread-76) com.aws.greengrass.componentmanager.ComponentManager: prepare-package-start. {packageIdentifier=SecretManager-v5.0.3} 2025-08-13T09:12:45.994Z [INFO] (pool-3-thread-76) com.aws.greengrass.componentmanager.ComponentManager: prepare-package-start. {packageIdentifier=aws.greengrass.telemetry.NucleusEmitter-v1.0.8} 2025-08-13T09:12:46.044Z [INFO] (pool-3-thread-75) com.aws.greengrass.deployment.bootstrap.BootstrapManager: No component found with a pending bootstrap task. {} 2025-08-13T09:12:46.044Z [INFO] (pool-3-thread-75) com.aws.greengrass.deployment.DeploymentConfigMerger: Deployment is configured to skip update policy check, not waiting for disruptable time to update. {} 2025-08-13T09:12:46.045Z [INFO] (pool-3-thread-75) com.aws.greengrass.deployment.DeploymentConfigMerger: merge-config. Applying deployment changes, deployment cannot be cancelled now. {deployment=d008a1e8-d261-4563-83a5-fbb2405ddb4a} 2025-08-13T09:12:46.338Z [INFO] (aws.greengrass.Cli-lifecycle) com.aws.greengrass.cli.CLIService: service-set-state. {serviceName=aws.greengrass.Cli, currentState=RUNNING, newState=STOPPING} 2025-08-13T09:12:46.339Z [INFO] (aws.greengrass.Cli-lifecycle) com.aws.greengrass.cli.CLIService: service-set-state. {serviceName=aws.greengrass.Cli, currentState=STOPPING, newState=NEW}

Ideally this should be get removed.

Can you please guide why its not getting removed. I have cross check via ./greengrass-cli component list which shows its still in RUNNING stage. Deployment status also shows SUCCEEDED

**./greengrass-cli deployment status -i d008a1e8-d261-4563-83a5-fbb2405ddb4a d008a1e8-d261-4563-83a5-fbb2405ddb4a: SUCCEEDED Created on: 13-08-2025 09:11:47 UTC **

asked 3 months ago63 views
2 Answers
1

Hi,

Currently, we do not support using a local deployment to remove a component that was installed from a thing deployment (shadow deployment). To remove a component installed through a thing group deployment, you must add the --groupId argument. The groupId must exactly match the thing group that installed the component.

The example log pattern for successfully removing a log manager component looks like this: Bootstrap required for cleaning up plugin(s). {plugins-to-remove=[aws.greengrass.LogManager]}

AWS
answered 3 months ago
AWS
EXPERT
reviewed 3 months ago
0

When you're experiencing issues with removing components using local deployments in AWS IoT Greengrass V2, there are a few important considerations to understand.

The behavior you're seeing is likely due to a conflict between your local deployment and the cloud deployment targeting your device through the "Inventory" thing group. In Greengrass V2, when a device is part of a thing group with an active deployment, that deployment takes precedence over local deployments unless you specify otherwise.

When you create a local deployment to remove components that were deployed via the cloud, Greengrass tries to reconcile these conflicting requirements. The cloud deployment is still trying to install those components while your local deployment is trying to remove them.

To properly remove components that were deployed via the cloud, you have a few options:

  1. Use the --groupId parameter with your local deployment command to specify that it should override the cloud deployment. For example:
sudo /greengrass/v2/bin/greengrass-cli deployment create --remove "aws.greengrass.LogManager,aws.greengrass.SecureTunneling,aws.greengrass.telemetry.NucleusEmitter" --groupId Inventory

This ensures the local deployment overrides the cloud group deployment, preventing conflicts.

  1. Temporarily remove the device from the "Inventory" thing group, perform your local deployment, and then add it back to the thing group when you're ready.

  2. Create a new cloud deployment for the thing group that doesn't include these components.

For your use case of dealing with low internet connectivity during device onboarding, pre-installing components is a valid approach. You can use the Greengrass CLI for local deployments in this scenario, even though it's generally not recommended for production environments. Just ensure you properly secure the CLI on your devices by restricting user permissions.

Another approach to consider is creating a "golden image" with all your components pre-installed, which can be particularly useful for manufacturing devices at scale with limited internet connectivity.
Sources
How do I redeploy the same deployment config in Greengrass v2 | AWS re:Post
AWS IoT Greengrass V2 deployment Support on thing & thingGroup both | AWS re:Post
Pre-install components in Greengrass V2 | AWS re:Post

answered 3 months ago

You are not logged in. Log in to post an answer.

A good answer clearly answers the question and provides constructive feedback and encourages professional growth in the question asker.