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

질문됨 일 년 전84회 조회
답변 없음

로그인하지 않았습니다. 로그인해야 답변을 게시할 수 있습니다.

좋은 답변은 질문에 명확하게 답하고 건설적인 피드백을 제공하며 질문자의 전문적인 성장을 장려합니다.

질문 답변하기에 대한 가이드라인

관련 콘텐츠