SORACOMのIoTボタンをAmazon S3に繋いでみる

AWS

IoT ボタンの情報をS3に保存したかったのでやってみました。

基本的には参考サイトに記載したSORACOMさんのサイト通りです。ただし、参考サイトでは「Amazon SNS」に連携しているため、今回はIoT CoreのルールでS3に保存、保存するために実施した内容をメモしています。

はじめに

本記事の設定は、セキュリティ的に脆弱な可能性があります。本番環境では、IAMロールの最小権限の原則に従い、必要な権限のみを付与してください。また、S3バケットのアクセス制御を適切に設定し、不正アクセスを防ぐようにしてください。

参考サイト

SORACOM LTE-M Button と各種クラウドサービスを連携する | IoT デザインパターン | ソラコムユーザーサイト - SORACOM Users
IoT に関わるアイディアを実現するために、ソラコムが提供するデバイスやサービスの基本的な利用方法を説明するサイトです。開発者向けの API リファレンスや SORACOM CLI などを利用できます。

AWS IoT Coreの準備

AWS IoT Coreのページ、左ペインにある「ドメイン」ページを表示し、「ドメイン設定を作成」を選択します。

以下設定を行います。

  • [ドメイン設定名]: soracomIoT(任意の名称)
  • [セキュリティポリシーを選択]: IoTSecurityPolicy_TLS13_1_2_2022_10
  • [認証タイプ]: デフォルト
  • [カスタムオーソライザー]: カスタムオーソライザーなし
  • [ドメイン設定のステータス]: 有効にする

ルールを作成します。左ペインの「メッセージのルーティング」から「ルール」、「ルール作成」を選択

  • [ルール名]: transferS3(任意の名称)
  • [SQLのバージョン]: 2016-03-23
  • [SQL ステートメント]:

すべてのトピックからデータを受信する場合

SELECT * FROM 'button_topic/#'

指定したフィールドのみを取得場合

SELECT
    credentialsId,
    operatorId,
    destination,
    sourceProtocol,
    payloads.clickType,
    payloads.clickTypeName,
    payloads.batteryLevel,
    payloads.binaryParserEnabled,
    timestamp,
    imsi,
    imei,
    locationQueryResult,
    location
FROM
    'button_topic/#'
  • [アクション1]: S3 Bucket
  • [Bucket名]: 任意のS3バケットを選択
  • [キー]: IoT-Core/soracom-iot-button/${parse_time(‘yyyyMMddHHmmss’, timestamp(), ‘Asia/Tokyo’)}.json
S3バケットのキー設定では、parse_time関数を利用して、UTCで保存されるタイムスタンプを日本時間に変換しています。
  • [既定ACL]: private
  • [IAMロール]: 任意(今回はIoTCorePwerRoleというロールを作成)

SORACOM用のIAMポリシーとロールを作成

参考サイトの内容通りです。

SORACOM Funnelの設定

参考サイトの通りです。

結果

指定したS3バケットに保存されています。

ファイルの内容も意図した内容になっています。

コメント

タイトルとURLをコピーしました