도커 컨테이너에서의 AWS IoT Greengrass 실행 - AWS IoT Greengrass

다음에 대한 설명서를 보고 있습니다.AWS IoT Greengrass Version 1.AWS IoT Greengrass Version 2의 최신 주요 버전입니다AWS IoT Greengrass. 사용에 관한 자세한 내용은 단원을 참조하십시오.AWS IoT Greengrass V2에 대한 자세한 내용은AWS IoT Greengrass Version 2개발자 안내서.

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

도커 컨테이너에서의 AWS IoT Greengrass 실행

AWS IoT Greengrass를 도커 컨테이너에서 실행하도록 구성할 수 있습니다.

도커 파일을 다운로드 할 수 있습니다.Amazon CloudFront 통해이 있습니다.AWS IoT Greengrass코어 소프트웨어와 종속성이 설치되어 있습니다. 다른 플랫폼 아키텍처에서 실행되도록 Docker 이미지를 수정하거나 Docker 이미지의 크기를 줄이려면 Docker 패키지 다운로드에 있는 README 파일을 참조하십시오.

AWS IoT Greengrass 실험을 시작할 수 있도록 AWS는 AWS IoT Greengrass Core 소프트웨어 및 종속성이 설치된 미리 빌드된 도커 이미지도 제공합니다. 에서 이미지를 다운로드할 수 있습니다.Docker Hub또는Amazon Elastic 컨테이너 레지스트리(Amazon ECR) 를 참조하십시오. 이러한 미리 빌드된 이미지는 Amazon Linux 2(x86_64) 및 Alpine Linux(x86_64, Armv7l 또는 AArch64) 기본 이미지를 사용합니다.

이 주제에서는 에서AWS IoT Greengrass도커 이미지를 사용해 Windows, macOS 또는 Linux (x86_64) 플랫폼에서 실행할 수 있습니다. 이 주제에는 다음 단계가 포함되어 있습니다.

도커 컨테이너에서 AWS IoT Greengrass를 실행할 때 다음 기능은 지원되지 않습니다.

  • 커넥터에서 실행되는Greengrass 컨테이너모드로 이동합니다. Docker 컨테이너에서 커넥터를 실행하려면 커넥터가 컨테이너 없음 모드로 실행되어야 합니다. 컨테이너 없음 모드를 지원하는 커넥터를 찾으려면 AWS-제공된 Greengrass 커넥터 단원을 참조하십시오. 이러한 커넥터 중 일부에는 컨테이너 없음으로 설정해야 하는 격리 모드 파라미터가 있습니다.

  • 로컬 디바이스 및 볼륨 리소스. Docker 컨테이너에서 실행되는 사용자 정의 Lambda 함수는 코어의 디바이스 및 볼륨에 직접 액세스해야 합니다.

Greengrass 그룹에 대한 Lambda 런타임 환경을컨테이너 없음를 실행하는 데 필요합니다.AWS IoT Greengrass도커 컨테이너에서.

Prerequisites

이 자습서를 시작하려면 먼저 다음을 수행해야 합니다.

  • 다음 소프트웨어와 버전을 호스트 컴퓨터에 설치해야 합니다.AWS Command Line Interface(AWS CLI) 버전을 선택할 수 있습니다.

    AWS CLI version 2
    • Docker버전 18.09 이상. 이전 버전도 작동할 수 있지만 18.09 이상을 사용하는 것이 좋습니다.

    • AWS CLI버전 2.0.0 이상.

      참고

      나중으로 업그레이드하려면AWS CLIWindows 컴퓨터에서 버전 2를 실행하도록 하려면MSI 설치프로세스를 참조하십시오.

    AWS CLI version 1
    • Docker버전 18.09 이상. 이전 버전도 작동할 수 있지만 18.09 이상을 사용하는 것이 좋습니다.

    • Python버전 3.6 이상.

    • pip 버전 18.1 이상

    • AWS CLI버전 1.17.10 이상

      • 를 설치하려면AWS CLI버전 1에 대한 자세한 내용은다음 설치AWS CLI버전 1.

      • 를 구성하려면AWS CLI에 대한 자세한 내용은구성AWS CLI.

      • 최신 버전으로 업그레이드하려면AWS CLI버전 1에 대해 다음 명령을 실행합니다.

        pip install awscli --upgrade --user
      참고

      MSI 설치의AWS CLI버전 1을 (를) 업그레이드하려면 다음 사항에 유의하십시오.

      • 만약AWS CLI버전 1 설치에서 botocore를 설치하지 못하는 경우Python 및 pip설치.

      • 나중으로 업그레이드하려면AWS CLI버전을 1번 업그레이드하려면 MSI 설치 프로세스를 반복해야 합니다.

  • Amazon Elastic Container Registry (Amazon ECR) 리소스에 액세스하려면 다음 권한을 부여해야 합니다.

    • Amazon ECR을 사용하려면 사용자가ecr:GetAuthorizationToken권한을 통해AWS Identity and Access Management(IAM) 정책을 사용하여 레지스트리에 인증하고 Amazon ECR 리포지토리에서 이미지를 푸시하거나 가져올 수 있습니다. 자세한 내용은 단원을 참조하십시오.Amazon ECR 리포지토리 정책 예제하나의 Amazon ECR 리포지토리에 액세스Amazon Elastic 컨테이너 레지스트리 사용자 가이드.

1단계: GetAWS IoT GreengrassAmazon ECR에서 컨테이너 이미지

AWS는 AWS IoT Greengrass Core 소프트웨어가 설치된 도커 이미지를 제공합니다. 단계를 알아보려면latest아마존 ECR에서 이미지,운영 체제를 선택하십시오.

컴퓨터 터미널에서 다음 명령을 실행합니다.

  1. 에 로그인합니다.AWS IoT Greengrass레지스트리에 로그인합니다.

    aws ecr get-login-password --region us-west-2 | docker login --username AWS --password-stdin https://216483018798.dkr.ecr.us-west-2.amazonaws.com

    성공하면 Login Succeeded 출력이 인쇄됩니다.

  2. AWS IoT Greengrass 컨테이너 이미지를 가져옵니다.

    docker pull 216483018798.dkr.ecr.us-west-2.amazonaws.com/aws-iot-greengrass:latest
    참고

    latest 이미지에는 Amazon Linux 2 기본 이미지에 설치된 안정적인 최신 버전의 AWS IoT Greengrass Core 소프트웨어가 포함되어 있습니다. 또한 리포지토리에서 다른 이미지를 끌어올 수도 있습니다. 사용 가능한 모든 이미지를 찾으려면태그페이지의Docker Hub를 사용하거나aws ecr list-images명령입니다. 예:

    aws ecr list-images --region us-west-2 --registry-id 216483018798 --repository-name aws-iot-greengrass
  3. symlink 및 hardlink 보호를 활성화합니다. 컴퓨터에서 AWS IoT Greengrass 실행을 실험하는 경우 현재 부트에 대해서만 설정을 활성화할 수 있습니다.

    참고

    sudo를 사용해 이러한 명령을 실행해야 할 수 있습니다.

    • 현재 부트에 대해서만 설정을 활성화하려면:

      echo 1 > /proc/sys/fs/protected_hardlinks echo 1 > /proc/sys/fs/protected_symlinks
    • 재시작 후에도 유지되도록 설정을 활성화하려면:

      echo '# AWS IoT Greengrass' >> /etc/sysctl.conf echo 'fs.protected_hardlinks = 1' >> /etc/sysctl.conf echo 'fs.protected_symlinks = 1' >> /etc/sysctl.conf sysctl -p
  4. IPv4 네트워크 전달을 활성화합니다. 이 기능은 AWS IoT Greengrass 클라우드 배포 및 MQTT 통신이 Linux에서 작동하는 데 필요합니다. /etc/sysctl.conf 파일에서 net.ipv4.ip_forward를 1로 설정한 다음 sysctls를 다시 로드합니다.

    sudo nano /etc/sysctl.conf # set this net.ipv4.ip_forward = 1 sudo sysctl -p
    참고

    nano 대신 사용자가 선택한 편집기를 사용할 수 있습니다.

컴퓨터 터미널에서 다음 명령을 실행합니다.

  1. 에 로그인합니다.AWS IoT Greengrass레지스트리에 로그인합니다.

    aws ecr get-login-password --region us-west-2 | docker login --username AWS --password-stdin https://216483018798.dkr.ecr.us-west-2.amazonaws.com

    성공하면 Login Succeeded 출력이 인쇄됩니다.

  2. AWS IoT Greengrass 컨테이너 이미지를 가져옵니다.

    docker pull 216483018798.dkr.ecr.us-west-2.amazonaws.com/aws-iot-greengrass:latest
    참고

    latest 이미지에는 Amazon Linux 2 기본 이미지에 설치된 안정적인 최신 버전의 AWS IoT Greengrass Core 소프트웨어가 포함되어 있습니다. 또한 리포지토리에서 다른 이미지를 끌어올 수도 있습니다. 사용 가능한 모든 이미지를 찾으려면태그페이지의Docker Hub를 사용하거나aws ecr list-images명령입니다. 예:

    aws ecr list-images --region us-west-2 --registry-id 216483018798 --repository-name aws-iot-greengrass

명령 프롬프트에서 다음 명령을 실행합니다. Windows에서 도커 명령을 사용하려면 먼저 도커 데스크톱이 실행 중이어야 합니다.

  1. 에 로그인합니다.AWS IoT Greengrass레지스트리에 로그인합니다.

    aws ecr get-login-password --region us-west-2 | docker login --username AWS --password-stdin https://216483018798.dkr.ecr.us-west-2.amazonaws.com

    성공하면 Login Succeeded 출력이 인쇄됩니다.

  2. AWS IoT Greengrass 컨테이너 이미지를 가져옵니다.

    docker pull 216483018798.dkr.ecr.us-west-2.amazonaws.com/aws-iot-greengrass:latest
    참고

    latest 이미지에는 Amazon Linux 2 기본 이미지에 설치된 안정적인 최신 버전의 AWS IoT Greengrass Core 소프트웨어가 포함되어 있습니다. 또한 리포지토리에서 다른 이미지를 끌어올 수도 있습니다. 사용 가능한 모든 이미지를 찾으려면태그페이지의Docker Hub를 사용하거나aws ecr list-images명령입니다. 예:

    aws ecr list-images --region us-west-2 --registry-id 216483018798 --repository-name aws-iot-greengrass

2단계: Greengrass 그룹 및 코어 생성 및 구성

Docker 이미지에는 AWS IoT Greengrass 코어 소프트웨어가 설치되어 있지만, Greengrass 그룹 및 코어를 생성해야 합니다. 이 단계에는 인증서와 코어 구성 파일을 다운로드하는 작업도 포함됩니다.

  • AWS IoT에서 AWS IoT Greengrass 구성 단원의 단계를 따르십시오. AWS IoT Greengrass 코어 소프트웨어를 다운로드하는 단계를 건너뜁니다. 소프트웨어와 해당 런타임 종속성은 Docker 이미지에 이미 설치되어 있습니다.

3단계: 로컬로 AWS IoT Greengrass 실행

그룹이 구성된 후에는 코어를 구성하고 시작할 준비가 된 것입니다. 이렇게 하는 방법을 보여 주는 단계를 알아보려면 운영 체제를 선택하십시오.

컴퓨터 터미널에서 다음 명령을 실행합니다.

  1. /tmp와 같은 알려진 위치에 인증서와 구성 파일(Greengrass 그룹을 생성할 때 다운로드함)의 압축을 풉니다. 예:

    tar xvzf hash-setup.tar.gz -C /tmp/
  2. 검토서버 인증AWS IoT개발자 안내서을 (를) 클릭하고 적절한 루트 CA 인증서를 선택합니다. Amazon Trust Services(ATS) 엔드포인트와 ATS 루트 CA 인증서를 사용하는 것이 좋습니다.

    다음 명령을 실행하여 인증서와 구성 파일의 압축을 푼 디렉터리에 루트 CA 인증서를 다운로드합니다. 디바이스에서는 인증서를 사용하여 TLS를 통해 AWS IoT에 연결할 수 있습니다.

    /tmp를 디렉터리 경로로 바꿉니다.

    중요

    루트 CA 인증서 유형은 엔드포인트와 일치해야 합니다. ATS 루트 CA 인증서를 ATS 엔드포인트와 함께 사용(선호됨)하거나 Verisign 루트 CA 인증서를 레거시 엔드포인트와 함께 사용합니다. 일부 Amazon Web Services 리전에서만 레거시 엔드포인트를 지원합니다. 자세한 내용은 서비스 엔드포인트는 루트 CA 인증서 유형과 일치해야 합니다 섹션을 참조하세요.

    • ATS 엔드포인트(선호됨)의 경우 적절한 ATS 루트 CA 인증서를 다운로드합니다. 다음은 AmazonRootCA1.pem을 다운로드하는 예제입니다.

      cd /tmp/certs/ sudo wget -O root.ca.pem https://www.amazontrust.com/repository/AmazonRootCA1.pem
    • 레거시 엔드포인트의 경우 VeriSign 루트 CA 인증서를 다운로드합니다. 이 자습서의 목적상 레거시 엔드포인트를 허용할 수 있지만, ATS 엔드포인트 및 ATS 루트 CA 인증서를 사용하는 것이 좋습니다.

      cd /tmp/certs/ sudo wget -O root.ca.pem https://www.websecurity.digicert.com/content/dam/websitesecurity/digitalassets/desktop/pdfs/roots/VeriSign-Class%203-Public-Primary-Certification-Authority-G5.pem
    참고

    wget -O 파라미터는 대문자 O입니다.

  3. AWS IoT Greengrass를 시작하고 도커 컨테이너에서 인증서와 구성 파일을 바인드 탑재합니다.

    인증서와 구성 파일의 압축을 푼 경로로 /tmp를 바꿉니다.

    docker run --rm --init -it --name aws-iot-greengrass \ --entrypoint /greengrass-entrypoint.sh \ -v /tmp/certs:/greengrass/certs \ -v /tmp/config:/greengrass/config \ -p 8883:8883 \ 216483018798.dkr.ecr.us-west-2.amazonaws.com/aws-iot-greengrass:latest

    출력은 다음 예시와 같은 형식이어야 합니다.

    Setting up greengrass daemon Validating hardlink/softlink protection Waiting for up to 30s for Daemon to start Greengrass successfully started with PID: 10

컴퓨터 터미널에서 다음 명령을 실행합니다.

  1. /tmp와 같은 알려진 위치에 인증서와 구성 파일(Greengrass 그룹을 생성할 때 다운로드함)의 압축을 풉니다. 예:

    tar xvzf hash-setup.tar.gz -C /tmp/
  2. 검토서버 인증AWS IoT개발자 안내서을 (를) 클릭하고 적절한 루트 CA 인증서를 선택합니다. Amazon Trust Services(ATS) 엔드포인트와 ATS 루트 CA 인증서를 사용하는 것이 좋습니다.

    다음 명령을 실행하여 인증서와 구성 파일의 압축을 푼 디렉터리에 루트 CA 인증서를 다운로드합니다. 디바이스에서는 인증서를 사용하여 TLS를 통해 AWS IoT에 연결할 수 있습니다.

    /tmp를 디렉터리 경로로 바꿉니다.

    중요

    루트 CA 인증서 유형은 엔드포인트와 일치해야 합니다. ATS 루트 CA 인증서를 ATS 엔드포인트와 함께 사용(선호됨)하거나 Verisign 루트 CA 인증서를 레거시 엔드포인트와 함께 사용합니다. 일부 Amazon Web Services 리전에서만 레거시 엔드포인트를 지원합니다. 자세한 내용은 서비스 엔드포인트는 루트 CA 인증서 유형과 일치해야 합니다 섹션을 참조하세요.

    • ATS 엔드포인트(선호됨)의 경우 적절한 ATS 루트 CA 인증서를 다운로드합니다. 다음은 AmazonRootCA1.pem을 다운로드하는 예제입니다.

      cd /tmp/certs/ sudo wget -O root.ca.pem https://www.amazontrust.com/repository/AmazonRootCA1.pem
    • 레거시 엔드포인트의 경우 VeriSign 루트 CA 인증서를 다운로드합니다. 이 자습서의 목적상 레거시 엔드포인트를 허용할 수 있지만, ATS 엔드포인트 및 ATS 루트 CA 인증서를 사용하는 것이 좋습니다.

      cd /tmp/certs/ sudo wget -O root.ca.pem https://www.websecurity.digicert.com/content/dam/websitesecurity/digitalassets/desktop/pdfs/roots/VeriSign-Class%203-Public-Primary-Certification-Authority-G5.pem
    참고

    wget -O 파라미터는 대문자 O입니다.

  3. AWS IoT Greengrass를 시작하고 도커 컨테이너에서 인증서와 구성 파일을 바인드 탑재합니다.

    인증서와 구성 파일의 압축을 푼 경로로 /tmp를 바꿉니다.

    docker run --rm --init -it --name aws-iot-greengrass \ --entrypoint /greengrass-entrypoint.sh \ -v /tmp/certs:/greengrass/certs \ -v /tmp/config:/greengrass/config \ -p 8883:8883 \ 216483018798.dkr.ecr.us-west-2.amazonaws.com/aws-iot-greengrass:latest

    출력은 다음 예시와 같은 형식이어야 합니다.

    Setting up greengrass daemon Validating hardlink/softlink protection Waiting for up to 30s for Daemon to start Greengrass successfully started with PID: 10
  1. WinZip 또는 7-Zip과 같은 유틸리티를 사용하여 Greengrass 그룹을 생성할 때 다운로드한 인증서와 구성 파일의 압축을 풉니다. 자세한 내용은 WinZip 설명서를 참조하십시오.

    다운로드한 hash-setup.tar.gz 파일을 컴퓨터에서 찾은 다음 C:\Users\%USERNAME%\Downloads\에 파일의 압축을 풉니다.

  2. 검토서버 인증AWS IoT개발자 안내서을 (를) 클릭하고 적절한 루트 CA 인증서를 선택합니다. Amazon Trust Services(ATS) 엔드포인트와 ATS 루트 CA 인증서를 사용하는 것이 좋습니다.

    다음 명령을 실행하여 인증서와 구성 파일의 압축을 푼 디렉터리에 루트 CA 인증서를 다운로드합니다. 디바이스에서는 인증서를 사용하여 TLS를 통해 AWS IoT에 연결할 수 있습니다.

    중요

    루트 CA 인증서 유형은 엔드포인트와 일치해야 합니다. ATS 루트 CA 인증서를 ATS 엔드포인트와 함께 사용(선호됨)하거나 Verisign 루트 CA 인증서를 레거시 엔드포인트와 함께 사용합니다. 일부 Amazon Web Services 리전에서만 레거시 엔드포인트를 지원합니다. 자세한 내용은 서비스 엔드포인트는 루트 CA 인증서 유형과 일치해야 합니다 섹션을 참조하세요.

    • ATS 엔드포인트(선호됨)의 경우 적절한 ATS 루트 CA 인증서를 다운로드합니다. 다음은 AmazonRootCA1.pem을 다운로드하는 예제입니다.

      • curl을 설치한 경우 명령 프롬프트에서 다음 명령을 실행합니다.

        cd C:\Users\%USERNAME%\Downloads\certs curl https://www.amazontrust.com/repository/AmazonRootCA1.pem -o root.ca.pem
      • 또는 웹 브라우저에서 Amazon 루트 CA 1 인증서를 엽니다. 문서를 root.ca.pem으로 C:\Users\%USERNAME%\Downloads\certs 디렉터리에 저장합니다. 이 디렉터리에는 압축을 푼 인증서가 포함되어 있습니다.

        참고

        브라우저에 따라 브라우저에서 직접 파일을 저장하거나 표시된 키를 클립보드에 복사하고 메모장에 저장합니다.

    • 레거시 엔드포인트의 경우 VeriSign 루트 CA 인증서를 다운로드합니다. 이 자습서의 목적상 레거시 엔드포인트를 허용할 수 있지만, ATS 엔드포인트 및 ATS 루트 CA 인증서를 사용하는 것이 좋습니다.

      • curl을 설치한 경우 명령 프롬프트에서 다음 명령을 실행합니다.

        cd C:\Users\%USERNAME%\Downloads\certs curl https://www.websecurity.digicert.com/content/dam/websitesecurity/digitalassets/desktop/pdfs/roots/VeriSign-Class%203-Public-Primary-Certification-Authority-G5.pem -o root.ca.pem
      • 또는 웹 브라우저에서 VeriSign Class 3 Public Primary G5 루트 CA 인증서를 엽니다. 문서를 root.ca.pem으로 C:\Users\%USERNAME%\Downloads\certs 디렉터리에 저장합니다. 이 디렉터리에는 압축을 푼 인증서가 포함되어 있습니다.

        참고

        브라우저에 따라 브라우저에서 직접 파일을 저장하거나 표시된 키를 클립보드에 복사하고 메모장에 저장합니다.

  3. AWS IoT Greengrass를 시작하고 도커 컨테이너에서 인증서와 구성 파일을 바인드 탑재합니다. 명령 프롬프트에서 다음 명령을 실행합니다.

    docker run --rm --init -it --name aws-iot-greengrass --entrypoint /greengrass-entrypoint.sh -v c:/Users/%USERNAME%/Downloads/certs:/greengrass/certs -v c:/Users/%USERNAME%/Downloads/config:/greengrass/config -p 8883:8883 216483018798.dkr.ecr.us-west-2.amazonaws.com/aws-iot-greengrass:latest

    도커에서 C:\ 드라이브를 도커 데몬과 공유하라는 메시지가 나타나면 이 작업을 허용하여 도커 컨테이너 내부에 C:\ 디렉터리를 바인드 탑재합니다. 자세한 내용은 도커 설명서의 공유 드라이브를 참조하십시오.

    출력은 다음 예시와 같은 형식이어야 합니다.

    Setting up greengrass daemon Validating hardlink/softlink protection Waiting for up to 30s for Daemon to start Greengrass successfully started with PID: 10
참고

컨테이너가 셸을 열지 않고 즉시 종료되는 경우 이미지 시작 시 Greengrass 런타임 로그를 바인드 탑재하여 문제를 디버그할 수 있습니다. 자세한 내용은 도커 컨테이너 외부의 Greengrass 런타임 로그를 유지하려면 섹션을 참조하세요.

4단계: Greengrass 그룹에 대한 “컨테이너 없음” 컨테이너화 구성

실행할 때AWS IoT Greengrass를 사용하려면 모든 Lambda 함수가 컨테이너화 없이 실행되어야 합니다. 이 단계에서는 그룹의 기본 컨테이너화를 컨테이너 없음으로 설정합니다. 처음으로 그룹을 배포하기 전에 이 작업을 수행해야 합니다.

  1. 에서AWS IoT콘솔의 탐색 창에서Greengrass,클래식 (V1),그룹.

  2. 설정을 변경하려는 그룹을 선택합니다.

  3. [Settings]를 선택합니다.

  4. Lambda runtime environment(Lambda 런타임 환경)에서 No container(컨테이너 없음)를 선택합니다.

  5. Update default Lambda execution configuration(기본 Lambda 실행 구성 업데이트)을 선택합니다. 확인 창에서 메시지를 검토한 후 계속을 선택합니다.

자세한 내용은 그룹의 Lambda 함수에 대한 기본 컨테이너화 설정 섹션을 참조하세요.

참고

기본적으로 Lambda 함수는 그룹 컨테이너화 설정을 사용합니다. 재정의 하는 경우컨테이너 없음때 모든 Lambda 함수에 대해AWS IoT Greengrass가 도커 컨테이너에서 실행 중인 경우 배포가 실패합니다.

5단계: Lambda 함수를AWS IoT Greengrass도커 컨테이너

수명이 긴 Lambda 함수를 Greengrass 도커 컨테이너에 배포할 수 있습니다.

6단계: (선택 사항) 도커 컨테이너에서 실행 중인 Greengrass 와 상호 작용하는 디바이스 배포

도커 컨테이너에서 실행 중일 떄 AWS IoT Greengrass와 상호 작용하는 Greengrass 디바이스를 배포할 수도 있습니다.

AWS IoT Greengrass 도커 컨테이너 중단

AWS IoT Greengrass 도커 컨테이너를 중지하려면 터미널 또는 명령 프롬프트에서 Ctrl+C를 누릅니다. 이 작업은SIGTERM를 Greengrass 데몬 프로세스로 전송하여 Greengrass 데몬 프로세스와 해당 데몬 프로세스로 시작된 모든 Lambda 프로세스를 제거합니다. Docker 컨테이너는 /dev/init 프로세스를 통해 PID 1로 초기화됩니다. 이렇게 하면 남아 있는 좀비 프로세스를 제거하는 데 도움이 됩니다. 자세한 내용은 Docker 실행 참조를 확인하십시오.

도커 컨테이너에서 AWS IoT Greengrass 문제 해결

다음 정보를 사용하면 도커 컨테이너에서 AWS IoT Greengrass 실행 중 발생하는 문제를 해결하는 데 도움이 됩니다.

오류: TTY가 아닌 장치에서 대화형 로그인을 수행할 수 없습니다.

솔루션: 실행할 때 이 오류가 발생할 수 있습니다.aws ecr get-login-password명령입니다. 최신 버전을 설치했는지 확인합니다.AWS CLI버전 2 또는 버전 1. 를 사용할 것을 권장합니다.AWS CLI버전 2. 자세한 내용은 AWS Command Line Interface 사용 설명서에서 AWS CLI 설치를 참조하세요.

오류: 알 수 없는 옵션: no-include-email.

솔루션: 실행할 때 이 오류가 발생할 수 있습니다.aws ecr get-login명령입니다. 최신 버전이 있는지 확인합니다.AWS CLI버전이 설치되어 있습니다 (예를 들어, pip install awscli --upgrade --user). Windows를 사용하고 있고 MSI 설치 관리자를 사용하여 CLI를 설치한 경우 설치 프로세스를 반복해야 합니다. 자세한 내용은 단원을 참조하십시오.다음 설치AWS Command Line InterfaceWindows WindowsAWS Command Line Interface사용 설명서.

경고: IPv4가 비활성화되어 있습니다. 네트워킹이 작동하지 않습니다.

솔루션: 을 (를) 실행하는 동안 이 경고 또는 유사한 메시지가 수신될 수 있습니다.AWS IoT GreengrassLinux 컴퓨터에서. 이 단계의 설명에 따라 IPv4 네트워크 전달을 활성화합니다. IPv4 전달을 활성화하지 않으면 AWS IoT Greengrass 클라우드 배포 및 MQTT 통신이 작동하지 않습니다. 자세한 내용은 도커 설명서의 런타임에 네임스페이스 커널 파라미터(sysctls) 구성을 참조하십시오.

오류: 방화벽이 Windows와 컨테이너 간의 파일 공유를 차단하고 있습니다.

솔루션: 이 오류 또는Firewall DetectedWindows 컴퓨터에서 도커를 실행하는 동안 메시지가 수신됩니다. 이 오류는 VPN(가상 프라이빗 네트워크)에 로그인되어 있고 네트워크 설정 때문에 공유 드라이브가 탑재되지 않는 경우에도 발생할 수 있습니다. 이러한 경우에는 VPN을 끄고 Docker 컨테이너를 재실행합니다.

오류: AccessDenieDenieException 작업을 호출할 때 오류 (AccessDenieException) 가 발생했습니다. User: arn:aws:iam <account-id> :user/is is <user-name>: Ecr:GetAuthorization토큰은 리소스의: *

를 실행하는 동안 이 오류가 수신될 수 있습니다.aws ecr get-login-password명령을 사용하여 Amazon ECR 리포지토리에 액세스할 수 있는 권한이 없는 경우 자세한 내용은 단원을 참조하십시오.Amazon ECR 리포지토리 정책 예제하나의 Amazon ECR 리포지토리에 액세스Amazon ECR 사용 설명서.

일반적인 AWS IoT Greengrass 문제 해결 도움말은 AWS IoT Greengrass 문제 해결 단원을 참조하십시오.

도커 컨테이너에서 AWS IoT Greengrass 디버깅

도커 컨테이너로 문제를 디버그하려면 Greengrass 런타임 로그를 유지하거나 대화형 셸을 도커 컨테이너에 연결할 수 있습니다.

도커 컨테이너 외부의 Greengrass 런타임 로그를 유지하려면

/greengrass/ggc/var/log 디렉터리를 바인드 탑재한 후 AWS IoT Greengrass 도커 컨테이너를 실행할 수 있습니다. 컨테이너가 종료되거나 제거된 후에도 로그는 유지됩니다.

Linux 또는 macOS에서는

호스트에서 실행 중인 Greengrass Docker 컨테이너를 중지하고 터미널에서 다음 명령을 실행합니다. 이렇게 하면 Greengrass log 디렉터리가 바인드 탑재되고 도커 이미지가 시작됩니다.

인증서와 구성 파일의 압축을 푼 경로로 /tmp를 바꿉니다.

docker run --rm --init -it --name aws-iot-greengrass \ --entrypoint /greengrass-entrypoint.sh \ -v /tmp/certs:/greengrass/certs \ -v /tmp/config:/greengrass/config \ -v /tmp/log:/greengrass/ggc/var/log \ -p 8883:8883 \ 216483018798.dkr.ecr.us-west-2.amazonaws.com/aws-iot-greengrass:latest

그런 다음 도커 컨테이너 내부에서 Greengrass가 실행되는 중에 호스트의 /tmp/log에서 로그를 점검하여 무슨 일이 발생했는지 확인할 수 있습니다.

Windows

호스트에서 실행 중인 Greengrass Docker 컨테이너를 중지하고 명령 프롬프트에서 다음 명령을 실행합니다. 이렇게 하면 Greengrass log 디렉터리가 바인드 탑재되고 도커 이미지가 시작됩니다.

cd C:\Users\%USERNAME%\Downloads mkdir log docker run --rm --init -it --name aws-iot-greengrass --entrypoint /greengrass-entrypoint.sh -v c:/Users/%USERNAME%/Downloads/certs:/greengrass/certs -v c:/Users/%USERNAME%/Downloads/config:/greengrass/config -v c:/Users/%USERNAME%/Downloads/log:/greengrass/ggc/var/log -p 8883:8883 216483018798.dkr.ecr.us-west-2.amazonaws.com/aws-iot-greengrass:latest

그런 다음 도커 컨테이너 내부에서 Greengrass가 실행되는 중에 호스트의 C:/Users/%USERNAME%/Downloads/log에서 로그를 점검하여 무슨 일이 발생했는지 확인할 수 있습니다.

대화형 셸을 도커 컨테이너에 연결하려면

대화형 셸을 실행 중인 AWS IoT Greengrass 도커 컨테이너에 연결할 수 있습니다. 이는 Greengrass 도커 컨테이너의 상태를 조사하는 데 도움이 될 수 있습니다.

Linux 또는 macOS에서는

Greengrass Docker 컨테이너가 실행되는 동안 별도의 터미널에서 다음 명령을 실행합니다.

docker exec -it $(docker ps -a -q -f "name=aws-iot-greengrass") /bin/bash
Windows

Greengrass Docker 컨테이너가 실행되는 동안 별도의 명령 프롬프트에서 다음 명령을 실행합니다.

docker ps -a -q -f "name=aws-iot-greengrass"

gg-container-id를 이전 명령의 container_id 결과로 바꿉니다.

docker exec -it gg-container-id /bin/bash