AWS IoTにクライアント機器から画像(バイナリデータ)を送信する

AWS IoTにクライアント機器から画像(バイナリデータ)を送信する

クライアント機器から画像などのバイナリデータを送信してS3にPUTしたい、ということはよくあると思います。

が、現状ではクライアント機器から画像をそのままAWS IoTに送信することはできません。(私調べ、、)

ということで一旦、クライアント機器側でBase64変換したデータをAWS IoTにパブリッシュし、LambdaでデコードしてS3にプットしてみます。

Base64変換してくれるサイト

モジュールはfs-extra,urlsafe-base64を使用します。

npm install fs-extra urlsafe-base64

index.jsです。

const aws = require("aws-sdk");
const fs = require('fs');
const base64 = require('urlsafe-base64');
const s3 = new aws.S3({'region':'ap-northeast-1'});

exports.handler = (event, context, callback) => {
  const dt = 'data:image/png;base64,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'.split( ',' );
  const b64img = dt[1];
  const img = base64.decode(b64img);
  const path = '/tmp/' + (new Date()).getTime() + '.jpg';

  fs.writeFileSync(path, img);

  const config = {
    Bucket: "my-test-cc",
    Key: "sample.jpg",
    Body: fs.readFileSync(path)
  };
  s3.putObject(config, function(err, data) {
    if (err) {
      console.log(err);
      context.fail('upload failed.');
    }
    context.succeed('upload success.');
  });
};

AWS IoTからアクションでLambdaが呼べるので、そのルールを作っておいてAWS IoTにパブリッシュされたら上記のLambdaを実行するように設定しておきます。

これで指定したバケットに画像ファイルが作成されます。

コメント

株式会社CONFRAGE ITソリューション事業部をもっと見る

今すぐ購読し、続きを読んで、すべてのアーカイブにアクセスしましょう。

続きを読む

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