RuntimeError: 1047 (AWS_IO_SOCKET_CONNECTION_REFUSED): socket connection refused..

0

Good evening everyone 👋,

I have a question that has been bugging me for a couple of hours at this point.

I'm trying to set up an IPC communication with my Docker component deployed in my GG core device.

However, I'm getting this error for socket connection:

2023-11-16T16:57:25.144Z [WARN] (Copier) container: stderr. _awscrt.event_stream_rpc_client_connection_connect(. {scriptName=services.container.lifecycle.run, serviceName=container, currentState=RUNNING} 2023-11-16T16:57:25.144Z [WARN] (Copier) container: stderr. RuntimeError: 1047 (AWS_IO_SOCKET_CONNECTION_REFUSED): socket connection refused.. {scriptName=services.container.lifecycle.run, serviceName=container, currentState=RUNNING} 2023-11-16T16:57:26.124Z [INFO] (Copier) container: Run script exited. {exitCode=1, serviceName=container, currentState=RUNNING}

This is my configuration for the component

{
  "RecipeFormatVersion": "2020-01-25",
  "ComponentName": "${component_name}",
  "ComponentVersion": "${component_version}",
  "ComponentDescription": "A component that runs a Docker container from S3.",
  "ComponentPublisher": "Ed",
  "ComponentDependencies": {
    "aws.greengrass.DockerApplicationManager": {
      "VersionRequirement": "~2.0.0"
    },
    "aws.greengrass.TokenExchangeService": {
      "VersionRequirement": "~2.0.0"
    }
  },
  "Manifests": [
    {
      "Platform": {
        "os": "all"
      },
      "Lifecycle": {
        "run": "docker run --rm -e SVCUID -e AWS_GG_NUCLEUS_DOMAIN_SOCKET_FILEPATH_FOR_COMPONENT -v {kernel:rootPath}/ipc.socket:{kernel:rootPath}/ipc.socket 109139691401.dkr.ecr.eu-central-1.amazonaws.com/signal-process:container"
      },
      "Artifacts": [
        {
          "URI": "docker:109139691401.dkr.ecr.eu-central-1.amazonaws.com/signal-process:container"
        }
      ]
    }
  ]
}

Is there any other configuration I have to do in the container so that I can run this?

I appreciate it a lot 🙏

Ed
demandé il y a 7 mois312 vues
2 réponses
1

Hello,

Please follow the documented docker options to correctly use IPC: https://docs.aws.amazon.com/greengrass/v2/developerguide/run-docker-container.html#docker-container-ipc

Cheers,

Michael

AWS
EXPERT
répondu il y a 7 mois
0
Réponse acceptée

Thank you very much for such a prompt response Michael, following the link that you provided actually worked!

Here's an updated version from the docker component configuration:

{
  "RecipeFormatVersion": "2020-01-25",
  "ComponentName": "${component_name}",
  "ComponentVersion": "${component_version}",
  "ComponentDescription": "A component that runs a Docker container from S3.",
  "ComponentPublisher": "Ed",
  "ComponentDependencies": {
    "aws.greengrass.DockerApplicationManager": {
      "VersionRequirement": "~2.0.0"
    },
    "aws.greengrass.TokenExchangeService": {
      "VersionRequirement": "~2.0.0"
    }
  },
  "ComponentConfiguration": {
    "DefaultConfiguration": {
      "topic": "thesis/docker",
      "message": "Hello, World!",
      "qos": "1",
      "accessControl": {
        "aws.greengrass.ipc.pubsub": {
          "dockercontainer:pubsub:1": {
            "policyDescription": "Allows access to publish to Pub and Sub topics.",
            "operations": [
              "aws.greengrass#SubscribeToTopic"
            ],
            "resources": [
              "thesis/docker"
            ]
          }
        }
      }
    }
  },
  "Manifests": [
    {
      "Platform": {
        "os": "all"
      },
      "Lifecycle": {
        "run": "docker run -v {kernel:rootPath}/ipc.socket:{kernel:rootPath}/ipc.socket -v /home/pi/mastergit/audio_files/100:/app/files -e SVCUID -e AWS_GG_NUCLEUS_DOMAIN_SOCKET_FILEPATH_FOR_COMPONENT -e MQTT_TOPIC=\"{configuration:/topic}\" -e MQTT_MESSAGE=\"{configuration:/message}\" -e MQTT_QOS=\"{configuration:/qos}\" --rm 109139691401.dkr.ecr.eu-central-1.amazonaws.com/signal-process:shark"
      },
      "Artifacts": [
        {
          "URI": "docker:109139691401.dkr.ecr.eu-central-1.amazonaws.com/signal-process:shark"
        }
      ]
    }
  ]
}

There are couple of things that need to be point from the documentation in the link provided, however.

  • There is a mismatch in the access control. The AWS IoT Core MQTT is specified as granting access, however the PubSub is the one that is enabled.
"accessControl": {
        "aws.greengrass.ipc.mqttproxy": {
          "com.example.python.docker.PublishToIoTCore:pubsub:1": {
  • For me, it worked to include the kernel rootPath {kernel:rootPath}/ipc.socket:{kernel:rootPath}/ipc.socket . Otherwise I would be getting issues related to RuntimeError: 44 (AWS_ERROR_FILE_INVALID_PATH): Invalid file path.

Hope it is useful, and thank you very much again for the help

Ed

Ed
répondu il y a 7 mois

Vous n'ĂȘtes pas connectĂ©. Se connecter pour publier une rĂ©ponse.

Une bonne réponse répond clairement à la question, contient des commentaires constructifs et encourage le développement professionnel de la personne qui pose la question.

Instructions pour répondre aux questions