DataflowのRunnber Version2でRuntimeValueProviderErrorが発生したのでGCPのサポートに問い合わせてみた

GCPのサポート使ったので、そのメモです。 短期的にはDataflowのRunnerのVersion 2のバグ(というか実装漏れ?)だったので同じ問題で悩んでいる方もググって辿り着けるように残しておきます。 使っているのは$100の開発環境のサポートプランなので、プラン…

Amazon InspectorでProxy環境内のAmazon EKSのマネージドノードグループを検査する

こちらに続きEKSをProxy環境内で利用する方法です。 yomon.hatenablog.com ネットワーク Inspector AgentにProxy設定 EKSのマネージドノードに設定追加 起動テンプレートのUserDataでProxyを設定 Cloudformation化 Inspectorを実行してみる ネットワーク eks…

Amazon EKSでProxy環境内の マネージドノードグループから外部イメージを利用する

最初に、この記事にたどり着くような要件の場合は、高いセキュリティが必要な環境だと思っています。その場合はインターネット上のレジストリにあるイメージを使うことは本来推奨できるものでは無いと思います。この手順もかなり限定的な用途での利用となる…

GCP Dataflowでapt installが上手くいかない場合のトラブルシュート方法

GCPのCloud DataflowでのOS系のエラーが出た場合の調査方法の例です。 事象 調査 エラー内容 Dockerイメージを特定する Dockerイメージを起動してみる 修正 まとめ 事象 yomon.hatenablog.com こちらの記事で書いたようにJDBCを使ったジョブの、Apache Beam…

AWS GreengrassのLocal Shadowを利用してLambdaの設定値の変更・永続化をする

Raspberry PiのGatewayにGreengrassを入れて使っていますが、機器からの値を取得する周期や、パラメータ等、Gateway側のLambdaから利用するパラメータを永続値として持っておきたいと思いました。 その上、その値はAWS IoT側を通して変更したい。 ということ…

Raspberry Piのy2038(2038年問題)を確認してみたメモ

サーバーサイドでは、見ることほとんど無くなった32bit Linux。 ただ、最近使うこと多くなっているRaspberry PiのOSである、Raspberry Pi OS(旧 Raspbian)は32bit Linuxです。 もし、Raspberry Piを配置して今後18年動き続ければ、2038年問題引っかかります…

ECHONET Lite対応の部屋のエアコンをPython3から操作してみた

仕事の中でECHONET Lite(エコーネットライト)というプロトコルを知ったのですが、このプロトコルで部屋にあるSharp製のエアコン(型番 AY-H22S-W ) を操作できそうなので使ってみました。 ECHONET Liteとは 部屋のエアコンが対応しているか調べてみた 調べ…

AnsibleでAWS IoT Greengrass CoreをRaspberry Pi上にインストールする

RaspbianにAWS IoT Greengrass Coreをインストールする手順をAnsible化しました。 処理の元ネタ 前提 リポジトリの取得 変数の設定 Ansible実行 github.com 処理の元ネタ Qiita側に書いたこの記事の内容です。 qiita.com 前提 piユーザにSSHでパスワード認証…

AWS IoT GreengrassでRaspberry Piに接続されたModbusのデータを取得

こちらの記事で作成したModbus通信の温湿度計を、AWS IoT GreenGrass経由で操作してみました。 yomon.hatenablog.com 概要 Lambda作成 GreenGrass設定 Lambda設定 サブスクリプション設定 デプロイ 動かしてみる プロトコルアダプター 概要 やりたいことの概…

7インチモニター購入でモバイルバッテリー給電で賄えるRaspberry Pi作業環境ができた

Raspberry Piを使う時には電源の取り回しが面倒でモバイルバッテリーをよく使います。 家の無線LANに繋いでいる時はSSHで入れば良いのですが、SIMカード通して動かしていたり、Wifi周りの設定を調整したりLANから外れる作業も以外と多く、そういう場合は、余…

Modbus-RTU対応の温湿度計をRaspberry PIとPythonでGPIO経由で利用してみた

はじめに Modbus(モドバス)って? PCのUSBから繋いでみる GPIOから繋いでみる Raspberry PIでUART通信の準備 MAX485購入(UART -> RS485変換) 配線 Pythonで通信してみる 参考URL はじめに 仕事でModbusを勉強する必要が出てきたので、試しに何か動かそうと…

GCP Data CatalogをMySQLと連携して3rd Party対応時の機能を追ってみた

以下の記事でAzure Data Catalogでやったような機能追いをGCPのData Catalogでも行ってみました。 yomon.hatenablog.com 2020/08/21時点の内容なのでご注意ください。 GCP Data Catalog 利用するデータ メタデータの登録方法 メタデータの登録手順 データカ…

Azure Data CatalogをMySQLと連携して機能や使い方を追ってみた

Azure Data Catalogについて書きます。 azure.microsoft.com データカタログって Azure Data Catalog 対応しているデータソース データカタログ準備 MySQLサンプルデータの準備 Azure Data Catalogにメタデータ発行用の登録ツールインストール MySQLコネクタ…

ローカルPCのDocker上でCloudWatch Logs Insights連携の簡易分析基盤(Elasticsearch)を使う

AWSを運用しているCloudWatch Logsを分析することが良くあると思います。 数年前はCloudWatch Logsのファイルをダウンロードしてきて、分析していて面倒でしたが、 CloudWatch Logs Insights が出てきてそれもかなり楽になりました。 それでも毎回調べながら…

Amazon CognitoのIDトークンのJWTをPyJWTを使って検証する

Cognitoの認証により発行されるA JSON Web Token (JWT) に対して、Pythonで検証処理を自前実装する方法を記載します。 JWT検証に利用するライブラリ Amazon CognitoのJWTの検証方法 サンプルコード 補足 Cognitoの設定 補足 jwt.decode()について JWT検証に…

Google Cloud DataflowでNative Library(*.so)が必要なjarを利用する方法

タイトルの通り、*.soなどの形式で提供されるNative Libraryを必要とするjarファイルをDataflowで使おうとして、ハマったので記録しておきます。 問題となっていたエラー 調査 サンプルコード 問題となっていたエラー まず出たエラーはこちら。このエラーの…

Docker Hubの公式イメージだけ使ってGCPにTerraformにてデプロイ

HashicorpからTerraformのイメージが公式でDocker Hubに公開されています。 https://hub.docker.com/r/hashicorp/terraform こちらを利用してGCPにインフラをデプロイします。その際に認証の部分もDockerの公式イメージだけで対応してみようと思います。 利…

Apache BeamでJavaのObjectをParquet形式でS3とGCSとローカルに出力する

GCPのCloud Dataflowでも使われている、Apache BeamでJavaの内部で持っているデータをParquetに出力するやり方です。 サンプルコードの構成 元にしたMaven ArcheType 利用するPOJO GenericRecordへの変換 出力先の切り替え ローカルに出力してみる GCSに出力…

AWS Certified Data Analytics - Specialtyの試験に合格してきました

AWS 認定データアナリティクス(AWS Certified Data Analytics - Specialty)の試験に合格してきました。 AWS 認定データアナリティクス – 専門知識 試験概要 試験準備 オンライン試験の失敗談 1回目 2回目 さいごに 試験概要 180分で65問の試験でした。AWS…

CloudFormationでメール承認つきのCode PipelineでEC2にデプロイする

AWS

今更感ありますが、メール承認付きのCode PipelineでEC2にファイルデプロイするところをCloudFormationでデプロイする方法です。 前提 CfnのYAML定義 Cfn適用 パイプラインを動かす ソースをCodeCommitにPush 承認依頼メール 参考 前提 IAMの設定からGitComm…

terraform-provider-azurermでエラーが出たときの調査ログ

Terraformのトラブルシューティングログです。 問題起きた時にどうやって原因を突き止めるのか、後で手順を誰かに説明する時のために書いておきます。 事象 TerraformのProviderのリポジトリを確認する ログを取得する APIを確認する Githubを検索 最終手段 …

ACR(Azure Container Registry)に保存されているイメージの世代管理をしたい

ACRのイメージが溜まるのが気になるので、古いモノ削除したいなと思って調べてみたら以下のMicrosoftの公式ページにまとまっていました。 ただ、記載があるのは、タイムスタンプである期間より古いものとか、タグの付いてないものを削除する手順でした。今回…

90歳超えた祖母のところにiPadとポケットWiFi置いたら色々捗った

介護施設に入っている90歳を超える祖母がいるのですが、休日には家族でお昼買っていって曾孫見せながら、一緒にご飯食べたりしています。話を聞くと日中はテレビばかりで退屈することがよくあるようです。 そんな祖母の一番の楽しみは曾孫の成長を見ることの…

TerraformでLinux Azure VMにHeartbeatの死活監視を組み込む

タイトルの件、検索してもあまり見つからなかったので書き残しておきます。 いきなりTerraformの定義です。ドキュメントを元に作ってます。 www.terraform.io variable "azure_subscription_id" {} variable "azure_tenant_id" {} variable "mail_address" {…

AKSやVMで複数マネージドIDに紐付けるとIdentity not foundとなり認証できなくなる件

結論 事象 事象の深掘り 原因を調査 Addon設定前 Addon設定後 最後に 参考URL 結論 複数のマネージドIDを紐付けている時には、認証時にどのマネージドIDを利用するか指定する必要があります。 こう書くと当たり前の話ですが・・ハマりました。 以下の例ではA…

Kubernetes KEDAのログレベルを変更する

KEDAは常時起動でポーリングしQueue等をチェックしているので、結構なログの量になります。 現時点でログのレベルは debug, info, error の3つが設定可能で、デフォルトはinfoとなっています。 https://github.com/kedacore/keda#keda-operator-logging この…

Azure PipelinesでAKSプライベートクラスタにデプロイを行う

AKSはAPIサーバーへの通信をプライベートに限定するプライベートクラスタを構築することが可能です。 ただしDevOpsでCI/CD組もうとすると通常のAKSクラスタだと簡単に統合できたところが、プライベートクラスタだと上手くいきません。(API叩けないので当然で…

WSLで777となったファイルやディレクトリをchmodでumaskの値に一括変更

小ネタです。 経緯 何も設定していないWSL上で普通のLinuxみたいに開発していたらパーミッションが 777 になってしまいます。 これを避ける設定として以下のような設定があります。 wsl.conf を設定して、 $ cat <<EOF | sudo tee -a /etc/wsl.conf [automount] options = "metadata" EOF WSLを再起動。 > wsl --shutdown PC交換後にこれを忘れてい</eof>…

kustomizeのvarsを使って環境毎の変数をKubernetesの定義に埋め込んでみる

KubernetesのYAMLを環境毎のに分ける時にkubectlに標準で入っているkustomizeを使ってるのですが、サンプルなどに書かれている patchesStrategicMerge では以下のようなYAML内の値に変数を埋め込めないな。と考えていました。 kustomizeのリポジトリを見てい…

Azure Kubernetes ServiceのPod上でkubectlコマンドをマネージドID認証して実行

AKSでもマネージドIDが使えるようになったことで、KubernetesのPodから定期ジョブなどでkubectlを実行したい時にAzure CLIで認証できるようになりました。 前提 コンテナイメージをビルド ENTRYPOINTのスクリプト イメージのビルド ACRにイメージをビルド Ku…