2단계: AWS IoT에서 Raspberry Pi 프로비저닝 - AWS IoT Core

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

2단계: AWS IoT에서 Raspberry Pi 프로비저닝

이 섹션의 절차는 AWS CLI 및 AWS IoT Device Client가 설치된 저장된 microSD 이미지로 시작하고 AWS IoT에서 Raspberry Pi를 프로비저닝하는 AWS IoT 리소스 및 디바이스 인증서를 생성합니다.

Raspberry Pi에 microSD 카드를 설치합니다.

이 절차에서는 필요한 소프트웨어를 Raspberry Pi에 로드하고 구성한 microSD 카드를 설치하고 이 학습 경로의 튜토리얼을 계속할 수 있도록 AWS 계정을 구성합니다.

이 학습 경로의 연습 및 튜토리얼에 필요한 소프트웨어가 있는 (선택 사항) microSD 카드 이미지 저장의 microSD 카드를 사용합니다.

Raspberry Pi에 microSD 카드를 설치하려면
  1. Raspberry Pi의 전원을 분리한 상태에서 microSD 카드를 Raspberry Pi에 삽입합니다.

  2. Raspberry Pi에 전원을 공급합니다.

  3. 약 1분 후 로컬 호스트 컴퓨터에서 터미널 창 세션을 다시 시작하고 Raspberry Pi에 로그인합니다.

  4. 로컬 호스트 컴퓨터의 터미널 창에서 Raspberry Pi의 액세스 키 ID(Access Key ID)비밀 액세스 키(Secret Access Key) 자격 증명을 사용하여

    1. 이 명령으로 AWS 구성 앱을 실행합니다.

      aws configure
    2. 메시지가 표시되면 AWS 계정 자격 증명 및 구성 정보를 입력합니다.

      AWS Access Key ID [****************YXYX]: your Access Key ID AWS Secret Access Key [****************YXYX]: your Secret Access Key Default region name [us-west-2]: your AWS 리전 code Default output format [json]: json

AWS 계정 자격 증명을 복원했으면 AWS IoT Core에서 디바이스 프로비저닝으로 진행할 준비가 된 것입니다.

AWS IoT Core에서 디바이스 프로비저닝

이 섹션의 절차는 AWS IoT에서 Raspberry Pi를 프로비저닝하는 AWS IoT 리소스를 생성합니다. 이러한 리소스를 생성할 때 다양한 정보를 기록하라는 메시지가 나타납니다. 이 정보는 다음 절차에서 AWS IoT Device Client 구성에 사용됩니다.

Raspberry Pi가 AWS IoT와 함께 작동하려면 프로비저닝되어야 합니다. 프로비저닝은 Raspberry Pi를 IoT 디바이스로 지원하는 데 필요한 AWS IoT 리소스를 생성하고 구성하는 프로세스입니다.

Raspberry Pi의 전원을 켜고 다시 시작한 상태에서 로컬 호스트 컴퓨터의 터미널 창을 Raspberry Pi에 연결하고 이 절차를 완료합니다.

디바이스 인증서 파일 생성 및 다운로드

이 절차는 이 데모에 대한 디바이스 인증서 파일을 생성합니다.

Raspberry Pi에 대한 디바이스 인증서 파일을 생성하고 다운로드하려면
  1. 로컬 호스트 컴퓨터의 터미널 창에서 이 명령을 입력하여 디바이스에 대한 디바이스 인증서 파일을 생성합니다.

    mkdir ~/certs/testconn aws iot create-keys-and-certificate \ --set-as-active \ --certificate-pem-outfile "~/certs/testconn/device.pem.crt" \ --public-key-outfile "~/certs/testconn/public.pem.key" \ --private-key-outfile "~/certs/testconn/private.pem.key"

    이 명령은 다음과 같은 응답을 반환합니다. 나중에 사용하기 위해 certificateArn 값을 적어 둡니다.

    { "certificateArn": "arn:aws:iot:us-west-2:57EXAMPLE833:cert/76e7e4edb3e52f52334be2f387a06145b2aa4c7fcd810f3aea2d92abc227d269", "certificateId": "76e7e4edb3e52f5233EXAMPLE7a06145b2aa4c7fcd810f3aea2d92abc227d269", "certificatePem": "-----BEGIN CERTIFICATE-----\nMIIDWTCCAkGgAwIBAgI_SHORTENED_FOR_EXAMPLE_Lgn4jfgtS\n-----END CERTIFICATE-----\n", "keyPair": { "PublicKey": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BA_SHORTENED_FOR_EXAMPLE_ImwIDAQAB\n-----END PUBLIC KEY-----\n", "PrivateKey": "-----BEGIN RSA PRIVATE KEY-----\nMIIEowIBAAKCAQE_SHORTENED_FOR_EXAMPLE_T9RoDiukY\n-----END RSA PRIVATE KEY-----\n" } }
  2. 이 명령을 입력하여 인증서 디렉터리와 해당 파일에 대한 권한을 설정합니다.

    chmod 745 ~ chmod 700 ~/certs/testconn chmod 644 ~/certs/testconn/* chmod 600 ~/certs/testconn/private.pem.key
  3. 이 명령을 실행하여 인증서 디렉터리 및 파일에 대한 권한을 검토합니다.

    ls -l ~/certs/testconn

    명령의 출력은 파일 날짜와 시간이 다르다는 점을 제외하고 여기에 표시되는 것과 같아야 합니다.

    -rw-r--r-- 1 pi pi 1220 Oct 28 13:02 device.pem.crt -rw------- 1 pi pi 1675 Oct 28 13:02 private.pem.key -rw-r--r-- 1 pi pi 451 Oct 28 13:02 public.pem.key

이 시점에서 Raspberry Pi에 디바이스 인증서 파일이 설치되어 있고 AWS IoT 리소스 만들기을 계속할 수 있습니다.

AWS IoT 리소스 만들기

이 절차는 디바이스가 AWS IoT 기능 및 서비스에 액세스하는 데 필요한 리소스를 생성하여 AWS IoT에서 디바이스를 프로비저닝합니다.

AWS IoT에서 디바이스를 프로비저닝하려면
  1. 로컬 호스트 컴퓨터의 터미널 창에서 이 명령을 입력하여 AWS 계정의 디바이스 데이터 엔드포인트 주소를 가져옵니다.

    aws iot describe-endpoint --endpoint-type IoT:Data-ATS

    이전 단계의 명령에서 다음과 같은 응답이 반환됩니다. 나중에 사용하기 위해 endpointAddress 값을 적어 둡니다.

    { "endpointAddress": "a3qjEXAMPLEffp-ats.iot.us-west-2.amazonaws.com" }
  2. 이 명령을 입력하여 Raspberry Pi용 AWS IoT 사물 리소스를 생성합니다.

    aws iot create-thing --thing-name "DevCliTestThing"

    AWS IoT 사물 리소스가 생성된 경우 명령은 다음과 같은 응답을 반환합니다.

    { "thingName": "DevCliTestThing", "thingArn": "arn:aws:iot:us-west-2:57EXAMPLE833:thing/DevCliTestThing", "thingId": "8ea78707-32c3-4f8a-9232-14bEXAMPLEfd" }
  3. 터미널 창에서

    1. nano 등의 텍스트 편집기를 엽니다.

    2. 이 JSON 정책 문서를 복사하여 열려 있는 텍스트 편집기에 붙여 넣습니다.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Publish", "iot:Subscribe", "iot:Receive", "iot:Connect" ], "Resource": [ "*" ] } ] }
      참고

      이 정책 문서는 모든 리소스에 연결, 수신, 게시 및 구독을 위한 권한을 충분히 부여합니다. 일반적으로 정책은 특정 리소스에만 특정 작업을 수행할 수 있는 권한만 부여합니다. 그러나 초기 디바이스 연결 테스트의 경우 이 테스트 중 액세스 문제 발생 가능성을 최소화하기 위해 이 지나치게 일반적이고 허용적인 정책이 사용됩니다. 후속 튜토리얼에서는 정책 설계의 더 나은 사례를 보여주기 위해 보다 좁은 범위의 정책 문서를 사용할 것입니다.

    3. 텍스트 편집기에서 파일을 ~/policies/dev_cli_test_thing_policy.json으로 저장합니다.

  4. 이 명령을 실행하여 이전 단계의 정책 문서로 AWS IoT 정책을 생성합니다.

    aws iot create-policy \ --policy-name "DevCliTestThingPolicy" \ --policy-document "file://~/policies/dev_cli_test_thing_policy.json"

    정책이 생성되면 명령에서 다음과 같은 응답을 반환합니다.

    { "policyName": "DevCliTestThingPolicy", "policyArn": "arn:aws:iot:us-west-2:57EXAMPLE833:policy/DevCliTestThingPolicy", "policyDocument": "{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Effect\": \"Allow\",\n \"Action\": [\n \"iot:Publish\",\n \"iot:Subscribe\",\n \"iot:Receive\",\n \"iot:Connect\"\n ],\n \"Resource\": [\n \"*\"\n ]\n }\n ]\n}\n", "policyVersionId": "1" }
  5. 이 명령을 실행하여 디바이스 인증서에 정책을 연결합니다. certificateArn을 이전에 저장한 certificateArn 값으로 바꿉니다.

    aws iot attach-policy \ --policy-name "DevCliTestThingPolicy" \ --target "certificateArn"

    성공한 경우 이 명령은 아무 것도 반환하지 않습니다.

  6. 이 명령을 실행하여 AWS IoT 사물 리소스에 디바이스 인증서를 연결합니다. certificateArn을 이전에 저장한 certificateArn 값으로 바꿉니다.

    aws iot attach-thing-principal \ --thing-name "DevCliTestThing" \ --principal "certificateArn"

    성공한 경우 이 명령은 아무 것도 반환하지 않습니다.

AWS IoT에서 디바이스를 성공적으로 프로비저닝했으면 3단계: 연결을 테스트하도록 AWS IoT Device Client 구성으로 진행할 준비가 된 것입니다.