SORACOM APIを使って、SORACOM Funnelを更新する
SORACOMには、開発者向けにAPIが提供されています。
本記事では、このAPIを使って、SIMグループにあるSORACOM Funnelの設定を更新してみました。
おすすめの方
- SORACOM APIを使いたい方
SORACOM APIを使う準備
- SAMユーザの作成
- SAMユーザのアクセス権限を付与
- SAMユーザの「認証キーID&認証キーシークレット」を取得
上記については、次のブログを参考に行います。
なお、今回のアクセス権限は下記となります。
{ "statements": [ { "api": [ "Group:putConfigurationParameters" ], "effect": "allow" } ] }
APIでSORACOM Funnelを更新する
適当なSIMグループを用意する
実験用に新しくSIMグループを用意しました。
このSIMグループには、SORACOM Funnelの設定はありません(未設定)。
利用するAPI
次のAPIを利用します。
- PUT /groups/{group_id}/configuration/{namespace}
Pythonスクリプト
次のスクリプトを使います。内容的には、SORACOM APIを使うためのAPIキーを取得して、SIMグループの設定更新APIにアクセスしています。
- APIトークンの有効期限はデフォルト設定です。
- レートリミットの考慮をしていません。
import json import requests from typing import Tuple SORACOM_ENDPOINT = 'https://api.soracom.io/v1' SORACOM_KEY_ID = 'keyId-aaa' SORACOM_SECRET = 'secret-bbb' SORACOM_SIM_GROUP_ID = '3afa5669-c691-4b7f-8ada-4d53a5834ed7' SORACOM_CREDENTIALS_ID = 'foobar-20220722' def main(): api_key, token = get_token() put_group_configuration(api_key, token) def get_token() -> Tuple[str, str]: headers = {'Content-Type': 'application/json'} data = { 'authKeyId': SORACOM_KEY_ID, 'authKey': SORACOM_SECRET, } resp = requests.post(f'{SORACOM_ENDPOINT}/auth', headers=headers, data=json.dumps(data)) d = resp.json() return d['apiKey'], d['token'] def put_group_configuration(api_key: str, token: str) -> None: headers = { 'Content-Type': 'application/json', 'X-Soracom-API-Key': api_key, 'X-Soracom-Token': token, } data = [ { 'key': 'destination', 'value': { 'provider': 'aws', 'service': 'aws-iot', 'resourceUrl': 'xxx-ats.iot.ap-northeast-1.amazonaws.com/soracom/#{imsi}', }, }, { 'key': 'credentialsId', 'value': 'foobar-20220727', }, { 'key': 'contentType', 'value': 'json', }, { 'key': 'enabled', 'value': True, }, ] resp = requests.put( f'{SORACOM_ENDPOINT}/groups/{SORACOM_SIM_GROUP_ID}/configuration/SoracomFunnel', headers=headers, data=json.dumps(data) ) print(resp) print(resp.content) if __name__ == '__main__': main()
スクリプトを実行する
python app.py
SORACOM Funnelが設定されていることを確認する
SORACOMのWebコンソールにアクセスして、SORACOM Funnelが設定されていることを確認します。
バッチリですね。
ついでに、AWS認証情報だけ更新してみる
更新する情報をAWS認証情報だけにして、更新してみます。
data = [ { 'key': 'credentialsId', 'value': 'foobar-20220727', }, ]
結果として、AWS認証情報だけが更新できました!
さいごに
SORACOM APIで認証情報(AWSアクセスキー)を作成できました。 これによって、AWSアクセスキーのローテーション自動化ができそうです。