Azureリソースのマネージド ID(旧MSI)の権限をCURLでREST APIを実行して検証する

最近、AKSも対応したマネージド ID(旧MSI)です。これで認証情報をローカルに持たなくてもAPIが叩けるようになりました。 docs.microsoft.com 権限の検証はAzure CLIやSDKでも検証できますが、ここでは手っ取り早くcurlで検証する方法を記載します。 仮想マシ…

エンジニアのリモートワーク・在宅勤務における腰痛対策の例

東京に出るまで片道2時間以上かかるところに住んでいることもあり、コロナ禍に関係無く、ここ1年半くらいリモートワーク中心のワークスタイルでやってきています。 リモートワークメインになって立って歩くことが激減しました。そこでダメージが溜まるのが腰…

TerraformでAzure DevOpsをプロビジョニングする

タイトルの通り、Terraform使ってAzure DevOpsをプロビジョニングする方法です。 前提 組織登録 Personal Access Tokenの取得 Terraform定義準備 Terraformの定義の準備 Azure DevOps Providerのインストール Terraformの実行 スキーマの確認 前提 組織登録 …

KEDAを使ってServiceBus Queueに合わせてKubernetesジョブをスケールする

KEDAは「Kubernetes-based Event-Driven Autoscaling」の略で、イベントをトリガーとしてKubernetesのデプロイを管理することを目的としたCRD(Custom Resource Definitio)で、イベントを使ってpodを0~nにスケールイン・アウトできる機能です。 KEDA is a Ku…

Azure Kubernetes ServiceのPodからManaged identities(旧MSI)認証でKey Vaultの情報を取得する

Key Vaultに保存した情報をAKS上のPodから取得するような要件は良くあると思います。でもKey Vaultへの認証をどうしたものかと思っていました。Service Principal使えば良いのですが、AKSでもMSIを使えたら良いなと思い調べていたところ、以下の情報がドキュ…

Azure Kubernetes Serviceデプロイしたらvirtual-nodeが機能しなかったので対応メモ

virtual-nodeアドオンは、Azure Container InstancesをAKS(Azure Kubernetes Service)の仮想ノードとして利用できる便利な機能です。 azure.microsoft.com Azureのウィザードで作成している分には問題無く動いていたのですが、環境構築をTerraform化した際に…

Google Cloud Certified Professional Cloud DevOps Engineerを取得してきました

Google Cloud Certified Professional Cloud DevOps Engineerを取得してきました。 試験情報 試験内容 ここは勉強しておいた方が良い これでGCP 6冠 試験情報 試験時間 2時間 問題数 50問 言語 英語 模擬試験も、申し込みも英語は英語用のリンクからの方が辿…

「しくみがわかるKubernetes~Azureで動かしながら学ぶコンセプトと実践知識」を読んだ

今度、Kubernetes使うので、復習としてこちらの書籍読みました。 しくみがわかるKubernetes Azureで動かしながら学ぶコンセプトと実践知識作者:阿佐 志保,真壁 徹発売日: 2019/01/23メディア: 単行本(ソフトカバー) 構成 目次は以下でした。 第1部 導入編 …

MinikubeでACR(Azure Container Registry)を使う

MinikubeからACRにアップロードしたコンテナイメージを利用する方法です。 変数設定 ACRの準備 Service Principalの作成と認証情報取得 Minikubeに認証情報の登録 その他 認証情報を更新する Dockerでログインしてみる 設定の確認 参考URL 変数設定 Azureに…

WSL2上のDockerでSQL Server実行してSSMSで繋ぐまで

前提 SQL Server起動 sqlcmdで接続 SSMSから接続 参考URL SQL Serverの動作確認のためにWSL2のDocker上でSQL Server起動して、SQL Server Management Studio (SSMS)で接続するところまでです。 前提 WSL2とDockerが入っていること SSMSがインストールされて…

IP制限かかっているS3バケットにAthenaでアクセスする

IP制限されたS3バケットポリシーの例 Athenaからのアクセス方法 方法① IAMロールをホワイトリストに登録(userid) ポイント 考慮点 方法② Athenaからのアクセスをホワイトリストに登録(CalledVia) ポイント 考慮点 S3では、以下の記事のようなリソースポ…

TableauからAthenaにIAMロールで接続するためJDBC利用してみる

最初に 前提 設定 TDCファイル作成(Tableau Datasource Customizatio) JDBC接続文字列作成 TableauからAthenaに接続してみる 最初に TableauからAthenaに繋ぐウィザードを立ち上げると、Access KeyとSecret Access Keyを求められます。 やはりロールで繋ぎた…

AZ-400 Microsoft Azure DevOps Solutions に合格してきた

プロジェクトの隙間で少し時間ができたのでAZ-203と併せて取得してきました。これでMicrosoft Certified: Azure DevOps Engineer Expert認定を取得できました。 ロードマップ上はここに当たります。AzureはExpertが二つあるのですが、その片割れです。 引用…

SAP ERP のデータをRFC経由でPython+Pandasに読み込む

ERPというか、ABAPインスタンスのデータをPandasに取り込む方法です。 実は昔、以下の記事で、Pythonからの接続については書いたのですが、その時から時間経ったのでPythonからの接続と、Pandasにデータ読み込むところまで進めてみました。 PythonからSAP処…

AZ-203 Developing Solutions for Microsoft Azureを合格してきた

AZ-203を合格してきました。これでMicrosoft Certified Azure Developer Associateらしいです。 実は目的はAZ-400なのですが、その前提条件になっているので受けてきました。Azureは上位認定受けるのに複数試験受けないといけないので、結構疲れます。 勉強…

BigQueryのQuotasやクエリ課金を別々に制御するためAPIリクエスト用のプロジェクトを分けてみる

はじめに やりたいこと 準備 リクエスト用プロジェクトの割り当て変更 Tableauの場合 課金 参考 はじめに BigQueryの利用をコントロールする方法を調べています。BigQueryのAPIについてQuotas(割り当て)を制御することで、ある程度の制御できます。もう少し…

google-cloud-bigqueryのlist_jobsがUnknownJobを返してきてハマってしまった

小さいハマりなのですが、具体的にはGCP BigQueryのPythonクライアントライブラリである、google-cloud-bigqueryのlist_jobsが手元とDataflowのサーバ側で挙動が違う状態に遭遇しました。 デバッグログを見ながらエラーのポイントは判明しました。list_jobs…

BigQueryの課金情報が含まれるクエリ履歴をテーブルにロードしてSQLで分析できるようにする

追記 今は INFORMATION_SCHEMA を使うことで同じ情報が簡単に取得できます。 SELECT * FROM `region-asia-northeast1`.INFORMATION_SCHEMA.JOBS_TIMELINE_BY_PROJECT cloud.google.com クエリの履歴情報等を取得したい時はBigQueryのジョブ履歴から情報拾え…

GCPの割り当て(クオータ・Quotas)をAPIから変更する情報見つけたのでやってみる

BigQueryの割り当て(クオータ・Quotas)をAPIから変更する方法を探していましたが、GCP公式ドキュメント見てもコンソールでの作業ばかりしか記載が見つかりません。 cloud.google.com GCPの公式ドキュメントはほとんどの項目でgcloud等で設定するパターンが書…

Cloud SpannerからAvro経由でBigQueryにデータのExport Import

SpannerのデータをBigQueryに取り込む方法です。基本は以下の2つの内容を組み合わせます。 cloud.google.com cloud.google.com 簡単に図にするとこんな感じです。 Dataflowジョブの登録 bqコマンドでAvroをロード Dataflowジョブの登録 今回利用するのはGoo…

Terraformで「dial tcp connection refused」が出たら並列数を疑ってみる

何度も実行したTerraformの定義で、別の環境から実行したらエラーが出ているという話を聞いて調べてみた、エラー対応メモです。 内容としては以下のようなメッセージです。「terraform plan」で発生します。 何度か目の前で叩いてもらうと、エラーが出るサー…

Google Cloud SpannerにTableauからJDBC接続する手順

参考URLにも記載した、こちらの記事の方法で接続可能です。 JDBCダウンロード Spanner接続用のアカウント作成 TDCファイル作成(Tableau Datasource Customizatio) Tableau再起動 Spannerをデータソースとして接続 参考URL JDBCダウンロード SpannerにJDBC経…

GCP Cloud ComposerからSendGrid経由でメール通知を行う

Cloud Composerからのメール送信はSendGridを使うのが簡単です。 以下の通り、Googleからも簡単な手順も用意されていますが、画面付きで手順書いてみます。 https://cloud.google.com/composer/docs/how-to/managing/creating?hl=ja#notification SendGrid登…

Python+Cloud DataflowのPubSubストリーミングをGoogle Colaboratory使って試す

Google ColabでGCP使うには GCPの認証 PyPiモジュールのインストール PubSub側準備 左のブラウザ(Publish側) 右のブラウザ(BeamでSubscribe側) Cloud Dataflowで実行 後片付け PubSub削除 Cloud Dataflowのジョブ停止 最後に やりたいことのGIF動画です。…

PythonでJDBC使ってSQL ServerクエリしていたらUnicodeEncodeErrorにぶち当たった

時々見るエラーですが、大きなテーブルを読み込むETL処理で出た時などは、だいぶ辛い気分になります。 UnicodeEncodeError: 'utf-8' codec can't encode characters in position 0-1: surrogates not allowed SQLで該当を探す SparkやBeamを使って大規模デー…

Cloud Composerが作成できなくなった

ある日、TerraformでCloud Composerのテスト環境構築したら以下のエラーでCloud Composerが立ち上がらなくなりました。 Error: Error waiting to create Environment: Error waiting for Creating Environment: Error code 7, message: Custom service accou…

Cloud Dataflowでシンプルな同期処理のヒント実装

最初はシンプルな差分同期方法の実装を書こうと思ったのですが、どうしても固有要件が入ってしまうので同期処理のヒント実装を書くことにしました。 手元で試せるように、Beam以外の部分はダミー関数としています。データソース取ってくるところと、データ書…

Cloud Dataflowのトラブルシューティングで調べること備忘録

年始早々、Dataflowのエラーでかなりハマりました。 エラー自体は些細なことだったのですが、全然原因わからずに1日中悩んでしましました。 備忘も兼ねて、対応メモ書いておきます。 エラーの事象と対応 事象 開発中のジョブで、データ量的に数分で終わる、…

2019年の仕事を振り返る

明けましておめでとうございます。2019年の振り返りしようと思っていたら、いつまにか年が明けてしまいました・・ エンタープライズSI業界からWEB業界に移動して、またSIに戻ってきた一昨年2018年。その一昨年は、自社サービスの開発をメインに行っていた関…

Pythonで書くDataflowテンプレートでサードパーティ製JDBCドライバを使う

この記事の続きです。 yomon.hatenablog.com 以下にもある通り、今書いている時点ではApache BeamのPython SDKはビルトインでJDBC対応していません。 beam.apache.org PythonでJDBCドライバ使いたかったのはDataflowのPython SDK使ってもJDBC接続使いたかっ…