Amazon で仮想デバイスを作成する EC2 - AWS IoT Core

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon で仮想デバイスを作成する EC2

このチュートリアルでは、クラウドで仮想デバイスとして機能する Amazon EC2インスタンスを作成します。

このチュートリアルを完了するには、 が必要です AWS アカウント。アカウントをお持ちではない場合、続行する前に、セットアップ AWS アカウント に記載されている手順を完了してください。

Amazon EC2インスタンスのセットアップ

次の手順では、物理デバイスの代わりに仮想デバイスとして機能する Amazon EC2インスタンスを作成する方法を示します。

Amazon EC2インスタンスを初めて作成する場合は、「Amazon EC2Linuxインスタンスの使用開始」の手順が役立つ場合があります。

インスタンスを起動するには
  1. で Amazon EC2コンソールを開きますhttps://console.aws.amazon.com/ec2/

  2. 左側のコンソールメニューから [Instances] (インスタンス) セクションを展開し、[Instances] (インスタンス) を選択します。[Instances] (インスタンス) ダッシュボードから、右側の [Launch instances] (インスタンスの起動) を選択すると、基本設定のリストが表示されます。

  3. [Name and tags] (名前とタグ) セクションで、インスタンスの名前を入力し、オプションでタグを追加します。

  4. Application and OS Images (Amazon Machine Image) セクションで、Amazon Linux 2 () などのインスタンスのAMIテンプレートを選択します。 AMI HVMこれは「無料利用枠の対象AMI」とマークされています。

  5. [Instance type] (インスタンスタイプ) セクションで、インスタンスのハードウェア設定を選択できます。デフォルトで選択されている t2.micro タイプを選択します。このインスタンスタイプは無料利用枠の対象であることに注意してください。

  6. [Key pair (login)] (キーペア (ログイン)) セクションでドロップダウンリストからキーペア名を選択するか、[Create a new key pair] (新しいキーペアの作成) を選択して新しいキーペアを作成します。新しいキーペアを作成するときは、プライベートキーファイルをダウンロードして安全な場所に保存してください。これは、ダウンロードして保存する唯一の機会だからです。インスタンスを起動する際はキーペアの名前を指定する必要があり、インスタンスに接続する際は毎回対応するプライベートキーを指定する必要があります。

    警告

    [Proceed without a key pair] (キーペアオプションなしで続行) を選択しないでください。キーペアなしでインスタンスを起動すると、インスタンスに接続できません。

  7. [Network settings] (ネットワーク設定) セクションと [Configure storage] (ストレージの設定) セクションでは、デフォルト設定のままでかまいません。準備ができたら、[Launch Instances] (インスタンスの起動) を選択します。

  8. インスタンスを起動することを知らせる確認ページが表示されます。インスタンスの表示を選択して確認ページを閉じ、コンソールに戻ります。

  9. インスタンス画面で、起動のステータスを確認できます。インスタンスの起動には短時間かかります。インスタンスを起動すると、その初期状態は pending です。インスタンスが起動すると、その状態は に変わりrunning、パブリックDNSネームを受け取ります。(パブリック DNS (IPv4) 列が非表示になっている場合は、ページの右上隅にある列の表示/非表示 (歯車形アイコン) を選択し、パブリック DNS (IPv4) を選択します。)

  10. インスタンスが接続できるようになるまで、インスタンスの準備が整うまでに数分かかる場合があります。インスタンスのステータスチェックが正常に終了したことを確認してください。この情報は [Status Checks] 列で確認できます。

    新しいインスタンスがステータスチェックに合格したら、次の手順に進み、それに接続します。

インスタンスに接続するには

Amazon EC2コンソールからインスタンスを選択し、Amazon EC2 Instance Connect を使用して接続することを選択することで、ブラウザベースのクライアントを使用してインスタンスに接続できます。Instance Connect はアクセス許可を処理し、正常な接続を提供します。

  1. で Amazon EC2コンソールを開きますhttps://console.aws.amazon.com/ec2/

  2. 左のメニューで、[Instances] (インスタンス) を選択します。

  3. インスタンスを選択し、[Connect] を選択します。

  4. Amazon EC2 Instance Connect Connect を選択します。

これで、新しい Amazon インスタンスにログインする Amazon EC2 Instance Connect ウィンドウが表示されるはずですEC2。

Git、Node.js をインストールして、 AWS CLIを設定する

このセクションでは、Git と Node.js を Linux インスタンスにインストールします。

Git をインストールするには
  1. Amazon EC2 Instance Connect ウィンドウで、次のコマンドを使用してインスタンスを更新します。

    sudo yum update -y
  2. Amazon EC2 Instance Connect ウィンドウで、次のコマンドを使用して Git をインストールします。

    sudo yum install git -y
  3. Git がインストールされているかどうか、および Git の現在のバージョンを確認するには、次のコマンドを実行します。

    git --version
Node.js をインストールするには
  1. 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 をインストールします。

  2. Amazon EC2 Instance Connect ウィンドウで、このコマンドを使用して nvm をアクティブ化します。

    . ~/.nvm/nvm.sh
  3. Amazon EC2 Instance Connect ウィンドウで、nvm を使用して、このコマンドを使用して最新バージョンの Node.js をインストールします。

    nvm install 16
    注記

    これにより、Node.js の最新LTSリリースがインストールされます。

    Node.js をインストールすると、Node Package Manager (npm) もインストールされるため、必要に応じて追加のモジュールをインストールできます。

  4. 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 プロファイルを完了する必要があります。の設定方法の詳細についてはCLI、「 の設定 AWS CLI」を参照してください。

  1. 次の例は、サンプル値を示しています。それらを自分の値に置き換えます。これらの値は、AWS コンソールの [My 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
  2. 次のコマンドを使用して 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インスタンスを表します。

  1. Amazon EC2 Instance Connect ウィンドウで、次のコマンドを実行してモノのオブジェクトを作成します。

    aws iot create-thing --thing-name "MyIotThing"
  2. 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 ルート認証局によって署名されたクライアント証明書が作成されます。この証明書は、仮想デバイスの ID を認証するために使用されます。

  1. Amazon EC2 Instance Connect ウィンドウで、証明書とキーファイルを保存するディレクトリを作成します。

    mkdir ~/certs
  2. Amazon EC2 Instance Connect ウィンドウで、このコマンドを使用して Amazon 認証局 (CA) 証明書のコピーをダウンロードします。

    curl -o ~/certs/Amazon-root-CA-1.pem \ https://www.amazontrust.com/repository/AmazonRootCA1.pem
  3. 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" } }
  4. Amazon EC2 Instance Connect ウィンドウで、次のコマンドと を使用して、先ほど作成した証明書にモノのオブジェクトをアタッチします。certificateArn 前のコマンドからのレスポンス。

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

    成功した場合、このコマンドは出力を表示しません。

ポリシーを作成してアタッチするには
  1. Amazon EC2 Instance Connect ウィンドウで、このポリシードキュメントをコピーして という名前のファイルに貼り付けて、ポリシーファイルを作成します~/policy.json

    お気に入りの Linux エディタがなければ、このコマンドを使用して nano を開くことができます。

    nano ~/policy.json

    その中に policy.json のポリシードキュメントを貼り付けます。ctrl-x で nano エディタを終了し、ファイルを保存します。

    policy.json のポリシードキュメントの内容。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Publish", "iot:Subscribe", "iot:Receive", "iot:Connect" ], "Resource": [ "*" ] } ] }
  2. 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" }
  3. Amazon EC2 Instance Connect ウィンドウで、次のコマンドを使用して、仮想デバイスの証明書にポリシーをアタッチします。

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

    成功した場合、このコマンドは出力を表示しません。

の AWS IoT デバイスをインストールする SDK JavaScript

このセクションでは、 AWS IoT Device SDK for をインストールします。これには JavaScript、アプリケーションが AWS IoT およびサンプルプログラムとの通信に使用できるコードが含まれています。詳細については、AWS IoT 「 Device SDK for JavaScript GitHub repository 」を参照してください。

Linux インスタンスに AWS IoT Device SDK for をインストールする JavaScript には
  1. Amazon EC2 Instance Connect ウィンドウで、このコマンドを使用して、 JavaScript リポジトリSDK用の AWS IoT Device をホームディレクトリの aws-iot-device-sdk-js-v2 ディレクトリにクローンします。

    cd ~ git clone https://github.com/aws/aws-iot-device-sdk-js-v2.git
  2. 前のステップで作成した aws-iot-device-sdk-js-v2 ディレクトリに移動します。

    cd aws-iot-device-sdk-js-v2
  3. npm を使用して をインストールしますSDK。

    npm install

サンプルアプリケーションを実行する

次のセクションのコマンドは、次の表に示すように、キーおよび証明書ファイルがご利用の仮想デバイスに保存されていることを前提としています。

証明書ファイル名

ファイル

ファイルパス

プライベートキー

~/certs/private.pem.key

デバイス証明書

~/certs/device.pem.crt

ルート CA 証明書

~/certs/Amazon-root-CA-1.pem

このセクションでは、 AWS IoT Device SDK for の aws-iot-device-sdk-js-v2/samples/node ディレクトリにあるpub-sub.jsサンプルアプリケーションをインストールして実行します JavaScript。このアプリは、デバイスである Amazon EC2インスタンスがMQTTライブラリを使用してMQTTメッセージを発行およびサブスクライブする方法を示しています。pub-sub.js サンプルアプリケーションは、トピック、topic_1 をサブスクライブし、そのトピックに対して 10 個のメッセージを発行し、メッセージブローカーから受信したメッセージを表示します。

サンプルアプリケーションをインストールして実行するには
  1. 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
  2. Amazon EC2 Instance Connect ウィンドウで、your-iot-endpoint このコマンドを使用して、 から AWS IoT を実行します。

    aws iot describe-endpoint --endpoint-type iot:Data-ATS
  3. 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

サンプルアプリケーション:

  1. AWS IoT Core アカウントの に接続します。

  2. メッセージトピック topic_1 をサブスクライブし、そのトピックで受信したメッセージを表示します。

  3. 10 個のメッセージをトピック、topic_1 に発行します。

  4. 次のような出力を表示します。

    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メッセージを表示するには
  1. 確認クライアントでMQTT AWS IoT MQTTメッセージを表示する。これにより、AWS IoT コンソールMQTTテストクライアントを使用して、MQTTメッセージブローカーを通過するメッセージを表示する方法を学ぶことができます。

  2. AWS IoT コンソールMQTTテストクライアントを開きます。

  3. トピックへのサブスクライブ」で、「topic_1」というトピックをサブスクライブします。

  4. 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