Python
AzureのPython SDKでActivity Logを取得する方法を調べました。 使うモジュールについて そもそもどのモジュールで取得するのかわからなかったのですが、以下のIssueにヒントがありました。 Is it possible to extract Activity Logs for a subscription as …
課題 対象となるファイル 利用するライブラリ 課題詳細 調査 対応 参考資料 読み込み処理 使い方 課題 気象庁から取得したGRIB2ファイルをPythonで解析しようとしています。 対象となるファイル www.data.jma.go.jp GSM 全球数値予報モデルGPV MSM メソ数値…
コード Lambda関数 (handler.py) 設定ファイル(.env) Serverless Framework定義(serverless.yml) ポイント LambdaのEFSマウント設定 LambdaのDependsOn設定 LambdaのUID/GID 実行してみる 実行 結果確認 Lambdaで発生するこちらのエラー。 /tmp 領域を…
世の中はEV普及に向けて進んでいますが、EVが普及するためには必須事項として充電環境があります。充電器を管理するオープンなプロトコルのOCPP(Open Charge Point Protocol)を触る機会があり記事を書きます。 OCPPとは OCPPを触りたい Charge Point側開発…
仕事の中でECHONET Lite(エコーネットライト)というプロトコルを知ったのですが、このプロトコルで部屋にあるSharp製のエアコン(型番 AY-H22S-W ) を操作できそうなので使ってみました。 ECHONET Liteとは 部屋のエアコンが対応しているか調べてみた 調べ…
こちらの記事で作成したModbus通信の温湿度計を、AWS IoT GreenGrass経由で操作してみました。 yomon.hatenablog.com 概要 Lambda作成 GreenGrass設定 Lambda設定 サブスクリプション設定 デプロイ 動かしてみる プロトコルアダプター 概要 やりたいことの概…
はじめに Modbus(モドバス)って? PCのUSBから繋いでみる GPIOから繋いでみる Raspberry PIでUART通信の準備 MAX485購入(UART -> RS485変換) 配線 Pythonで通信してみる 参考URL はじめに 仕事でModbusを勉強する必要が出てきたので、試しに何か動かそうと…
AWSを運用しているCloudWatch Logsを分析することが良くあると思います。 数年前はCloudWatch Logsのファイルをダウンロードしてきて、分析していて面倒でしたが、 CloudWatch Logs Insights が出てきてそれもかなり楽になりました。 それでも毎回調べながら…
Cognitoの認証により発行されるA JSON Web Token (JWT) に対して、Pythonで検証処理を自前実装する方法を記載します。 JWT検証に利用するライブラリ Amazon CognitoのJWTの検証方法 サンプルコード 補足 Cognitoの設定 補足 jwt.decode()について JWT検証に…
Key Vaultに保存した情報をAKS上のPodから取得するような要件は良くあると思います。でもKey Vaultへの認証をどうしたものかと思っていました。Service Principal使えば良いのですが、AKSでもMSIを使えたら良いなと思い調べていたところ、以下の情報がドキュ…
ERPというか、ABAPインスタンスのデータをPandasに取り込む方法です。 実は昔、以下の記事で、Pythonからの接続については書いたのですが、その時から時間経ったのでPythonからの接続と、Pandasにデータ読み込むところまで進めてみました。 PythonからSAP処…
追記 今は INFORMATION_SCHEMA を使うことで同じ情報が簡単に取得できます。 SELECT * FROM `region-asia-northeast1`.INFORMATION_SCHEMA.JOBS_TIMELINE_BY_PROJECT cloud.google.com クエリの履歴情報等を取得したい時はBigQueryのジョブ履歴から情報拾え…
Cloud Composerからのメール送信はSendGridを使うのが簡単です。 以下の通り、Googleからも簡単な手順も用意されていますが、画面付きで手順書いてみます。 https://cloud.google.com/composer/docs/how-to/managing/creating?hl=ja#notification SendGrid登…
Google ColabでGCP使うには GCPの認証 PyPiモジュールのインストール PubSub側準備 左のブラウザ(Publish側) 右のブラウザ(BeamでSubscribe側) Cloud Dataflowで実行 後片付け PubSub削除 Cloud Dataflowのジョブ停止 最後に やりたいことのGIF動画です。…
時々見るエラーですが、大きなテーブルを読み込むETL処理で出た時などは、だいぶ辛い気分になります。 UnicodeEncodeError: 'utf-8' codec can't encode characters in position 0-1: surrogates not allowed SQLで該当を探す SparkやBeamを使って大規模デー…
最初はシンプルな差分同期方法の実装を書こうと思ったのですが、どうしても固有要件が入ってしまうので同期処理のヒント実装を書くことにしました。 手元で試せるように、Beam以外の部分はダミー関数としています。データソース取ってくるところと、データ書…
年始早々、Dataflowのエラーでかなりハマりました。 エラー自体は些細なことだったのですが、全然原因わからずに1日中悩んでしましました。 備忘も兼ねて、対応メモ書いておきます。 エラーの事象と対応 事象 開発中のジョブで、データ量的に数分で終わる、…
この記事の続きです。 yomon.hatenablog.com 以下にもある通り、今書いている時点ではApache BeamのPython SDKはビルトインでJDBC対応していません。 beam.apache.org PythonでJDBCドライバ使いたかったのはDataflowのPython SDK使ってもJDBC接続使いたかっ…
利用するモジュール SQL Server用のJDBC Driverダウンロード Pythonコード 既知のエラー 関連 利用するモジュール JDBCを使うためにこちらのモジュールを利用します。 github.com $ pip install JayDeBeApi SQL Server用のJDBC Driverダウンロード SQL Serve…
Cloud Dataflow + Python で作るテンプレートを登録する際に、pipでインストール可能なPyPiなどの外部パッケージをどうやって組み込むか調べました。 requirements.txtでpypi等の外部パッケージ使う方法 設定例 テンプレート作成 setup.pyでローカルパッケー…
Cloud Composer(Airflow)からDataflowTemplateOperatorの使い方がわからなかったので調べました。 Dataflowテンプレート登録 コード作成 コンパイル+アップロード Cloud ComposerのDAG作成 DAG定義スクリプト作成 AirflowのVariables設定 DAGファイルのイン…
タイトルの通りです。PandasのDataframeをpyarrowでParquetに変換して、そのままGCSにアップロードしています。 スクリプト こんな形で実行可能です。ファイルを経由しないでBufferから、そのままアップロードしています。 import pandas as pd import pyarr…
タイトルの通り、Pandas使ったちょっとしたテストで「それなりに」大きなDataframeを作りたい場合の例です。 import pandas as pd import numpy as np import datetime row_num = 10000000 string_values = ['Python', 'Ruby', 'Java', 'JavaScript', 'PHP',…
Azure Table StorageのデータをCloud Dataflow (Apache Beam)から扱ってみたのでメモ。 対象のAzure Table Storage 対象としたTable Storageの中身です。mytable という名前にしました。このデータをDataflowを使ってBigQueryに挿入してみます。 準備 デー…
BeeX Advent Calendar 2019の12/6の記事です。空いてたので滑り込みです。 Azure Table Storageですが、対応しているツールも少なく、なかなか扱いずらいので、Pandasに読み込んで、Parquet形式に変更する方法を調べました。 対象 対象としたTable Storageの…
AirflowにはAzureのパッケージが存在しています。 pip install 'apache-airflow[azure]' その辺りを使って、Azure Blob Storageへオブジェクトがアップロードしたことを検知して、ワークフローを流したいと思いました。 モジュールとしては以下のモジュール…
Google Cloud FunctionsをServerless Frameworkでデプロイできる環境を作りたい場合、以下の公式ドキュメントに手法が載っています。 Serverless - Google Cloud Functions Documentation ただ、特に権限周りでGUIでの操作が面倒なので、CLI操作に変換して書…
Amazon Elasticsearch Service (AES) で手動スナップショット取得の仕組みをCloudformationで一気にデプロイします。かつCurator使って古いスナップショットは自動的に削除する設定になっています。スナップショット取るだけで意外に大変です。 Pythonスクリ…
イントラネット環境からのみアクセス可能なPyPI( The Python Package Index)を作りたい場合。 Dockerとpypiserverを利用すれば、簡単にプライベートなPyPIが作れます。 github.com プライベートのPyPIを構築 プライベートPyPIにパッケージを登録してみる プ…
Curatorは通常、YAML形式の定義ファイルを使ってコマンドラインから操作することが多いと思いますが、PythonからAPIを経由で操作することも可能です。 基本的な操作のざっくりコードですが例を書きます。 準備 Elasticsearchクライアントの生成 CuratorのImp…