The component requires IoT Core access for tunnel notifications. Add one of these policies to your Greengrass device's role alias.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["iot:Subscribe", "iot:Receive"],
"Resource": "*"
}
]
}
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["iot:Subscribe", "iot:Receive"],
"Resource": [
"arn:aws:iot:<REGION>:<ACCOUNT-ID>:topicfilter/$aws/things/*/tunnels/notify"
]
}
]
}
Replace <REGION> and <ACCOUNT-ID> with your values.
Deploy using greengrass-cli:
sudo /greengrass/v2/bin/greengrass-cli deployment create \
--recipeDir components/recipes \
--artifactDir components/artifacts \
--merge "aws.greengrass.SecureTunneling=1.0.0"
Verify deployment:
tail -f /greengrass/v2/logs/greengrass.log
Deploy using ggl-cli:
/usr/local/bin/ggl-cli deploy \
--recipe-dir components/recipes \
--artifacts-dir components/artifacts \
--add-component aws.greengrass.SecureTunneling=1.0.0
Verify deployment:
journalctl -afu 'ggl.*'
- Use
recipe-prod.yaml(gdk-cli to create and publish component) to create a private component - Create a new deployment in AWS IoT Greengrass
- Deploy to target devices
See AWS documentation for detailed guidance.
View logs in the Greengrass root directory:
tail -f /greengrass/v2/logs/aws.greengrass.SecureTunneling.log
Follow nucleus logs:
journalctl -afu 'ggl.*'
View component logs:
journalctl -f -u ggl.aws.greengrass.SecureTunneling.service