AWS Green Grass Stream Manager: Data Not Reaching Kinesis Stream

0

Hi,

I've been having issues getting the stream manager in my AWS Green Grass core device to relay the messages I send to my kinesis stream.

The core device is a raspberry pi zero, the green grass software is running and the stream manager is deployed and its status is running.

Here's the result of sudo /greengrass/v2/bin/greengrass-cli component list:

Jan 27, 2023 3:54:56 PM software.amazon.awssdk.eventstreamrpc.EventStreamRPCConnection$1 onConnectionSetup
INFO: Socket connection /greengrass/v2/ipc.socket:8033 to server result [AWS_ERROR_SUCCESS]
Jan 27, 2023 3:54:57 PM software.amazon.awssdk.eventstreamrpc.EventStreamRPCConnection$1 onProtocolMessage
INFO: Connection established with event stream RPC server
Components currently running in Greengrass:
Component Name: aws.greengrass.TokenExchangeService
    Version: 2.0.3
    State: RUNNING
    Configuration: {"activePort":38663.0,"port":0.0}
Component Name: aws.greengrass.Nucleus
    Version: 2.9.2
    State: FINISHED
    Configuration: {"awsRegion":"eu-west-2","componentStoreMaxSizeBytes":"10000000000","deploymentPollingFrequencySeconds":"15","envStage":"prod","fleetStatus":{"periodicStatusPublishIntervalSeconds":86400.0},"greengrassDataPlaneEndpoint":"","greengrassDataPlanePort":"8443","httpClient":{},"interpolateComponentConfiguration":false,"iotCredEndpoint":"c2bx7e6j9b2iiq.credentials.iot.eu-west-2.amazonaws.com","iotDataEndpoint":"aplnkvk1jetfv-ats.iot.eu-west-2.amazonaws.com","iotRoleAlias":"GreengrassCoreTokenExchangeRoleAlias","jvmOptions":"-Dlog.store=FILE","logging":{},"mqtt":{"spooler":{}},"networkProxy":{"proxy":{}},"platformOverride":{},"runWithDefault":{"posixShell":"sh","posixUser":"ggc_user:ggc_group"},"telemetry":{}}
Component Name: UpdateSystemPolicyService
    Version: 0.0.0
    State: RUNNING
    Configuration: null
Component Name: aws.greengrass.Cli
    Version: 2.9.2
    State: RUNNING
    Configuration: {"AuthorizedPosixGroups":null,"AuthorizedWindowsGroups":null}
Component Name: FleetStatusService
    Version: 0.0.0
    State: RUNNING
    Configuration: null
Component Name: TelemetryAgent
    Version: 0.0.0
    State: RUNNING
    Configuration: null
Component Name: DeploymentService
    Version: 0.0.0
    State: RUNNING
    Configuration: null
Component Name: aws.greengrass.StreamManager
    Version: 2.1.2
    State: RUNNING
    Configuration: {"JVM_ARGS":"","LOG_LEVEL":"INFO","port":"8088","STREAM_MANAGER_AUTHENTICATE_CLIENT":"false","STREAM_MANAGER_ENABLE_LOCK_ON_METADATA_STORE":"false","STREAM_MANAGER_EXPORTER_MAX_BANDWIDTH":"2147483647","STREAM_MANAGER_EXPORTER_S3_DESTINATION_MULTIPART_UPLOAD_MIN_PART_SIZE_BYTES":"5242880","STREAM_MANAGER_EXPORTER_THREAD_POOL_SIZE":"5","STREAM_MANAGER_SERVER_PORT":"8088","STREAM_MANAGER_STORE_ROOT_DIR":"."}

I've tested with the exact sample found here https://github.com/aws-greengrass/aws-greengrass-stream-manager-sdk-python/blob/main/samples/stream_manager_kinesis.py (substituting my own kinesis stream name). There are no errors reported and the code claims that data is successfully being placed in the stream.

The logs of stream manager don't really report anything though:

2023-01-27T13:40:51.752Z [INFO] (Copier) aws.greengrass.StreamManager: stdout. 2023 Jan 27 15:40:51,749 [INFO] (pool-4-thread-1) com.amazonaws.iot.greengrass.streammanager.server.GreengrassCoreV2SDKWrapper: Stream Manager emitting the V2 telemetry metric. {scriptName=services.aws.greengrass.StreamManager.lifecycle.startup.script, serviceName=aws.greengrass.StreamManager, currentState=RUNNING}
2023-01-27T13:42:51.785Z [INFO] (Copier) aws.greengrass.StreamManager: stdout. 2023 Jan 27 15:42:51,782 [INFO] (pool-4-thread-1) com.amazonaws.iot.greengrass.streammanager.server.GreengrassCoreV2SDKWrapper: Stream Manager emitting the V2 telemetry metric. {scriptName=services.aws.greengrass.StreamManager.lifecycle.startup.script, serviceName=aws.greengrass.StreamManager, currentState=RUNNING}
2023-01-27T13:44:51.818Z [INFO] (Copier) aws.greengrass.StreamManager: stdout. 2023 Jan 27 15:44:51,814 [INFO] (pool-4-thread-1) com.amazonaws.iot.greengrass.streammanager.server.GreengrassCoreV2SDKWrapper: Stream Manager emitting the V2 telemetry metric. {scriptName=services.aws.greengrass.StreamManager.lifecycle.startup.script, serviceName=aws.greengrass.StreamManager, currentState=RUNNING}
2023-01-27T13:46:51.862Z [INFO] (Copier) aws.greengrass.StreamManager: stdout. 2023 Jan 27 15:46:51,852 [INFO] (pool-4-thread-1) com.amazonaws.iot.greengrass.streammanager.server.GreengrassCoreV2SDKWrapper: Stream Manager emitting the V2 telemetry metric. {scriptName=services.aws.greengrass.StreamManager.lifecycle.startup.script, serviceName=aws.greengrass.StreamManager, currentState=RUNNING}
2023-01-27T13:48:51.899Z [INFO] (Copier) aws.greengrass.StreamManager: stdout. 2023 Jan 27 15:48:51,896 [INFO] (pool-4-thread-1) com.amazonaws.iot.greengrass.streammanager.server.GreengrassCoreV2SDKWrapper: Stream Manager emitting the V2 telemetry metric. {scriptName=services.aws.greengrass.StreamManager.lifecycle.startup.script, serviceName=aws.greengrass.StreamManager, currentState=RUNNING}
2023-01-27T13:50:51.924Z [INFO] (Copier) aws.greengrass.StreamManager: stdout. 2023 Jan 27 15:50:51,922 [INFO] (pool-4-thread-1) com.amazonaws.iot.greengrass.streammanager.server.GreengrassCoreV2SDKWrapper: Stream Manager emitting the V2 telemetry metric. {scriptName=services.aws.greengrass.StreamManager.lifecycle.startup.script, serviceName=aws.greengrass.StreamManager, currentState=RUNNING}
2023-01-27T13:52:51.949Z [INFO] (Copier) aws.greengrass.StreamManager: stdout. 2023 Jan 27 15:52:51,946 [INFO] (pool-4-thread-1) com.amazonaws.iot.greengrass.streammanager.server.GreengrassCoreV2SDKWrapper: Stream Manager emitting the V2 telemetry metric. {scriptName=services.aws.greengrass.StreamManager.lifecycle.startup.script, serviceName=aws.greengrass.StreamManager, currentState=RUNNING}
2023-01-27T13:54:51.991Z [INFO] (Copier) aws.greengrass.StreamManager: stdout. 2023 Jan 27 15:54:51,989 [INFO] (pool-4-thread-1) com.amazonaws.iot.greengrass.streammanager.server.GreengrassCoreV2SDKWrapper: Stream Manager emitting the V2 telemetry metric. {scriptName=services.aws.greengrass.StreamManager.lifecycle.startup.script, serviceName=aws.greengrass.StreamManager, currentState=RUNNING}
2023-01-27T13:56:52.038Z [INFO] (Copier) aws.greengrass.StreamManager: stdout. 2023 Jan 27 15:56:52,035 [INFO] (pool-4-thread-1) com.amazonaws.iot.greengrass.streammanager.server.GreengrassCoreV2SDKWrapper: Stream Manager emitting the V2 telemetry metric. {scriptName=services.aws.greengrass.StreamManager.lifecycle.startup.script, serviceName=aws.greengrass.StreamManager, currentState=RUNNING}
2023-01-27T13:58:52.065Z [INFO] (Copier) aws.greengrass.StreamManager: stdout. 2023 Jan 27 15:58:52,062 [INFO] (pool-4-thread-1) com.amazonaws.iot.greengrass.streammanager.server.GreengrassCoreV2SDKWrapper: Stream Manager emitting the V2 telemetry metric. {scriptName=services.aws.greengrass.StreamManager.lifecycle.startup.script, serviceName=aws.greengrass.StreamManager, currentState=RUNNING}

I've been thinking that it may be a permission issues (I've added full kinesis access to the roles I think are relevant), but I'm not seeing any evidence to confirm this. I read this issues on the stream manager client for python that suggested that https://github.com/aws-greengrass/aws-greengrass-stream-manager-sdk-python/issues/10.

Could anyone please provide suggestions on what they think I should try?

1 Answer
0

Hey @RossKohler

I am not sure what evidence you are looking for. Are you wanting to verify if the messages are being appended to your stream or if they are reaching Kinesis?

On the github (example), that code in there needs to be deployed on a custom component you build. From the list of components you shared I don't see any custom component that would have that code which would publish the messages to the Stream Manager. The way you interact with the Stream Manager is by creating custom components which use the stream manager sdk to publish events to the stream manager which then it exports to your destination based on your stream configuration.

The reason why you are not seeing any logs is because likely you are not running that example as a greengrass component.

Hope that helps,

Nelson

AWS
answered a year ago

You are not logged in. Log in to post an answer.

A good answer clearly answers the question and provides constructive feedback and encourages professional growth in the question asker.

Guidelines for Answering Questions