기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
이 자습서에서는 자동으로 프로비저닝된 AWS 리소스 및 로컬 개발 도구를 사용하여 Docker 컨테이너에 AWS IoT Greengrass 코어 소프트웨어를 설치하고 실행하는 방법을 보여줍니다. 이 개발 환경을 사용하여 Docker 컨테이너의 AWS IoT Greengrass 기능을 탐색할 수 있습니다. 소프트웨어가 이러한 리소스를 프로비저닝하고 로컬 개발 도구를 배포하려면 AWS 자격 증명이 필요합니다.
컨테이너에 AWS 자격 증명을 제공할 수 없는 경우 코어 디바이스가 AWS 작동하는 데 필요한 리소스를 프로비저닝할 수 있습니다. 개발 도구를 코어 디바이스에 배포하여 개발 디바이스로 사용할 수도 있습니다. 이렇게 하면 컨테이너 실행 시 디바이스에 더 적은 권한을 제공할 수 있습니다. 자세한 내용은 수동 리소스 프로비저닝을 사용하여 Docker 컨테이너 AWS IoT Greengrass 에서 실행 단원을 참조하십시오.
사전 조건
이 자습서를 완료하려면 다음이 필요합니다.
-
AWS 계정. 없으면 설정 AWS 계정 단원을 참조하세요.
-
Greengrass 코어 디바이스에 대한 AWS IoT 및 AWS IAM 리소스를 프로비저닝할 수 있는 권한이 있는 IAM 사용자입니다. AWS IoT Greengrass 코어 소프트웨어 설치 관리자는 자격 AWS 증명을 사용하여 이러한 리소스를 자동으로 프로비저닝합니다. 리소스를 자동으로 프로비저닝하기 위한 최소 IAM 정책에 대한 자세한 내용은 설치 관리자가 리소스를 프로비저닝하기 위한 최소 IAM 정책 섹션을 참조하세요.
-
AWS IoT Greengrass Docker 이미지. AWS IoT Greengrass Dockerfile에서 이미지를 빌드할 수 있습니다.
-
Docker 컨테이너를 실행하는 호스트 컴퓨터는 다음과 같은 요구 사항을 충족해야 합니다.
-
인터넷에 연결된 Linux 기반 운영 체제.
-
Docker Engine
버전 18.09 이상. -
(선택 사항) Docker Compose
버전 1.22 이상. Docker Compose는 Docker Compose CLI를 사용하여 Docker 이미지를 실행하려는 경우에만 필요합니다.
-
AWS
보안 인증 구성
이 단계에서는 호스트 컴퓨터에 AWS
보안 자격 증명이 포함된 자격 증명 파일을 생성합니다. AWS IoT Greengrass Docker 이미지를 실행할 때이 자격 증명 파일이 포함된 폴더를 Docker 컨테이너의 /root/.aws/
에 탑재해야 합니다. AWS IoT Greengrass 설치 관리자는 이러한 자격 증명을 사용하여에서 리소스를 프로비저닝합니다 AWS 계정. 설치 관리자가 리소스를 자동으로 프로비저닝하는 데 필요한 최소 IAM 정책에 대한 자세한 내용은 설치 관리자가 리소스를 프로비저닝하기 위한 최소 IAM 정책 섹션을 참조하세요.
-
다음 중 하나를 검색합니다.
-
IAM 사용자에 대한 장기 자격 증명. 장기 자격 증명을 검색하는 방법에 대한 자세한 내용은 IAM 사용 설명서의 IAM 사용자의 액세스 키 관리를 참조하세요.
-
(권장) IAM 역할에 대한 임시 자격 증명. 임시 자격 증명을 검색하는 방법에 대한 자세한 내용은 IAM 사용 설명서의 AWS CLI에서 임시 보안 인증 사용을 참조하세요.
-
-
자격 증명 파일을 배치할 폴더를 생성합니다.
mkdir ./greengrass-v2-credentials
-
텍스트 편집기를 사용하여
./greengrass-v2-credentials
폴더에credentials
라는 이름의 구성 파일을 생성합니다.예를 들어 다음 명령을 실행하면 GNU nano를 사용하여
credentials
파일을 생성할 수 있습니다.nano ./greengrass-v2-credentials/credentials
-
자격 AWS 증명을 다음 형식으로
credentials
파일에 추가합니다.[default] aws_access_key_id =
AKIAIOSFODNN7EXAMPLE
aws_secret_access_key =wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
aws_session_token =AQoEXAMPLEH4aoAH0gNCAPy...truncated...zrkuWJOgQs8IZZaIv2BXIa2R4Olgk
임시 자격 증명에만
aws_session_token
을 포함합니다.
중요
AWS IoT Greengrass 컨테이너를 시작한 후 호스트 컴퓨터에서 자격 증명 파일을 제거합니다. 자격 증명 파일을 제거하지 않으면 AWS 자격 증명이 컨테이너 내에 탑재된 상태로 유지됩니다. 자세한 내용은 컨테이너에서 AWS IoT Greengrass 코어 소프트웨어 실행 단원을 참조하십시오.
환경 파일 생성
이 자습서에서는 환경 파일을 사용하여 Docker 컨테이너 내의 AWS IoT Greengrass 코어 소프트웨어 설치 관리자로 전달될 환경 변수를 설정합니다. docker run
명령의 -e
또는 --env
인수docker-compose.yml
파일의 environment
블록
-
텍스트 편집기를 사용하여
.env
라는 이름의 환경 파일을 생성합니다.예를 들어 Linux 기반 시스템에서 다음 명령을 실행하면 GNU nano를 사용하여 현재 디렉터리에
.env
를 생성할 수 있습니다.nano .env
-
다음 콘텐츠를 파일에 복사합니다.
GGC_ROOT_PATH=
AWS_REGION=/greengrass/v2
region
PROVISION=true THING_NAME=MyGreengrassCore
THING_GROUP_NAME=MyGreengrassCoreGroup
TES_ROLE_NAME=GreengrassV2TokenExchangeRole
TES_ROLE_ALIAS_NAME=GreengrassCoreTokenExchangeRoleAlias
COMPONENT_DEFAULT_USER=ggc_user:ggc_group그런 다음, 다음 값을 바꿉니다.
-
. 설치에 사용하려는 Greengrass 루트 폴더입니다./greengrass/v2
GGC_ROOT
환경 변수를 사용하여 이 값을 지정할 수 있습니다. -
region
. 리소스를 생성한 AWS 리전 입니다. -
MyGreengrassCore
. AWS IoT 사물의 이름입니다. 사물이 존재하지 않는 경우 설치 관리자가 이를 생성합니다. 설치 관리자는 인증서를 다운로드하여 AWS IoT 사물로 인증합니다. -
MyGreengrassCoreGroup
. AWS IoT 사물 그룹의 이름입니다. 사물 그룹이 존재하지 않는 경우 설치 관리자가 이를 생성하고 사물을 추가합니다. 사물 그룹이 존재하고 활성 배포가 있는 경우 코어 디바이스는 배포에서 지정한 소프트웨어를 다운로드하고 실행합니다. -
GreengrassV2TokenExchangeRole
. Greengrass 코어 디바이스에서 임시 AWS 자격 증명을 가져올 수 있도록 허용하는 IAM 토큰 교환 역할의 이름으로 바꿉니다. 역할이 없는 경우 설치 관리자는 이를 생성하고GreengrassV2TokenExchangeRole
Access라는 정책을 생성 및 연결합니다. 자세한 내용은 코어 디바이스에 AWS 서비스와 상호 작용 권한 부여 단원을 참조하십시오. -
GreengrassCoreTokenExchangeRoleAlias
. 토큰 교환 역할 별칭입니다. 역할 별칭이 없는 경우 설치 관리자가 이를 생성하고 지정한 IAM 토큰 교환 역할을 가리킵니다. 자세한 내용은 단원을 참조하세요.
참고
DEPLOY_DEV_TOOLS
환경 변수를true
로 설정하여 Docker 컨테이너 내에서 사용자 지정 구성 요소를 개발할 수 있도록 하는 Greengrass CLI 구성 요소를 배포할 수 있습니다. 이 구성 요소는 프로덕션 환경이 아닌 개발 환경에서만 사용하는 것이 좋습니다. 이 구성 요소는 일반적으로 프로덕션 환경에서는 필요하지 않은 정보와 작업에 대한 액세스를 제공합니다. 필요한 코어 디바이스에만 이 구성 요소를 배포하여 최소 권한 원칙을 따르세요. -
컨테이너에서 AWS IoT Greengrass 코어 소프트웨어 실행
이 자습서에서는 Docker 컨테이너에 빌드한 Docker 이미지를 시작하는 방법을 설명합니다. Docker CLI 또는 Docker Compose CLI를 사용하여 Docker 컨테이너에서 AWS IoT Greengrass 코어 소프트웨어 이미지를 실행할 수 있습니다.
-
Docker 컨테이너를 시작하려면 다음 명령을 실행합니다.
docker run --rm --init -it --name
docker-image
\ -vpath/to/
greengrass-v2-credentials:/root/.aws/:ro \ --env-file .env \ -p 8883 \your-container-image:version
이 예제 명령은 Docker 실행
을 위해 다음 인수를 사용합니다. -
--rm
. 컨테이너가 종료될 때 컨테이너를 정리합니다. -
--init
. 컨테이너에서 init 프로세스를 사용합니다. 참고
--init
인수는 Docker 컨테이너를 중지할 때 AWS IoT Greengrass 코어 소프트웨어를 종료하는 데 필요합니다. -
-it
. (선택 사항) 전경의 Docker 컨테이너를 대화형 프로세스로 실행합니다. 이를 대신 Docker 컨테이너를 분리 모드로 실행하기 위한 -d
인수로 바꿀 수 있습니다. 자세한 내용은 Docker 설명서의 Detached vs foreground를 참조하세요. -
--name
. aws-iot-greengrass
라는 이름의 컨테이너를 실행합니다. -
-v
. Docker 컨테이너에 볼륨을 탑재하여 구성 파일과 인증서 파일을 컨테이너 내에서 AWS IoT Greengrass 실행할 수 있도록 합니다. -
--env-file
. (선택 사항) 환경 파일을 지정하여 Docker 컨테이너 내의 AWS IoT Greengrass 코어 소프트웨어 설치 관리자로 전달될 환경 변수를 설정합니다. 이 인수는 환경 변수를 설정하기 위해 환경 파일을 생성한 경우에만 필요합니다. 환경 파일을 생성하지 않은 경우 --env
인수를 사용하여 Docker 실행 명령에서 환경 변수를 직접 설정할 수 있습니다. -
-p
. (선택 사항) 8883 컨테이너 포트를 호스트 시스템에 게시합니다. AWS IoT Greengrass 는 MQTT 트래픽에 포트 8883을 사용하므로 이 인수는 MQTT를 통해 연결하고 통신하려는 경우에 필요합니다. 다른 포트를 열려면 추가 -p
인수를 사용합니다.
참고
Docker 컨테이너를 강화된 보안으로 실행하려면
--cap-drop
및--cap-add
인수를 사용하여 컨테이너에 대한 Linux 기능을 선택적으로 활성화할 수 있습니다. 자세한 내용은 Docker 설명서의 런타임 권한 및 Linux 기능을 참조하세요. -
-
호스트 디바이스의
./greengrass-v2-credentials
에서 자격 증명을 제거합니다.rm -rf ./greengrass-v2-credentials
중요
이러한 자격 증명은 설정 중에만 코어 디바이스에 필요한 광범위한 권한을 제공하므로 이를 제거합니다. 자격 증명을 제거하지 않으면 컨테이너에서 실행되는 Greengrass 구성 요소와 기타 프로세스가 해당 자격 증명에 액세스할 수 있습니다. Greengrass 구성 요소에 AWS 자격 증명을 제공해야 하는 경우 토큰 교환 서비스를 사용합니다. 자세한 내용은 AWS 서비스와 상호 작용 단원을 참조하십시오.
다음 단계
AWS IoT Greengrass 코어 소프트웨어가 이제 Docker 컨테이너에서 실행 중입니다. 다음 명령을 실행하여 현재 실행 중인 컨테이너의 컨테이너 ID를 검색합니다.
docker ps
그런 다음 다음 명령을 실행하여 컨테이너에 액세스하고 컨테이너 내에서 실행되는 AWS IoT Greengrass 코어 소프트웨어를 탐색할 수 있습니다.
docker exec -it
container-id
/bin/bash
간단한 구성 요소 생성에 대한 자세한 내용은 자습서: 시작하기 AWS IoT Greengrass V2의 4단계: 디바이스에서 구성 요소 개발 및 테스트 섹션을 참조하세요.
참고
docker exec
를 사용하여 Docker 컨테이너 내에서 명령을 실행하면 이 명령이 Docker 로그에 기록되지 않습니다. Docker 로그에 명령을 기록하려면 Docker 컨테이너에 대화형 쉘을 연결합니다. 자세한 내용은 대화형 쉘을 Docker 컨테이너에 연결 단원을 참조하십시오.
AWS IoT Greengrass 코어 로그 파일을 호출greengrass.log
하고에 위치합니다
. 구성 요소 로그 파일도 동일한 디렉터리에 있습니다. Greengrass 로그를 호스트의 임시 디렉터리에 복사하려면 다음 명령을 실행합니다.
/logs/greengrass/v2
docker cp
container-id
:/greengrass/v2/logs/tmp/logs
컨테이너가 종료되거나 제거된 후 로그를 유지하려면 호스트의 임시 로그 디렉터리에 전체 Greengrass 디렉터리를 탑재하는 대신
디렉터리만 바인딩 탑재하는 것이 좋습니다. 자세한 내용은 Docker 컨테이너 외부에서 Greengrass 로그 유지 단원을 참조하십시오.
/logs/greengrass/v2
실행 중인 AWS IoT Greengrass Docker 컨테이너를 중지하려면 docker stop
또는를 실행합니다docker-compose -f docker-compose.yml stop
. 이 작업은 SIGTERM
을 Greengrass 프로세스로 전송하고 컨테이너에서 시작된 모든 관련 프로세스를 종료합니다. Docker 컨테이너는 docker-init
실행 파일을 사용하여 프로세스 PID 1로 초기화되며, 이는 남아 있는 좀비 프로세스를 제거하는 데 도움이 됩니다. 자세한 내용은 Docker 설명서의 Specify an init process
Docker 컨테이너에서 AWS IoT Greengrass 를 실행하는 데 발생하는 문제 해결에 대한 자세한 내용은 Docker 컨테이너 AWS IoT Greengrass 의 문제 해결 섹션을 참조하세요.