OpenAPI を使用してカスタムトピック経由でデバイスにメッセージを発行する完全な例です。
OpenAPI ドキュメントの確認
API リストで Pub API を確認します。この API は、カスタムトピック経由でデバイスにメッセージを発行します。ドキュメントを確認して、必要なデータと権限について理解してください。
RAM ユーザーの作成と権限付与
アイデンティティ
この API は、Alibaba Cloud アカウント、Resource Access Management (RAM) ユーザー、または RAM ロールを使用して呼び出すことができます。これらのアイデンティティの違いについて詳しくは、「アイデンティティ、認証情報、および権限付与」をご参照ください。この例では、RAM ユーザー を使用します。
詳細については、「RAM ユーザーの作成」をご参照ください。Resource Access Management (RAM) コンソールにログインし、API 呼び出し専用 の RAM ユーザーを作成して、AccessKey ペアを保存します。
権限付与
-
RAM ユーザーリストページに移動します。対象の RAM ユーザーの [操作] 列で、[権限を追加] をクリックします。
-
[ポリシーの選択] セクションで、検索ボックスにキーワード
IoTを入力し、[AliyunIOTFullAccess] ポリシーを選択します。説明-
IoT Platform のシステムポリシーは次のとおりです。
-
[AliyunIOTFullAccess]:IoT Platform に対する完全な管理権限を付与します。
-
[AliyunIOTReadOnlyAccess]:IoT Platform に対する読み取り専用アクセス権限を付与します。
-
-
カスタムポリシーの作成について詳しくは、「カスタムポリシー」をご参照ください。
-
-
[OK] をクリックして、承認を完了します。
認証情報
RAM ユーザーを作成すると、デフォルトで AccessKey ペアが生成されます。
または、RAM ユーザーの詳細ページに移動し、[認証管理] タブで [AccessKey の作成] をクリックします。詳細については、「AccessKey の作成」をご参照ください。
OpenAPI の呼び出し
次の例では、Python を使用して Pub API を呼び出します。
Python 環境の準備
-
システムに Python 3 がインストールされているかどうかを確認します。
Linux および macOS システム
ターミナルを開き、
python3 --versionコマンドを実行します。システムが Python のバージョン番号を返す場合、Python 3 はインストールされています。それ以外の場合は、次のステップに進んで Python 3 をインストールします。
Windows システム
Python のインストールパスで、python.exe をダブルクリックして [コマンドプロンプト] ウィンドウを開きます。 または、[Win]+[R] キーボードショートカットを使用して [ファイル名を指定して実行] ダイアログボックスを開き、[python] と入力して [OK] をクリックすることもできます。
システムから次のような応答が返され、Python インタラクティブ環境に入った場合、Python がインストールされています。
Python 3.9.6 (tags/v3.9.6:db3ff76, Jun 28 2021, 15:26:21) [MSC v.1929 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> -
Python をダウンロードしてインストールします。
Python 3 をダウンロードするには、「Python 3」をご参照ください。
Linux
-
Python パッケージをダウンロードします。
wget https://www.python.org/ftp/python/3.9.6/Python-3.9.6.tgz -
Python パッケージを解凍します。
tar -zxvf Python-3.9.6.tgz -
解凍したフォルダーに移動し、インストールパスを指定します。
cd Python-3.9.6 sudo ./configure --prefix=/usr/bin/python3 -
Python をコンパイルしてインストールします。
make make install -
Python 3 の環境変数を設定します。
たとえば、Ubuntu Linux システムでは、次のコマンドを実行できます。
-
.bashrcファイルを開き、ファイルの最後に次の内容を追加します。nano ~/.bashrc -
ファイルの最後に次の内容を追加し、ファイルを保存して閉じます。
export PATH=$PATH:/usr/bin/python3 -
次のコマンドを実行して、環境変数を更新します。
source ~/.bashrc -
次のコマンドを実行して環境変数を確認し、Python 3 のインストールパスが含まれていることを確認します。
echo $PATH
-
macOS
このシステムには Python 2.7 がプリインストールされています。最新バージョンの Python 3.x をダウンロードしてインストールしてください。
-
インストールパッケージをダウンロードした後、ダブルクリックして Python インストールウィザードを開きます。
-
[続行] をクリックし、指示に従って設定とインストールを行ってください。
-
Python 3 のインストールパスに基づいて環境変数を設定します。
Windows
-
ダウンロードが完了したら、パッケージをダブルクリックして Python インストールウィザードを開きます。デフォルト設定を使用し、[PATH に Python 3.9 を追加] を選択します。
-
[Install Now] をクリックして、インストールを開始します。
-
インストールが完了したら、[閉じる]をクリックしてインストールウィンドウを閉じます。
-
-
ステップ 1 を繰り返して、Python 3 のバージョンを確認します。正しいバージョン番号が表示される場合、インストールは成功です。
環境変数の設定
AccessKey ペアをコードにハードコーディングすることを避けるため、認証情報を環境変数に保存します。
-
Linux および macOS システム
次のコマンドの
<access_key_id>と<access_key_secret>を、実際の AccessKey ID と AccessKey シークレットに置き換えてから、ターミナルでコマンドを実行します。export ALIBABA_CLOUD_ACCESS_KEY_ID=<access_key_id> export ALIBABA_CLOUD_ACCESS_KEY_SECRET=<access_key_secret> -
Windows システム
ALIBABA_CLOUD_ACCESS_KEY_IDおよびALIBABA_CLOUD_ACCESS_KEY_SECRET環境変数を作成し、それぞれの値を AccessKey ID と AccessKey シークレットに設定した後、Windows システムを再起動します。
依存関係のインストール
pip3 install alibabacloud_tea_openapi
pip3 install alibabacloud_iot20180120
pip3 install alibabacloud-tea-console
サンプルコードのダウンロード
-
[IotInstanceId]、[ProductKey]、[TopicFullName]、および [MessageContent] リクエストパラメーターの値を入力します。その他のパラメーターは空のままでかまいません。
-
[リクエストを送信] をクリックします。
-
[呼び出し結果] タブで、[呼び出し成功] メッセージが表示されたら、[SDK サンプル] タブをクリックし、次に [Python] タブをクリックします。
-
サンプルコードパッケージをダウンロードするには、[プロジェクト全体をダウンロード] をクリックします。
-
ローカルマシンでサンプルコードパッケージを解凍し、[alibabacloud_sample] フォルダーに移動します。
コードの実行
次のコマンドを実行します。
python sample.py
出力は次のとおりです。
{
"headers": {
"date": "Thu, 10 Aug 2023 09:26:52 GMT",
"content-type": "application/json;charset=utf-8",
"content-length": "99",
"connection": "keep-alive",
"keep-alive": "timeout=25",
"access-control-allow-origin": "*",
"access-control-expose-headers": "*",
"x-acs-request-id": "1296FD43-4BD3-5F80-AB2C-1ADF99B02253",
"x-acs-trace-id": "aee72e4c5e***************77fc9d",
"etag": "9umD************cjYJ8og9"
},
"statusCode": 200,
"body": {
"MessageId": 1689000000000004736,
"RequestId": "1296FD43-4BD3-5F80-AB2C-1ADF99B02253",
"Success": true
}
}