I have a Greengrass Lambda component subscribed to the aws.greengrass.SNS
output topic sns/message/status
using the aws.greengrass.LegacySubscriptionRouter
component with the following configuration:
{
"subscriptions": {
"GreengrassSnsOutput": {
"id": "GreengrassSnsOutput",
"source": "component:aws.greengrass.SNS",
"subject": "sns/message/status",
"target": f"component:MyComponentName",
}
}
}
That works as expected, but if I update the Lambda corresponding to MyComponentName
, I get the following error message in the main Greengrass log file:
com.aws.greengrass.lambdamanager.LambdaNotFoundException: Lambda arn:aws:lambda:region:account:function:my-function-name:# does not exist
The developer guide suggests that v2.1.0...
Adds support to specify component names instead of ARNs for source and target. If you specify a component name for a subscription, you don't need to reconfigure the subscription each time the version of the Lambda function changes.
I took that to mean nothing needs to happen with respect to the subscription after a new component version with the same name but a new Lambda ARN is deployed. Is that right or is there something else that needs to be done?
I'm using the following component versions:
"aws.greengrass.LegacySubscriptionRouter": {
"componentVersion": "2.1.4"
},
"aws.greengrass.Nucleus": {
"componentVersion": "2.5.5"
},
"aws.greengrass.SNS": {
"componentVersion": "2.1.0"
},