2020-01-01から1年間の記事一覧

2020年の仕事で使った技術を振り返る

2020年の仕事を振り返ってみようと思います。 書いて見返してみると、本当に技術のことばかりですね。仕事と言うより、技術好きのただの趣味みたいな感じなのでしょうがないか。 はじめに 今年仕事で使った技術 AWS Azure GCP Other 全てのプロジェクトにIaC…

AWS Lambdaのコンテナイメージ上のkubectlコマンド実行してEKSを管理してみる

Lambdaのコンテナイメージからkubectlを実行してEKSを操作してみます。AWS Lambda runtime API 辺りが少し面倒ですが、総じてとても便利です。 なじみの人が多いだろうシェルスクリプトで実装していきます。 はじめに 最初に読んでおくべきもの 実装 Lambda…

SORACOM Napterで複数SIMからSSH先を選択して接続できるスクリプト作った

この記事はBeeX Advent Calendar 2020の12/15の記事です。 SORACOM NapterはオンデマンドでデバイスへのテンポラリかつセキュアなSSH接続を開けるサービスで、コロナ禍で現場に行くのが難しくなった中、自分の中でますます活躍の場が増えてるサービスです。 …

Falcoとaws-for-fluent-bitを使ってCloudWatchにEKSノード上の危険なシステムコール情報を収集する(Proxy環境)

この記事はBeeX Advent Calendar 2020の12/12の記事です。 EKSのデータプレーンをどう選ぶか考えたとき、個人的にはFargateを積極的に使いたいところですが、まだ制限も多くて要件にフィットしない場合もあります。 そんな時に選択肢として挙がるManaged Nod…

Amazon EKSのPrivate ClusterでContainer Insightsを動かす(インターネット接続不可環境)

この記事はBeeX Advent Calendar 2020の12/4の記事です。 直接インターネット接続不可の環境に構築したEKSのPrivate ClusterでContainer Insightsを動かそうとしたら、ハマりどころが多かったので残しておきます。 前提 方針 Container Insights設定事前作業…

Amazon EKSのService Accountをawscliやkubectl使ったスクリプトで作成する

この記事はBeeX Advent Calendar 2020の12/3の記事です。 Service Accountの仕組みを理解するために、Step By Stepでスクリプト化してみました。 スクリプト 使ってみる 名前空間の作成 スクリプトの実行 ServiceAccountの確認 やっていることを少し解説 1.O…

EKSにOPA GatekeeperをHelmでインストールしてポリシー強制をしてみる

OPA Gatekeeperとは 作業環境 インストール 必須Labelを強制する ポリシーテンプレートの作成(ラベル強制) 制約の作成・適用(ラベル強制) ポリシー違反のテスト ポリシー違反のテスト(正常系) 掃除 Container Registryを強制する ポリシーテンプレート…

EKSでaws-load-balancer-controller使ってInternalのALB Ingress Controllerを作成する

PrivateSubnetに構築したEKSにInternalのALBをIngress Controllerとして構築する作業のメモです。 参考URL PrivateSubnetへのタグ付け EC2ロール作成 CRDの登録 Helmでaws-load-balancer-controllerをインストール テストサーバーのデプロイ 掃除 参考URL 最…

AWS IoT SQLでINT等の整数で渡されたBIT FLAGの値を取り出す

課題 対応 課題 AWS IoTに飛んできていたINT等の整数データが実はビットのフラグが並んだものだった場合、AWS IoT SQL使うとフラグに直して後続に渡すことも可能です。 対応 例えば my_data という項目に8ビットフラグの整数が渡されてきた場合、以下の関数…

DataflowのWriteToBigQueryでRuntimeValueProviderで渡した日付のパーティション分割テーブルを作る

DataflowでRuntimeValueProviderで渡した値を使って、BigQueryのパーティション分割テーブルを作成しようとしたら、WriteToBigQueryでハマったので書いておきます。 課題 対策 参考URL 課題 日付のパーティション分割テーブル自体をWriteToBigQueryで作成す…

MFA必須の環境下でAmazon EKSでkubectlを使う方法

MFA必須の環境下のEKSでkubectlを実行するための方法です。 結論としては、kubectlは内部的にAWS CLIを打っているので、AWS CLIのMFA設定の手順と同じとなります。 まず ~/.aws/credentials に自身のIAMユーザを登録します。 [base_cred] aws_access_key_id …

Amazon EKSの [system:masters] はどこから来たかWebhookトークン認証まで追ってみた

EKSを作ったユーザ、またはロールに紐付く system:masters というグループがどこから来ているのか、自分の目で確かめたくて掘り進めたので記録を残しておきます。 EKSのsystem:mastersって EKSの認証の仕組み ステップバイステップで追ってみる kubectlの認…

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に出力…