UNAUTHORIZED_NUCLEUS_MINOR_VERSION_UPDATE: The deployment attempts to update the nucleus from aws.greengrass.Nucleus-2.9.6 to aws.greengrass.Nucleus-2.10.0 but no component of type nucleus was incl...

0

Hi,

I have a greengrass core device running greengrass 2.9.6. It provisions itself without any difficulty. I have a private component which has the following dependency:

aws.greengrass.ShadowManager:
    VersionRequirement: ^2
    DependencyType: HARD

Now I create a deployment:

greengrass.create_deployment(
        targetArn=f"arn:aws:iot:{aws_region}:{aws_account_id}:thing/{thing_name}",
        components={
            f'{my_component_id}': {
                'componentVersion': my_component_version
            },
        },
        deploymentPolicies={
            'failureHandlingPolicy': 'DO_NOTHING',
            'componentUpdatePolicy': {
                'timeoutInSeconds': 120,
                'action': 'SKIP_NOTIFY_COMPONENTS'
            },
            'configurationValidationPolicy': {
                'timeoutInSeconds': 120
            }
        },
    )

The deployment gets created but after a while I get the following error:

UNAUTHORIZED_NUCLEUS_MINOR_VERSION_UPDATE: FAILED_NO_STATE_CHANGE: The deployment attempts to update the nucleus from aws.greengrass.Nucleus-2.9.6 to aws.greengrass.Nucleus-2.10.0 but no component of type nucleus was included as target component, please add the desired nucleus version as top level component if you wish to update the nucleus to a different minor/major version

I found and explanation at https://docs.aws.amazon.com/greengrass/v2/developerguide/troubleshooting.html#deployment-error-nucleus-minor-version-update but not way to work around the issue.

I tried multiple deployment variations (adding only Nucleus, only ShadowManager, or both) but nothing seems to help. The strange things is that I never mention Nucleus version 2.10.0 in the deployment and I also don't see this in the dependencies of the public components.

greengrass.create_deployment(
        targetArn=f"arn:aws:iot:{aws_region}:{aws_account_id}:thing/{thing_name}",
        components={
            f'{my_component_id}': {
                'componentVersion': my_component_version
            },
            "aws.greengrass.Nucleus": {
                'componentVersion': "2.9.6",
            },
            "aws.greengrass.StreamManager": {
                "componentVersion": "2.1.4",
            },
            "aws.greengrass.ShadowManager": {
                "componentVersion": "2.3.1",
            },
        },
        deploymentPolicies={
            'failureHandlingPolicy': 'DO_NOTHING',
            'componentUpdatePolicy': {
                'timeoutInSeconds': 120,
                'action': 'SKIP_NOTIFY_COMPONENTS'
            },
            'configurationValidationPolicy': {
                'timeoutInSeconds': 120
            }
        },
    )

Has anyone seen this issue before?

Thanks, Leen

  • Your updated deployment will work because you are explicitly setting the Nucleus version to deploy as 2.9.6.

    Make sure the deployment is created properly by looking at the AWS Console for the deployment and observing what components are included.

  • It looks like a concurrency issue. The deployment is created a couple of seconds after the core device provisions itself (targetArn is the thing name, not a group). It looks as if the core device is updating itself to nucleus 2.10.0 and then the deployment arrives at the core device to install 2.9.6. When I revise the deployment after it fails to install, the second time it does work

feita há um ano85 visualizações
Sem respostas

Você não está conectado. Fazer login para postar uma resposta.

Uma boa resposta responde claramente à pergunta, dá feedback construtivo e incentiva o crescimento profissional de quem perguntou.

Diretrizes para responder a perguntas