기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Amazon을 사용하여 가상 디바이스 생성 EC2
이 자습서에서는 클라우드에서 가상 디바이스로 사용할 Amazon EC2 인스턴스를 생성합니다.
이 자습서를 완료하려면 가 필요합니다 AWS 계정. 없는 경우 계속하기 전에 설정 AWS 계정에서 설명하는 단계를 완료하세요.
이 자습서에서 배울 내용은 다음과 같습니다.
Amazon EC2 인스턴스 설정
다음 단계에서는 물리적 디바이스 대신 가상 디바이스 역할을 할 Amazon EC2 인스턴스를 생성하는 방법을 보여줍니다.
Amazon EC2 인스턴스를 처음 생성한 경우 Amazon EC2Linux 인스턴스 시작하기에서 지침이 더 유용할 수 있습니다.
인스턴스 시작
에서 Amazon EC2 콘솔을 엽니다https://console.aws.amazon.com/ec2/
. -
왼쪽의 콘솔 메뉴에서 Instances(인스턴스) 섹션을 펼치고 Instances(인스턴스)를 선택합니다. Instances(인스턴스) 대시보드에서 오른쪽의 Launch Instance(인스턴스 시작)를 선택하면 기본 구성 목록이 표시됩니다.
-
Name and tags(이름 및 태그) 섹션에서 인스턴스의 이름을 입력하고 선택적으로 태그를 추가합니다.
-
애플리케이션 및 OS 이미지(Amazon Machine Image) 섹션에서 Amazon Linux 2()와 같은 인스턴스 AMI 템플릿을 선택합니다. AMI HVM 이는 '무료 등급 적용 가능'AMI으로 표시됩니다.
-
Instance type(인스턴스 유형) 섹션에서 인스턴스의 하드웨어 구성을 선택할 수 있습니다. 기본으로 선택된
t2.micro
유형을 선택합니다. 프리 티어에 적격인 인스턴스 유형입니다. -
Key pair (login)(키 페어(로그인)) 섹션의 드롭다운 목록에서 키 페어 이름을 선택하거나 Create a new key pair(새 키 페어 생성)를 선택하여 새 키 페어를 생성합니다. 새 키 페어를 생성할 때는 프라이빗 키 파일을 다운로드하여 안전한 곳에 저장해야 합니다. 이때만 다운로드하고 저장할 수 있기 때문입니다. 인스턴스를 시작할 때 키 페어의 이름을 제공하고, 인스턴스에 연결할 때마다 해당 프라이빗 키를 제공해야 합니다.
주의
Proceed without a key pair(키 페어 없이 계속) 옵션을 선택하지 마세요. 키 페어 없이 인스턴스를 시작하면 인스턴스에 연결할 수 없습니다.
-
Network settings(네트워크 설정) 섹션 및 Configure storage(스토리지 구성) 섹션에서 기본 설정을 유지할 수 있습니다. 준비가 완료되면 Launch instances(인스턴스 시작)를 선택합니다.
-
확인 페이지에서 인스턴스가 실행 중인지 확인할 수 있습니다. 인스턴스 보기를 선택하여 확인 페이지를 닫고 콘솔로 돌아갑니다.
-
인스턴스 화면에서 시작 상태를 볼 수 있습니다. 인스턴스를 시작하는 데 약간 시간이 걸립니다. 인스턴스를 시작할 때 초기 상태는
pending
입니다. 인스턴스가 시작되면 상태가 로 변경running
되고 퍼블릭 DNS 이름이 수신됩니다. (공개DNS(IPv4) 열이 숨겨져 있는 경우 페이지 오른쪽 상단 모서리에서 열 표시/숨기기(기어 모양 아이콘)를 선택한 다음 공개DNS(IPv4)를 선택합니다.) -
연결할 수 있도록 인스턴스가 준비될 때까지 몇 분 정도 걸릴 수 있습니다. 인스턴스가 상태 확인을 통과했는지 확인하세요. 상태 검사 열에서 이 정보를 볼 수 있습니다.
새 인스턴스가 상태 확인을 통과한 후 다음 절차를 계속하여 인스턴스에 연결합니다.
인스턴스에 연결하려면
Amazon EC2 콘솔에서 인스턴스를 선택하고 Amazon EC2 Instance Connect를 사용하여 연결을 선택하여 브라우저 기반 클라이언트를 사용하여 인스턴스에 연결할 수 있습니다. Instance Connect는 권한을 처리하여 성공적인 연결을 제공합니다.
에서 Amazon EC2 콘솔을 엽니다https://console.aws.amazon.com/ec2/
. -
왼쪽 메뉴에서 Instances(인스턴스)를 선택합니다.
-
인스턴스를 선택한 다음 연결을 선택합니다.
-
Amazon EC2 인스턴스 연결 , 연결을 선택합니다.
이제 새 Amazon 인스턴스에 로그인되는 Amazon EC2 Instance Connect 창이 있어야 합니다EC2.
Git, Node.js 설치 및 AWS CLI구성
이 섹션에서는 Linux 인스턴스에 Git과 Node.js를 설치합니다.
Git를 설치하려면
-
Amazon EC2 Instance Connect 창에서 다음 명령을 사용하여 인스턴스를 업데이트합니다.
sudo yum update -y
-
Amazon EC2 Instance Connect 창에서 다음 명령을 사용하여 Git을 설치합니다.
sudo yum install git -y
-
Git이 설치되어 있고 현재 버전의 Git이 설치되어 있는지 확인하려면 다음 명령을 실행합니다.
git --version
Node.js를 설치하려면
-
Amazon EC2 Instance Connect 창에서 다음 명령을 사용하여 노드 버전 관리자(nvm)를 설치합니다.
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
nvm을 사용하면 여러 버전의 Node.js를 설치할 수 있고 여러 버전 간을 전환할 수 있기 때문에 여기서는 nvm을 사용하여 Node.js를 설치합니다.
-
Amazon EC2 Instance Connect 창에서 이 명령을 사용하여 nvm을 활성화합니다.
. ~/.nvm/nvm.sh
-
Amazon EC2 Instance Connect 창에서 nvm을 사용하여 이 명령을 사용하여 최신 버전의 Node.js를 설치합니다.
nvm install 16
참고
그러면 Node.js의 최신 LTS 릴리스가 설치됩니다.
Node.js를 설치하면 npm(노드 패키지 관리자)도 설치되므로 필요에 따라 추가 모듈을 설치할 수 있습니다.
-
Amazon EC2 Instance Connect 창에서 이 명령을 사용하여 Node.js가 올바르게 설치되고 실행되고 있는지 테스트합니다.
node -e "console.log('Running Node.js ' + process.version)"
이 자습서에서는 Node v10.0 이상이 필요합니다. 자세한 내용은 자습서: Amazon EC2 인스턴스에서 Node.js 설정을 참조하세요.
구성하려면 AWS CLI
Amazon EC2 인스턴스는 와 함께 미리 로드된 상태로 제공됩니다 AWS CLI. 그러나 AWS CLI 프로필을 작성해야 합니다. 를 구성하는 방법에 대한 자세한 내용은 구성을 AWS CLI CLI참조하세요.
-
다음 예제는 샘플 값을 보여줍니다. 이들을 사용자의 고유한 값으로 교체합니다. 이 값은 AWS 콘솔의 계정 정보에 있는 보안 자격 증명(Security credentials)
에서 찾을 수 있습니다. Amazon EC2 Instance Connect 창에서 다음 명령을 입력합니다.
aws configure
그런 다음 표시된 프롬프트에 계정의 값을 입력합니다.
AWS Access Key ID [None]:
AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]:wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Default region name [None]:us-west-2
Default output format [None]:json
-
다음 명령을 사용하여 AWS CLI 구성을 테스트할 수 있습니다.
aws iot describe-endpoint --endpoint-type iot:Data-ATS
AWS CLI 이 올바르게 구성된 경우 명령은 의 엔드포인트 주소를 반환해야 합니다 AWS 계정.
가상 디바이스에 대한 AWS IoT 리소스 생성
이 섹션에서는 AWS CLI 를 사용하여 가상 디바이스에서 사물 객체와 해당 인증서 파일을 직접 생성하는 방법을 설명합니다. 이 작업은 다른 컴퓨터에서 디바이스로 복사할 때 발생할 수 있는 잠재적인 복합 문제를 피하기 위해 디바이스에서 직접 수행됩니다. 이 섹션에서는 가상 디바이스를 위한 다음과 같은 리소스를 생성합니다.
-
에서 가상 디바이스를 나타내는 사물 객체입니다 AWS IoT.
-
가상 디바이스를 인증하기 위한 인증서.
-
가상 디바이스가 AWS IoT에 연결하고 메시지를 게시, 수신 및 구독할 수 있는 권한을 부여하는 정책 문서.
Linux 인스턴스에서 AWS IoT 사물 객체를 생성하려면
에 연결된 디바이스는 AWS IoT 레지스트리의 사물 객체로 AWS IoT 표시됩니다. 사물 객체는 특정 디바이스 또는 논리적 엔터티를 나타냅니다. 이 경우 사물 객체는 가상 디바이스인 이 Amazon EC2 인스턴스를 나타냅니다.
-
Amazon EC2 Instance Connect 창에서 다음 명령을 실행하여 사물 객체를 생성합니다.
aws iot create-thing --thing-name "MyIotThing"
-
JSON 응답은 다음과 같아야 합니다.
{ "thingArn": "arn:aws:iot:
your-region
:your-aws-account
:thing/MyIotThing", "thingName": "MyIotThing", "thingId": "6cf922a8-d8ea-4136-f3401EXAMPLE
" }
Linux 인스턴스에서 AWS IoT 키 및 인증서를 생성하고 연결하려면
create-keys-and-certificate
-
Amazon EC2 Instance Connect 창에서 인증서와 키 파일을 저장할 디렉터리를 생성합니다.
mkdir ~/certs
-
Amazon EC2 Instance Connect 창에서 이 명령을 사용하여 Amazon CA(인증 기관) 인증서 사본을 다운로드합니다.
curl -o ~/certs/Amazon-root-CA-1.pem \ https://www.amazontrust.com/repository/AmazonRootCA1.pem
-
Amazon EC2 Instance Connect 창에서 다음 명령을 실행하여 프라이빗 키, 퍼블릭 키 및 X.509 인증서 파일을 생성합니다. 또한 이 명령은 에 인증서를 등록하고 활성화합니다 AWS IoT.
aws iot create-keys-and-certificate \ --set-as-active \ --certificate-pem-outfile "~/certs/device.pem.crt" \ --public-key-outfile "~/certs/public.pem.key" \ --private-key-outfile "~/certs/private.pem.key"
그 응답은 다음과 같습니다. 후속 명령에서 사용할 수 있도록
certificateArn
을 저장해 둡니다. 이것은 이후 단계에서 인증서를 사물에 연결하고 정책을 인증서에 연결하는 데 필요합니다.{ "certificateArn": "
arn:aws:iot:us-west-2:123456789012:cert/9894ba17925e663f1d29c23af4582b8e3b7619c31f3fbd93adcb51ae54b83dc2
", "certificateId": "9894ba17925e663f1d29c23af4582b8e3b7619c31f3fbd93adcb51ae54b83dc2
", "certificatePem": " -----BEGIN CERTIFICATE-----MIICiTCCEXAMPLE6m7oRw0uXOjANBgkqhkiG9w0BAQUFADCBiDELMAkGA1UEBhMC VVMxCzAJBgNVBAgEXAMPLEAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6 b24xFDASBgNVBAsTC0lBTSEXAMPLE2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAd BgkqhkiG9w0BCQEWEG5vb25lQGFtYEXAMPLEb20wHhcNMTEwNDI1MjA0NTIxWhcN MTIwNDI0MjA0NTIxWjCBiDELMAkGA1UEBhMCEXAMPLEJBgNVBAgTAldBMRAwDgYD VQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDAEXAMPLEsTC0lBTSBDb25z b2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAdBgkqhkiG9w0BCQEXAMPLE25lQGFt YXpvbi5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMaK0dn+aEXAMPLE EXAMPLEfEvySWtC2XADZ4nB+BLYgVIk60CpiwsZ3G93vUEIO3IyNoH/f0wYK8m9T rDHudUZEXAMPLELG5M43q7Wgc/MbQITxOUSQv7c7ugFFDzQGBzZswY6786m86gpE Ibb3OhjZnzcvQAEXAMPLEWIMm2nrAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAtCu4 nUhVVxYUntneD9+h8Mg9qEXAMPLEyExzyLwaxlAoo7TJHidbtS4J5iNmZgXL0Fkb FFBjvSfpJIlJ00zbhNYS5f6GuoEDEXAMPLEBHjJnyp378OD8uTs7fLvjx79LjSTb NYiytVbZPQUQ5Yaxu2jXnimvw3rrszlaEXAMPLE=
-----END CERTIFICATE-----\n", "keyPair": { "PublicKey": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkEXAMPLEQEFAAOCAQ8AMIIBCgKCAQEAEXAMPLE1nnyJwKSMHw4h\nMMEXAMPLEuuN/dMAS3fyce8DW/4+EXAMPLEyjmoF/YVF/gHr99VEEXAMPLE5VF13\n59VK7cEXAMPLE67GK+y+jikqXOgHh/xJTwo+sGpWEXAMPLEDz18xOd2ka4tCzuWEXAMPLEahJbYkCPUBSU8opVkR7qkEXAMPLE1DR6sx2HocliOOLtu6Fkw91swQWEXAMPLE\GB3ZPrNh0PzQYvjUStZeccyNCx2EXAMPLEvp9mQOUXP6plfgxwKRX2fEXAMPLEDa\nhJLXkX3rHU2xbxJSq7D+XEXAMPLEcw+LyFhI5mgFRl88eGdsAEXAMPLElnI9EesG\nFQIDAQAB\n
-----END PUBLIC KEY-----\n", "PrivateKey": "-----BEGIN RSA PRIVATE KEY-----\nkey omitted for security reasons\n
-----END RSA PRIVATE KEY-----\n" } } -
Amazon EC2 Instance Connect 창에서 다음 명령과
certificateArn
이전 명령의 응답에서.aws iot attach-thing-principal \ --thing-name "MyIotThing" \ --principal "
certificateArn
"이 명령이 제대로 실행되면 어떤 출력도 표시하지 않습니다.
정책을 생성하여 연결하려면
-
Amazon EC2 Instance Connect 창에서 이 정책 문서를 라는 파일에 복사하고 붙여 넣어 정책 파일을 생성합니다
~/policy.json
.자주 사용하는 Linux 편집기가 없는 경우 다음 명령을 사용하여 nano를 열 수 있습니다.
nano ~/policy.json
policy.json
에 대한 정책 문서를 붙여넣습니다. nano 편집기를 종료(Ctrl-X)하고 파일을 저장합니다.policy.json
용 정책 문서의 내용.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Publish", "iot:Subscribe", "iot:Receive", "iot:Connect" ], "Resource": [ "*" ] } ] }
-
Amazon EC2 Instance Connect 창에서 다음 명령을 사용하여 정책을 생성합니다.
aws iot create-policy \ --policy-name "MyIotThingPolicy" \ --policy-document "file://~/policy.json"
출력:
{ "policyName": "MyIotThingPolicy", "policyArn": "arn:aws:iot:
your-region
:your-aws-account
:policy/MyIotThingPolicy", "policyDocument": "{ \"Version\": \"2012-10-17\", \"Statement\": [ { \"Effect\": \"Allow\", \"Action\": [ \"iot:Publish\", \"iot:Receive\", \"iot:Subscribe\", \"iot:Connect\" ], \"Resource\": [ \"*\" ] } ] }", "policyVersionId": "1" } -
Amazon EC2 Instance Connect 창에서 다음 명령을 사용하여 가상 디바이스의 인증서에 정책을 연결합니다.
aws iot attach-policy \ --policy-name "MyIotThingPolicy" \ --target "
certificateArn
"이 명령이 제대로 실행되면 어떤 출력도 표시하지 않습니다.
용 AWS IoT 디바이스 설치 SDK JavaScript
이 섹션에서는 애플리케이션이 AWS IoT 및 샘플 프로그램과 통신하는 데 사용할 수 있는 코드가 JavaScript포함된 SDK용 AWS IoT 디바이스를 설치합니다. 자세한 내용은 AWS IoT JavaScript GitHub 리포지토리SDK용 디바이스를
Linux 인스턴스에 SDK JavaScript 용 AWS IoT 디바이스를 설치하려면
-
Amazon EC2 Instance Connect 창에서 이 명령을 사용하여 JavaScript 리포지토리SDK용 AWS IoT 디바이스를 홈
aws-iot-device-sdk-js-v2
디렉터리의 디렉터리에 복제합니다.cd ~ git clone https://github.com/aws/aws-iot-device-sdk-js-v2.git
-
이전 단계에서 생성한
aws-iot-device-sdk-js-v2
디렉터리로 이동합니다.cd aws-iot-device-sdk-js-v2
-
npm을 사용하여 를 설치합니다SDK.
npm install
샘플 애플리케이션 실행
다음 섹션의 명령은 이 표에 표시된 대로 키 및 인증서 파일이 가상 디바이스에 저장되어 있다고 가정합니다.
인증서 파일 이름 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
파일 |
파일 경로 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
프라이빗 키 |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
디바이스 인증서 |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
루트 CA 인증서 |
|
이 섹션에서는 SDK 용 AWS IoT 디바이스의 aws-iot-device-sdk-js-v2/samples/node
디렉터리에 있는 pub-sub.js
샘플 앱을 설치하고 실행합니다 JavaScript. 이 앱은 Amazon EC2 인스턴스인 디바이스가 MQTT 라이브러리를 사용하여 MQTT 메시지를 게시하고 구독하는 방법을 보여줍니다. pub-sub.js
샘플 앱은 topic_1
주제를 구독하고 해당 주제에 10개의 메시지를 게시하고 메시지 브로커로부터 받은 메시지를 표시합니다.
샘플 앱을 설치하고 실행하려면
-
Amazon EC2 Instance Connect 창에서 가 SDK 생성한
aws-iot-device-sdk-js-v2/samples/node/pub_sub
디렉터리로 이동하여 이러한 명령을 사용하여 샘플 앱을 설치합니다.cd ~/aws-iot-device-sdk-js-v2/samples/node/pub_sub npm install
-
Amazon EC2 Instance Connect 창에서
your-iot-endpoint
이 명령을 AWS IoT 사용하여 에서 .aws iot describe-endpoint --endpoint-type iot:Data-ATS
-
Amazon EC2 Instance Connect 창에서
your-iot-endpoint
표시된 대로 이 명령을 실행합니다.node dist/index.js --topic topic_1 --ca_file ~/certs/Amazon-root-CA-1.pem --cert ~/certs/device.pem.crt --key ~/certs/private.pem.key --endpoint
your-iot-endpoint
샘플 앱은 다음과 같은 작업을 수행합니다.
-
계정의 AWS IoT Core 에 연결합니다.
-
메시지 주제 topic_1을 구독하고 해당 주제에 대해 수신하는 메시지 표시.
-
topic_1 주제에 10개의 메시지 게시.
-
다음과 유사한 출력 표시.
Publish received. topic:"topic_1" dup:false qos:1 retain:false {"message":"Hello world!","sequence":1} Publish received. topic:"topic_1" dup:false qos:1 retain:false {"message":"Hello world!","sequence":2} Publish received. topic:"topic_1" dup:false qos:1 retain:false {"message":"Hello world!","sequence":3} Publish received. topic:"topic_1" dup:false qos:1 retain:false {"message":"Hello world!","sequence":4} Publish received. topic:"topic_1" dup:false qos:1 retain:false {"message":"Hello world!","sequence":5} Publish received. topic:"topic_1" dup:false qos:1 retain:false {"message":"Hello world!","sequence":6} Publish received. topic:"topic_1" dup:false qos:1 retain:false {"message":"Hello world!","sequence":7} Publish received. topic:"topic_1" dup:false qos:1 retain:false {"message":"Hello world!","sequence":8} Publish received. topic:"topic_1" dup:false qos:1 retain:false {"message":"Hello world!","sequence":9} Publish received. topic:"topic_1" dup:false qos:1 retain:false {"message":"Hello world!","sequence":10}
샘플 앱을 실행하는 데 문제가 있는 경우 샘플 애플리케이션의 문제 해결를 검토합니다.
샘플 앱이 수행 중인 작업에 대한 자세한 메시지를 표시하도록 명령줄에 --verbosity debug
파라미터를 추가할 수도 있습니다. 이 정보는 문제를 해결하는 데 필요한 도움을 제공할 수 있습니다.
AWS IoT 콘솔에서 샘플 앱의 메시지 보기
AWS IoT 콘솔의 MQTT 테스트 클라이언트를 사용하여 샘플 앱의 메시지가 메시지 브로커를 통과할 때 해당 메시지를 볼 수 있습니다.
샘플 앱에서 게시한 MQTT 메시지를 보려면
-
클라이언트를 AWS IoT MQTT 사용하여 MQTT 메시지 보기 섹션을 검토합니다. 이렇게 하면 AWS IoT 콘솔에서 MQTT 테스트 클라이언트를 사용하여 메시지 브로커를 통과할 때 MQTT 메시지를 보는 방법을 배울 수 있습니다.
-
AWS IoT 콘솔 에서 MQTT 테스트 클라이언트를 엽니다.
-
Subscribe to a topic(주제 구독)에서 topic_1 주제를 구독합니다.
-
Amazon EC2 Instance Connect 창에서 샘플 앱을 다시 실행하고 AWS IoT 콘솔 의 MQTT 테스트 클라이언트에서 메시지를 확인합니다.
cd ~/aws-iot-device-sdk-js-v2/samples/node/pub_sub node dist/index.js --topic topic_1 --ca_file ~/certs/Amazon-root-CA-1.pem --cert ~/certs/device.pem.crt --key ~/certs/private.pem.key --endpoint
your-iot-endpoint
MQTT 및 가 프로토콜을 AWS IoT Core 지원하는 방법에 대한 자세한 내용은 섹션을 참조하세요MQTT.