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

AWS IoT Greengrass Version 1 2023년 6월 30일에 수명 연장 단계에 들어갔습니다. AWS IoT Greengrass V1 관리형 정책에 대한 자세한 정보는 섹션을 참조하세요. 이 날짜 이후에는 기능, 개선 사항, 버그 수정 또는 보안 패치를 제공하는 업데이트가 AWS IoT Greengrass V1 릴리스되지 않습니다. 에서 실행되는 기기는 AWS IoT Greengrass V1 중단되지 않으며 계속 작동하고 클라우드에 연결됩니다. 새로운 기능이 크게 추가되고 추가 플랫폼에 대한 지원이 추가되는 으로 마이그레이션하는 AWS IoT Greengrass Version 2 것이 좋습니다.

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

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

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

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

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

중요

2022년 6월 30일에 AWS IoT Greengrass은(는) Amazon Elastic Container Registry(Amazon ECR) 및 Docker Hub에 게시된 AWS IoT Greengrass 코어 소프트웨어 v1.x Docker 이미지에 대한 유지 관리를 종료하였습니다. 유지 관리 종료 후 1년이 되는 2023년 6월 30일까지 Amazon ECR 및 Docker Hub에서 이 Docker 이미지를 계속 다운로드할 수 있습니다. 그러나 AWS IoT Greengrass Core 소프트웨어 v1.x Docker 이미지는 2022년 6월 30일에 유지 관리가 종료된 이후 더 이상 보안 패치나 버그 수정을 받지 않습니다. 이러한 Docker 이미지를 사용하는 프로덕션 워크로드를 실행하는 경우 AWS IoT Greengrass이(가) 제공하는 Dockerfile을 사용하여 자체 Docker 이미지를 구축하는 것이 좋습니다. 자세한 내용은 AWS IoT Greengrass Docker 소프트웨어 섹션을 참조하세요.

이 주제에서는 에서 AWS IoT Greengrass Docker 이미지를 Amazon ECR 다운로드하는 방법과 이를 Windows, macOS 또는 Linux(x86_64) 플랫폼에서 실행하는 방법을 설명합니다. 이 주제에는 다음 단계가 포함되어 있습니다.

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

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

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

Greengrass 그룹에 대한 Lambda 런타임 환경을 컨테이너 없음으로 설정하면 이러한 기능이 지원되지 않습니다. 이 설정은 Docker 컨테이너에서 AWS IoT Greengrass를 실행하는 데 필수적입니다.

필수 조건

이 자습서를 시작하기 전에 다음 작업을 수행해야 합니다.

  • 선택한 AWS Command Line Interface(AWS CLI) 버전에 따라 호스트 컴퓨터에 다음 소프트웨어 및 버전을 설치해야 합니다.

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

    • AWS CLI 버전 2.0.0 이상

      참고

      Windows 컴퓨터에서 최신 AWS CLI 버전 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
      참고

      Windows에서 AWS CLI 버전 1의 MSI 설치를 사용하는 경우 다음 사항에 유의하십시오.

      • 이 AWS CLI 버전 1 설치에서 botocore를 설치하지 못하는 경우 Python 및 pip 설치를 사용해 봅니다.

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

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

    • Amazon ECR의 요구 사항에 따라 사용자가 레지스트리에 대해 인증하고 Amazon ECR 리포지토리에서 이미지를 푸시 또는 풀하기 전에 AWS Identity and Access Management (IAM) 정책을 통해 ecr:GetAuthorizationToken 권한을 부여해야 합니다. 자세한 내용은 Amazon Elastic Container Registry 사용 설명서Amazon ECR 리포지토리 정책 예시One Amazon ECR 리포지토리 액세스를 참조하십시오.

1단계: Amazon ECR에서 AWS IoT Greengrass 컨테이너 이미지 가져오기

AWS는 AWS IoT Greengrass Core 소프트웨어가 설치된 도커 이미지를 제공합니다.

주의

AWS IoT Greengrass 코어 소프트웨어 v1.11.6부터 Greengrass Docker 이미지에 Python 2.7이 더 이상 포함되지 않습니다. Python 2.7이 2020년에 수명을 다했고 더 이상 보안 업데이트가 이루어지지 않기 때문입니다. 이러한 Docker 이미지로 업데이트하기로 선택한 경우, 업데이트를 프로덕션 디바이스에 배포하기 전에 애플리케이션이 새 Docker 이미지와 호환되는지 확인하는 것을 권장합니다. Greengrass Docker 이미지를 사용하는 애플리케이션에 Python 2.7이 필요한 경우, Python 2.7을 애플리케이션에 포함하도록 Greengrass Dockerfile을 수정할 수 있습니다.

Amazon ECR에서 latest 이미지를 끌어오는 방법을 보여 주는 단계를 알아보려면 해당 운영 체제를 선택하십시오.

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

  1. Amazon ECR에서 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. Amazon ECR에서 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. Amazon ECR에서 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 그룹 및 코어를 생성해야 합니다. 이 단계에는 인증서와 코어 구성 파일을 다운로드하는 작업도 포함됩니다.

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

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

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

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

  1. 디바이스의 보안 리소스를 위한 폴더를 생성하고 인증서와 키를 이 폴더로 옮깁니다. 다음 명령을 실행합니다. path-to-security-files을 보안 리소스 경로로 바꾸고 certificateId를 파일 이름의 인증서 ID로 대체합니다.

    mkdir /tmp/certs mv path-to-security-files/certificateId-certificate.pem.crt /tmp/certs mv path-to-security-files/certificateId-public.pem.key /tmp/certs mv path-to-security-files/certificateId-private.pem.key /tmp/certs mv path-to-security-files/AmazonRootCA1.pem /tmp/certs
  2. 디바이스 구성을 위한 폴더를 만들고 AWS IoT Greengrass 코어 구성 파일을 이 폴더로 옮깁니다. 다음 명령을 실행합니다. path-to-config-file를 구성 파일의 경로로 바꿉니다.

    mkdir /tmp/config mv path-to-config-file/config.json /tmp/config
  3. AWS IoT Greengrass를 시작하고 Docker 컨테이너에서 인증서와 구성 파일을 바인드 탑재합니다.

    인증서와 구성 파일의 압축을 푼 경로로 /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. 디바이스의 보안 리소스를 위한 폴더를 생성하고 인증서와 키를 이 폴더로 옮깁니다. 다음 명령을 실행합니다. path-to-security-files을 보안 리소스 경로로 바꾸고 certificateId를 파일 이름의 인증서 ID로 대체합니다.

    mkdir /tmp/certs mv path-to-security-files/certificateId-certificate.pem.crt /tmp/certs mv path-to-security-files/certificateId-public.pem.key /tmp/certs mv path-to-security-files/certificateId-private.pem.key /tmp/certs mv path-to-security-files/AmazonRootCA1.pem /tmp/certs
  2. 디바이스 구성을 위한 폴더를 만들고 AWS IoT Greengrass 코어 구성 파일을 이 폴더로 옮깁니다. 다음 명령을 실행합니다. path-to-config-file를 에이전트 구성 파일의 경로로 바꿉니다.

    mkdir /tmp/config mv path-to-config-file/config.json /tmp/config
  3. AWS IoT Greengrass를 시작하고 Docker 컨테이너에서 인증서와 구성 파일을 바인드 탑재합니다.

    인증서와 구성 파일의 압축을 푼 경로로 /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. 디바이스의 보안 리소스를 위한 폴더를 생성하고 인증서와 키를 이 폴더로 옮깁니다. 명령 프롬프트에서 다음 명령을 실행합니다. path-to-security-files을 보안 리소스 경로로 바꾸고 certificateId를 파일 이름의 인증서 ID로 대체합니다.

    mkdir C:\Users\%USERNAME%\Downloads\certs move path-to-security-files\certificateId-certificate.pem.crt C:\Users\%USERNAME%\Downloads\certs move path-to-security-files\certificateId-public.pem.key C:\Users\%USERNAME%\Downloads\certs move path-to-security-files\certificateId-private.pem.key C:\Users\%USERNAME%\Downloads\certs move path-to-security-files\AmazonRootCA1.pem C:\Users\%USERNAME%\Downloads\certs
  2. 디바이스 구성을 위한 폴더를 만들고 AWS IoT Greengrass 코어 구성 파일을 이 폴더로 옮깁니다. 명령 프롬프트에서 다음 명령을 실행합니다. path-to-config-file를 에이전트 구성 파일의 경로로 바꿉니다.

    mkdir C:\Users\%USERNAME%\Downloads\config move path-to-config-file\config.json C:\Users\%USERNAME%\Downloads\config
  3. AWS IoT Greengrass를 시작하고 Docker 컨테이너에서 인증서와 구성 파일을 바인드 탑재합니다. 명령 프롬프트에서 다음 명령을 실행합니다.

    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 그룹에 대한 "컨테이너 없음" 컨테이너화 구성

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

  1. AWS IoT 콘솔 탐색 창의 관리에서 Greengrass 디바이스를 확장한 다음 그룹(V1)을 선택합니다.

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

  3. Lambda 함수탭을 선택합니다.

  4. 기본 Lambda 함수 런타임 환경에서 편집을 선택합니다.

  5. 기본 Lambda 함수 런타임 환경 편집기본 Lambda 함수 컨테이너화에서 컨테이너화 설정을 변경합니다.

  6. Save를 선택합니다.

변경 사항은 그룹이 배포될 때 적용됩니다.

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

참고

기본적으로 Lambda 함수는 그룹 컨테이너화 설정을 사용합니다. AWS IoT Greengrass이(가) Docker 컨테이너에서 실행 중일 때 Lambda 함수에 컨테이너 없음 설정을 재정의하면 배포가 실패합니다.

5단계: AWS IoT Greengrass Docker 컨테이너에 Lambda 함수 배포

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

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

Docker 컨테이너에서 실행 중일 떄 AWS IoT 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 Interface 사용 설명서Microsoft Windows에 AWS Command Line Interface 설치를 참조하십시오.

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

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

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

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

<account-id><user-name>오류: GetAuthorizationToken 작업을 호출하는 동안 오류가 발생했습니다(AccessDenieException): 사용자: arn:aws:iam::<account-id>:user/<user-name>에게 수행할 권한이 없습니다: ecr:GetAuthorizationToken on resource: *

Amazon ECR 리포지토리에 액세스할 충분한 권한이 없는데 aws ecr get-login-password 명령을 실행할 경우 이 오류가 발생할 수 있습니다. 자세한 내용은 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 디렉터리가 바인드 탑재되고 Docker 이미지가 시작됩니다.

인증서와 구성 파일의 압축을 푼 경로로 /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

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

Windows

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

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

그런 다음 Docker 컨테이너 내부에서 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