ほぼ0からAzureを使用した際のコストやサービスの活用について

技術者が語るMicrosoft Azure
今回のブログでは、以下の3つのテーマに沿って、ほぼ0からAzureを使用し、実施・確認した内容を解説します。
- Azureを使用してみた際のコスト感を知りたい
- サブスクリプションに関する疑問点を調査したい
- Azure Storage AccountとAzure Synapse Analyticsへの理解を深めたい
1.Azureのサブスクリプションやコストについて
1-1 今回の作業の使用コスト
今回使用したサービスは「Azure Storage Account」と「Azure Synapse Analytics」のみで、2週間使用したところ、約3,000円分を使用しました。
2月19日~24日までは「Azure Synapse Analytics」を1日中アクティブにしていたため、コストの上がり方が他の期間と比べて高くなっています。
ここから簡単に計算すると、常時アクティブで月1万円程度になり、意識してサービス停止をすることで左記から大幅に低減できるものと思われます。
※今回は初回限定の無料クレジットを使用

1-2 サブスクリプションの停止と再アクティブ化
サブスクリプションをキャンセルしてみたところ、3日後に手動で削除できるようになるとのことでした。
また、キャンセルの後、10分程度でステータスが以下のようになりました。

上記の停止期間中に別メールアドレスでアカウントを作成し、もう一度無料クレジットを最初から使えないか試してみたところ、使えませんでした。
恐らく、住所かクレジットカード番号、メールアドレスに紐づいている電話番号等で管理しているものと思われます。
後に再アクティブ化を実施してみたところ、取り消し後30分程度で下図のようになり、無料クレジットも使えるようになりました。

2.Azureのサービスの活用について
2-1 概要
今回、主に使用するサービスは以下の2つです。
・Azure Storage Account
・Azure Synapse Analytics
上記2つを用いて、気象庁の世界の天候データツールからダウンロードできる天気のデータファイルをAzure Storage Accountに格納し、Azure Synapse Analyticsにて外部テーブルで参照できるところまでを作成します。
上記からダウンロードしたファイルの内容は以下のようなものです。

なお、上記データを使用する理由は以下の通りです。
- データの作成元が信用できる機関であること
- 蓄積することにより大量データになること
- 天候は影響される事象が多く、他のデータと並べて分析するのに使用できそうだと考えられること
- 公開情報であること
- データ内容そのものにいろいろと加工の余地がありそうなこと
2-2 Azure Storage Accountの作成
Azure Storage Accountを作成するため、Azureのホームの「ストレージアカウント」をクリックします。

ストレージアカウントの画面で「+作成」をクリックします。

●「基本」タブの設定
サブスクリプションはAzure開始時に設定したものを使用します。
リソースグループについて、初回は「新規作成」から名前を入力することで設定ができます。
ただし、リソースグループの新規作成で名前入力をして「OK」をしてしまうと、自動的に作成され、それを削除する手段が見当たらなかったことから、コストに影響はないものの余計に作ったものが残ってしまう可能性があるので注意が必要です。

ストレージアカウント名はヒントにある通り、Azure内で一意である必要があります。
地域は近場を、パフォーマンスと冗長性はコストの安価なものを選択します。

●「詳細設定」タブの設定
「階層型名前空間を有効にする」にチェックを入れます。

●「ネットワーク」タブの設定
「ネットワーク アクセス」は「すべてのネットワークからのパブリックアクセスを有効にする」を選択します。
後述しますが、「選択した・・」や「パブリックアクセスを無効・・」を選択すると、結果としてストレージアカウントにアクセスできなかったため、上記の設定としています。

その他のタグはそのままにしてストレージアカウントを作成し、「リソースの移動」をクリックして、「コンテナー」をクリックします。

コンテナーの画面で「+コンテナー」をクリックし、新しいコンテナーを作成します。
後に作成するディレクトリ等と違い、名前の変更ができないようなので、注意が必要です。

コンテナーの作成が終わったら、ディレクトリ「00_weather」を作成し、前述の天気のファイルを今回は手動でアップロードします。
なお、上で設定した「ネットワーク」タブの設定でパブリックにしない場合、このコンテナーをそもそも開けない等があるため、注意が必要です。

これでAzure Storage Accountの作成と設定が完了となります。
2-3 Azure Synapse Analyticsの作成
Azure Synapse Analyticsを作成する作業については、当社ブログ「Azure Synapse Analyticsから使いなれたSQLとUI操作でCSVデータを参照してみた」でもご紹介しているため、作業時に気になった点のみを記載します。
Azureのホームの「Azure Synapse Analytics」をクリックします。

Azure Synapse Analyticsの画面で「+作成」をクリックします。

●「基本」タブの設定
「アカウント名」はAzure Storage Accountで設定したストレージアカウント名を、「ファイルシステム名」はコンテナー名を設定します。

上記のURL通りの手順にて作成が完了したら、Azureのホームに戻ります。
再び「Azure Synapse Analytics」をクリックすると、先ほど作成したワークスペースが一覧に表示されているのでクリックします。
次に外部テーブルを作成するSQLデータベースを作成します。
ワークスペースの画面の表示後、画面中央下側にある「Synapse Studioを開く」をクリックします。

別タブにて「Synapse Studio」が表示されるので、画面左の円筒をクリックし、「データ」の画面に遷移します。
画面上の「+」で表示されるメニューより「SQLデータベース」を選択し、「サーバーレス」のSQLデータベースを作成します。

SQLデータベースの作成が終わったら、外部テーブルの作成を行います。
データソースの作成のため、下図のSQLを実行します(なお、DROP文は不要です)。
公式の解説によるとLOCATIONに「ディレクトリ」の指定もできると記載がありますが、今回はディレクトリの指定を省き、外部テーブル側でディレクトリの指定をしています。

ファイルフォーマットの作成のため、下図のSQLを実行します(なお、DROP文は不要です)。
今回のデータファイルはヘッダの他に不要行が1行あったので、「FIRST_ROW = 3」としています。

外部テーブルの作成のため、下図のSQLを実行します。
DATA_SOURCEとFILEL_FORMATは上で設定したものを使用、LOCATIONはデータソースで指定したコンテナー直下に作成したディレクトリ「00_weather」を設定します。

最後にSQLで外部テーブルのデータの参照を行います。

参照ができました。
これで今回の目的は達成となります。
2-4 今後の課題
今回は、ほぼ0から「Azure Storage Account」「Azure Synapse Analytics」を設定し、使用することを目的として作業を行いましたが、成果物には以下のような不満点が残りました。
- 対象のデータファイルを手動で取得している
- 対象のデータファイルの文字コードの変換を手動で行っている
- ファイル名にある日付をデータの項目として参照したい
- Azure Synapse Analyticsの専用SQLプールで外部テーブルを作成したい
上記は全て解決可能である見込みですが、今後の課題として実装方法の調査を引き続き行いたいと考えています。
3.最後に
コスト面については、Azureを個人で運用するにはサービスのこまめな停止等の工夫が必要な印象です。
また、本記事では、限られた時間の中でいろいろ試行錯誤した結果、有用と思われるものをなるべく流れを損なわずに残していますが、欠落部分や心残りの部分が多々あります。
これは後の調査や検証で知識を補完し、機会があればまた記録を残したいと考えています。