- Newest
- Most votes
- Most comments
Hi,
Your recipe is specifying a specific platform that it is written for. Platforms which do not match what the recipe specifies will fail with the error that you're seeing.
Specifically, you have set the CPU architecture to amd64, aarch64
. This is not a valid architecture. Please see the correct way here: https://docs.aws.amazon.com/greengrass/v2/developerguide/component-recipe-reference.html#recipe-format:~:text=For%20each%20key%2Dvalue%20pair%2C%20you%20can%20specify%20one%20of%20the%20following%20values%3A.
Since you're aiming to support both amd64 and arm, I'd recommend just leaving off the architecture
, and then the component will be deployable on any linux system.
If you truly want to limit to amd64 and aarch64, the correct way to do this is using a regular expression: architecture: /amd64|aarch64/
Cheers,
Michael
Thanks @AWS-User-Nitrin. However all the mentioned reasons do not make sense in our opinion:
The core device is the target of multiple deployments that have conflicting component version requirements. For example, the core device might be the target of multiple deployments that include a com.example.HelloWorld component, where one deployment requires version 1.0.0 and the other requires version 1.0.1. It's impossible to have a component that meets both requirements, so the deployment fails.
We created a new deployment revision and upgraded the component version. Besides, we have also removed the deployment and started fresh. We simply cannot deploy any version of that component, except 1.0.0
.
The component version doesn't exist in the AWS IoT Greengrass service or on the local device. The component might have been deleted, for example.
Like stated, the component is listed in the GGV2 console, including all its versions. The artifacts are also in AWS S3 correctly placed.
*The core device's AWS IoT policy doesn't grant the greengrass:ResolveComponentCandidates permission. *
It does grant this permission (no 403 errors are logged).
There exists component versions that meet the version requirements, but none are compatible with the core device's platform.
This is not the case.
What is the full recipe of your component?
As Michael mentioned, can you please share or mention the full recipe of your component?
Please follow the troubleshooting steps to review and remediate https://docs.aws.amazon.com/greengrass/v2/developerguide/troubleshooting.html#core-error-no-available-component-version
Our full component recipe is:
---
RecipeFormatVersion: 2020-01-25
ComponentName: com.example.MyComponent
ComponentVersion: 1.0.0
ComponentDescription: My component description.
ComponentPublisher: MyCompany Inc.
ComponentType: aws.greengrass.generic
ComponentDependencies:
aws.greengrass.Nucleus:
VersionRequirement: ">=2.9.0"
DependencyType: HARD
aws.greengrass.TokenExchangeService:
VersionRequirement: ">=2.0.0"
DependencyType: HARD
Manifests:
- Platform:
os: linux
architecture: amd64, aarch64
Lifecycle:
Run: "node {artifacts:decompressedPath}/MyComponent/index.js"
Artifacts:
- URI: "s3://BUCKET_NAME/COMPONENT_NAME/COMPONENT_VERSION/MyComponent.zip"
Unarchive: ZIP
Relevant content
- asked 3 years ago
- asked a year ago
- AWS OFFICIALUpdated 2 years ago
- AWS OFFICIALUpdated 2 years ago
- AWS OFFICIALUpdated 3 years ago
Thanks Michael! That fixed it. I would recommend team to improve the error logging message. Making it perhaps clearer that the problem was in the platform/architecture section of the recipe would save some time. ;-)