あっという間?~近況~
転職して4か月経とうとしている。
あっという間なのか、長かったのか。
あたくしは試用期間も終わって、普通に仕事してます。
年休が付与されたのが一番ホッとしてるなー。試用期間中は年休なかったんよ。ブラック?
今のところ、転職して正解だったと思う。
Azure 以外のクラウド触れるし、
今までできなかったことをやれるようになったし、
リモートワークもそのままで、今のところたまにしか会社行かなくていいし、
部の人や一緒に仕事している人はええ人多いし(客はクソだが)、
何だかんだで前職の経験が役に立ってるし、
年収上がったし、年収上がったし、年収上がったし・・・!
やっぱこの世の中、金がすべてよ♪
たまに腹痛いときあったり、久々に居酒屋で飲んで記憶を飛ばしたり、駅の階段で思いっきり尻餅をついて腰を強打したりしたこともあったけど、いまのところ元気。
これからすぐにクソ暑くなるから、引き続きテレワークだといいなー。
Synapse Analytics のファイアウォール設定(Data Factory & Power BI)
インフラ側の同僚が中の人に聞いていた内容。
この辺苦手やからメモメモ。
Azure Data Factory から Synapse Analytics へのアクセスは、「Azure サービス及びリソースにこのサーバーへのアクセスを許可する」をオンにするか、マネージド仮想ネットワーク(プライベートリンク)を使用することで可能。
マネージド仮想ネットワーク(プライベートリンク)を張っても、Synapse Analytics のファイアウォールで該当の IP アドレスが許可されていた場合、他のサービスまたは端末から Synapse Analytics へのパブリックアクセスは可能、ってことは理解した・・・はず。
以下、質問と回答。
<質問内容>
Azure Synapse Workspase にて、セキュリティ確保のため Firewall の設定を行いたいと考えています。
IP アドレスによる Firewall の設定を行う場合、下記の接続元からのアクセスを許可できるでしょうか。
可能な場合、設定方法をご教示ください。
- Azure Data Factory
- Power BI Service
<回答>
● Azure Data Factory
Azure Data Factory は PaaS 製品であるため、IP アドレスによる Firewall が設定された場合、下記の方法で Azure Synapse Workspace へアクセスすることが可能となる。
「Azure サービス及びリソースにこのサーバーへのアクセスを許可する」設定
Azure Synapse Workspace のファイアウォール設定にある「Azure サービス及びリソースにこのサーバーへのアクセスを許可する」をオンにした上で、Azure サービスである Azure Data Factory から Synapse Workspase にアクセスすることが可能である。
この方法だと、Power BI からのアクセスも同時に許可される(AzureCloud.* となるため)。マネージド仮想ネットワーク
Azure Data Factory では、プライベートリンクがサポートされる。プライベートリンクを使用すると、Azure(PaaS)サービスにアクセスすることが可能である。
この方法だと、Synapse 側にプライベートエンドポイントが必要となる。
【参考: Azure Data Factory のマネージド仮想ネットワーク 】
● Power BI Service
Azure Synapse Workspace のファイアウォール設定にて、利用している Power BI テナント環境のリージョンに振られている IP アドレスを登録することで、Power BI から接続することが可能である。
~Power BI に割り当てる IP アドレスの確認方法~
- 対象リージョン IP アドレスのレンジ
Power BI サービスの通信に使用される IP アドレスについては、リージョンごとに振られた IP アドレスの範囲内の IP アドレスが動的に割り当てられる。
下記 URL より IP アドレス一覧をダウンロードし、貴社環境のリージョンに振られている IP アドレスの範囲をファイアウォールに登録すれば、アクセス可能となる。
【参考:Azure IP Ranges and Service Tags – Public Cloud】
上記 URL より .json ファイルをダウンロードし、”AzureCloud.XXXX” の配下にある IP アドレスの範囲を確認する。
例)東日本リージョンの場合、”AzureCloud.japaneast” の配下にある IP アドレスの範囲を確認する。
【参考:組織の既定のリージョンを確認する】
<特記事項>
Synapse Analytics にプライベートエンドポイントを設定した時点で、インターネット経由のアクセスができなくなるということは無い。
当該設定を行った場合、Azure Data Factory から Azure Synapse Analytics へのアクセスはプライベートリンク経由だが、Azure Synapse Analytics のファイアウォールにて該当の IP アドレスが許可されれば、他のサービスまたは端末から Azure Synapse Analytics へのパブリックアクセスは可能である。
そのため、Azure Synapse Analytics のファイアウォールにて Power BI における IP アドレスがブロックされない限り、Power BI から Azure Synapse Analytics へのパブリックアクセスは可能である。 なお、プライベートリンク以外で、通信許可の設定を何も登録していない場合は、実質パブリックネットワーク経由のアクセスは無い状態となる。
Power BI にはマネージド仮想ネットワーク機能のようなプライベート通信できる機能は無い。
しかし、オンプレミスゲートウェイというサービスを VNET 内の環境にインストールすることで、Power BI → Azure Service Bus → オンプレミスデータゲートウェイ → Azure Synapse Workspase の経路でアクセス可能である。
※イメージとしては、仮想ネットワークと仮想マシンを作成し、その仮想マシンの上にオンプレミスゲートウェイをインストールして Azure Synapse Workspase に接続を実施することになる。
【参考:オンプレミス データ ゲートウェイとは?】
【参考:オンプレミス データ ゲートウェイのアーキテクチャ】
【参考:オンプレミス データ ゲートウェイのコミュニケーション設定を調整】
【参考:Secure Access to Azure SQL Servers for Power BI】
うん、この辺はさっぱり。
実際、手ぇ動かさんと分からんかも;
それか、前みたくインフラ得意な人と組めれば。。。
東雲堂 にわかせんぺい
一日髭を剃らなかったら即座にやまおとこになるおじさんが買ってきてくれたお土産。
(写真撮る前にあらかた食ってしまうのが、あたくしのウィークポイント)
(『にわかせん「ぺ」い』なんやね!初めて知った・・・)
コレ、前にスライム版があったの覚えてる!
堅めのせんべい?せんべいにしては塩気が無いし、なにより堅いから、何て言ったらええんやろう?不思議なお菓子。
懐かしい素朴な味がする。ほのかに甘い。
気分関係無く、安定して食べられる。歯が痛いとき以外は。
ウインク(^_-)-☆ している可愛い顔も入ってたよ!
紅茶、緑茶、ほうじ茶、ジャスミン茶など、大抵のお茶とは相性いいと思う。
あたくしはハイボールのアテにして食べたりもしたなぁ。
パイプライン手動実行に必要な権限について
個人的に結構 ( ゚д゚)ハッ! とした内容。
最初「そんなことあるん!?」と思ったけど、運用を考えると全然あるなぁと。
アタリはついてたけど、お客さんに説明するのに確証が持てなかったので、中の人に聞いてみた。
一番手っ取り早いのは、「閲覧者」組み込みロールをベースに「Microsoft.DataFactory/factories/pipelines/createrun/action」を許可すること。
コレだと、該当するユーザーは Data Factory UI(作成と監視)における全項目の閲覧とパイプラインのみ実行(今すぐトリガー)が実行可能。
もっと絞った権限のつけ方は後述。
以下、質問と回答。
<質問内容>
特定の一般ユーザーに ETL ジョブ(パイプライン)「のみ」を実行させたい場合、特定の一般ユーザーのデータ ファクトリ リソースにどのような権限を持ったカスタムロールを当てれば良いでしょうか。
現状では、Data Factory UI を利用することを想定して、以下のようなカスタムロールを想定しておりますが、認識は合っておりますでしょうか。
~想定~
「閲覧者」組み込みロール +「Microsoft.DataFactory/factories/pipelines/createrun/action」を許可。
【参考:Microsoft.DataFactory】
<回答>
以下の認識で OK。
この方法だと、該当するユーザーは Data Factory UI(作成と監視)における全項目の閲覧とパイプラインのみ実行(今すぐトリガー)が実行可能。
~想定~
「閲覧者」組み込みロール +「Microsoft.DataFactory/factories/pipelines/createrun/action」を許可。
「今すぐトリガー」を実行する場合、最低限以下の権限が必要となる。
- Microsoft.DataFactory/factories/read
- Microsoft.DataFactory/factories/pipelines/read
- Microsoft.DataFactory/factories/datasets/read
- Microsoft.DataFactory/factories/linkedServices/read
- Microsoft.DataFactory/factories/pipelines/createrun/action
上記 5 つの権限を付与した場合、該当するユーザーが Data Factory UI(作成と監視)において閲覧できるのは「パイプライン」「データセット」「リンクされたサービス」となる。
パイプラインは手動実行できるが、実行結果の確認はできない。
該当ユーザーが Data Factory UI(作成と監視)で「モニター」の「パイプライン実行」より、自分が手動実行したパイプラインの実行結果を確認したい場合、上記 5 つの権限にプラスして「Microsoft.DataFactory/factories/querypipelineruns/read」を追加する。
ただし、「Microsoft.DataFactory/factories/querypipelineruns/read」だけだと、パイプラインのアクティビティの実行結果を確認することはできない(アクティビティの一覧や、アクティビティ詳細確認のメガネマークが出ない)。
アクティビティの実行結果について確認するための権限が必要な場合は、「Microsoft.DataFactory/factories/pipelineruns/queryactivityruns/read」も追加が必要となる。
~まとめるとこう~
以下で『「閲覧者」組み込みロール +「Microsoft.DataFactory/factories/pipelines/createrun/action」を許可』と同じような権限になる。
※「同じような」って書いたのは、「閲覧者」組み込みロールだから、他のリソースも見れちゃうから。
- Microsoft.DataFactory/factories/read
- Microsoft.DataFactory/factories/pipelines/read
- Microsoft.DataFactory/factories/datasets/read
- Microsoft.DataFactory/factories/linkedServices/read
- Microsoft.DataFactory/factories/pipelines/createrun/action
- Microsoft.DataFactory/factories/querypipelineruns/read
- Microsoft.DataFactory/factories/pipelineruns/queryactivityruns/read
コレはスッキリした!!
結構アタリつけてたからなー。伊達に Azure インフラかじってないってことよ!
権限問題はだいぶ悩まされたからね。。。
もっと細かい権限のつけ方まで教えてくれたのは有難かったなぁ。
夢を叶えた日
今日は久々に食料品以外のお買い物デー。
ユニクロで気になってたカーディガンを買って、無印で基礎化粧品を買った。
そして、子供の頃からの夢を叶える時が来た。
サーティワンアイスクリームのアイスケーキを1人で食べること。
ほんまは長い冬休み中に実現しようと思ってたんやけど、そこまで行く用事が無かったんよね ;
でも今日は荷物も少なかったし、サーティワンも空いてた時間帯だったので、いざ購入。
アイスケーキコーナーを見てたら、店員のお姉さんが早速来てくれた。
いろんな味が食べたい&あらかじめ切れてるのがよかったんよね。
ピカチュウとか可愛いのあったんやけど、顔を切るのにめちゃくちゃ抵抗あるんよね。。。切った瞬間『ビ”ガ”チ”ュ”ヴ”!!!』とか言われそうで。
甥とか姪に買うとかだったらええんやけど、食うのはあたくしだけやからな。
『この「パレット6(ろく)ください」』
お姉さん「パレット6(シックス)ですね?在庫見てきますので、少々お待ちください〜」
あぁ〜あたくし、なんてBBA…
こんなオシャンティーなアイスクリーム屋なのに、6(ろく)なわけねーじゃん。
何の疑いもなく6(ろく)って言ってもーたわ。
無事、在庫があったのでそのまま購入しようとしたんやけど…思わぬ試練が。
お姉さん「お誕生日ですか?お誕生日でしたらハッピーバースデーのチョコプレートがございます。他にも文字が書けるプレートがありまして、好きなメッセージを入れることができます!」
えっ…独身アラフォー女が、なんも無いときに独りでアイスケーキ食ったらアカンのん…!?
『いえ…誕生日とかお祝いごととかでは無く、仲間うちでちょっと食べようってもんなので…すみません…』
お姉さん「あっ(察し)、では、後で描けるように、無地のプレートとチョコペンをお入れしておきますね!」
『あっ、ありがとうございます〜』
お姉さん「では、ろうそくも不要ですかね…?」
『あっ、はい。結構です〜』
お姉さん「メッセージカードは…」
『あっ、そちらも結構です〜』
お姉さん「かしこまりました。それでは準備して参りますので、少々お待ちください!」
アラフォー独女がアイスケーキ買うのはこんなハードル高いんや……
ちょっと悲しみながら家に帰り、早速アイスケーキを食す。
…美味い!けど、甘い!
アイスケーキ、こんな甘かったっけ?
子供の頃は1ホールでも余裕って感じだったのに。
確かに美味しいんやけど、2個が限界。
しかも、結構お腹いっぱいになった。
アイスなんて甘くて美味しい空気のようなもんやん?
スポンジのせいかなぁ?
結局、晩ごはんを豆餅のみにして調整(したつもり)。
残りのアイスケーキは、明日以降味わって食べよう。
パイプライン内のトランザクションについて
コレ、前から気になってたこと。
案件でハマりそうだったので、中の人に聞いてみた。
結論は以下。
- コピーアクティビティだと、トランザクションの制御は実現できない。
- Mapping Data Flow だと、一つの操作(insert/delete/upsert/update)に対してトランザクション制御は可能。しかし、「Pre SQL Scripts」に記載されている SQL についてはロールバック不可能。
- Azure Data Factory で厳密なトランザクション管理を求められる場合は、ストアドプロシージャアクティビティを使用すると良い(トランザクション管理を DB 側に任せることで実現)。
以下、質問と回答。
※いろいろ前提事項を書いてたけど、ここでは端折ってる。
<質問内容>
コピーアクティビティを使ってデータの洗い替えを実施しようと考えています。
(オンプレの SQL Server → SQLDB )
洗い替えのデータ削除部分はコピーアクティビティのシンクにある「事前コピースクリプト」に DELETE 処理を記載して実現しようとしており、データ追加部分はコピーアクティビティのソースにある「クエリ」で実現しようとしています。
上記の条件で ETL ジョブ全体(パイプライン全体)でトランザクション管理を実施したい場合は、どのようにすれば良いのでしょうか。
Mapping Data Flow では「Transaction Commit(トランザクション コミット)」を設定できる箇所があるのは認識しているのですが、コピーアクティビティではトランザクション管理はできない、という認識でよろしいでしょうか。
<回答>
現在の Azure Data Factory のコピーアクティビティにおいて、トランザクションの制御はできない。
Mapping Data Flow では、一つの操作(insert/delete/upsert/update)に対してトランザクション制御は可能だが、複数の操作を一つのトランザクションとして制御することはできない。
例えば、データ削除とデータ挿入のデータフローを構成する場合、データ削除後、データコピーが失敗した際にデータ削除後の状態に戻るが、データ削除前の状態に戻すことはできない。
その代替案として、ストアドプロシージャアクティビティの利用を提案する。
ストアドプロシージャアクティビティを使用して、SQLDB のストアドプロシージャを呼び出すことができる。
SQLDB のストアドプロシージャにてトランザクション制御を定義することが可能であるため、Azure Data Factory ストアドプロシージャアクティビティから SQLDB のストアドプロシージャを呼び出すことで、要望の動作が実現できる。
~ストアドプロシージャの処理仕様~
1. SQL Server から SQLDB のバックアップ用テーブル A に、対象となるデータをコピー。
2. SQLDB のストアドプロシージャを呼び出すことで、SQLDB 側の更新対象となるテーブル B に対してデータの削除と挿入を行う。
SQLDB のストアドプロシージャにて、以下の処理を行う。
* トランザクションを開始。
* SQLDB のテーブル B に対して指定した期間のデータを削除。
* テーブル A からテーブル B にデータコピーを行う。
* コピーが成功した場合、トランザクションをコミット。
* コピーが失敗した場合、トランザクションをロールバック。
SQLDB 側のトランザクションに関する情報は以下を参照のこと。
【参考:トランザクション (Transact-SQL)】
うん、想定した答えだったな。
できないならできないって知りたいもんね。
今回は「コケたらもう一回やり直せばええやん」って考えで押し切ったわ。
ベビー母恵夢 くるみショコラ
前にグランスタで、チョコスチームケーキとメープルバタークッキーを買って送った際のお礼が妹夫婦からやってきた!!
母恵夢祭りや~!!
ベビー母恵夢「くるみショコラ」 6個入袋 | 商品一覧 | 株式会社母恵夢本舗
(当然の如くラス 1)
(HP によってはあるところとないところがあるのもレア感増してる)
あたくしが今まで見たことが無い母恵夢!
妹の夫(あたくしから見ると義理の弟になるんかね?)曰く、「空港にしか無かったから買ってきた」とのこと。とりあえず、アンタ最高。また何か買うてきちゃる。
こちらも母恵夢の優しさはそのままに、ショコラ(ココア?)の風味とくるみの食感が美味な一品でした。
「『ベビー母恵夢 冬のショコラ』と何が違うん?」と思うかもしれんけど・・・
食べ比べてみたけど、正直、くるみが入っとる以外で違いが分からんかった;
ただ一つ言えるのは、どっちも美味いということ!
強いて言うなら、あたくしくるみ好きなので、こっちの方が手が伸びるかなぁと。