見出し画像

Amazon SageMakerを使ってAWSサービス一覧をCSV形式で出力する

サマリー

Amazon SageMakerのノートブックインスタンスを作成すると、自分のPCにanacondaをインストールしなくても、手軽にJupyter Notebookが使えて便利です。
この記事では、Amazo SageMakerでJupyter Notebookを使い、AWSのサービス一覧のHTML内の表からCSVファイルを作成する方法をご紹介します。

Jupyter Notebookを起動するまで

AWSマネジメントコンソールでのノートブックインスタンスの作成

公式のデベロッパーガイドを参考に作成します。

  • AWSマネジメントコンソールにIAMユーザーでログインする

  • 利用リージョンを選択して"Amazon SageMaker"を開く

  • 左のメニューから[ノートブック]を展開して[ノートブックインスタンス]を開く

  • [ノートブックインスタンスの作成]を選択する

  • [ノートブックインスタンスの作成]ページで以下を入力し、[ノートブックインスタンスの作成]をクリック

  • [ノートブックインスタンス設定]は例えば以下のように入力する

    • ノートブックインスタンス名:英数字またはハイフンで名前を適当につける

    • [ノートブックインスタンスのタイプ]:試行用でスペックにこだわりがない場合は初期表示"ml.t3.medium"を選択(用途によってお財布と相談しながら適切なスペックを選ぶ)

    • [Elastic Inference]:デフォルト(なし)

    • [プラットフォーム識別子]:デフォルト(Amazon Linux2, Jupyter Lab3)

  • [アクセス許可と暗号化]

    • [IAMロール]:Amazon SageMaker ExcecutionRoleが未作成なら新規作成

      • 筆者は新規作成したロールに「AmazonSageMakerFullAccess 」というポリシーを付与しました

    • [ルートアクセス - オプション]:有効化  ノートブックへのルートアクセス権をユーザーに付与する

    • [暗号化キー - オプション]:カスタム暗号化なし

      • 取り扱うデータの機密性が高い場合はKMSキーを選ぶか、KEYのARNを入力する。今回のユースケースでは不要

  • [ネットワーク - オプション]

    • [VPC - オプション]:非VPC(SageMaker で提供されたインターネットアクセス)

      • 企業のポリシーでプライベートネットワークの環境で使いたい場合にはVPC内にノートブックインスタンスを作る方がよいのかもしれません

    • [Gitリポジトリ - オプション]:リポジトリなしで作成

    • [タグ - オプション]:タグ未指定

      • そこそこの規模で使うときは活用したほうがよいかもしれません

ノートブックを開く

  • ノートブックインスタンスを作成し、利用可能になったら[ステータス]が"InService"に変わる。[アクション]で"Jupyterを開く"リンクをクリックする

ノートブックインスタンス

ノートブックを操作する

新しくノートブックを作成する

  • [New]で"conda_python3"を選んでノートブックを作成する

  • ノートブックが開いたら適当に名前を付ける

conda_python3ノートブック作成

必要なパッケージを追加する(Terminal操作)

  • 追加のPythonパッケージを導入するときは[New]-[Terminal]を開く

Terminalを開く
  • ブラウザの新しいタブが開きTerminalが起動する

  • 今回のユースケースでは、Terminalで以下のコマンドを順番に入力してEnterキーで実行する

    • source activate python3

    • pip install requests beautifulsoup4 lxml

参考「Amazon SageMaker ノートブックインスタンスの Conda 環境に Python パッケージをインストールするにはどうすればよいですか?」 

ノートブックに命令を入力する

以下1行ずつ[In:]に入力して[Run]を選択し、逐次実行しながら作りました。

# pandasをインポート
import pandas as pd
# requestsをインポート
import requests
# lxmlをインポート
import lxml
# AWS services mapped to AWS regionsのhtmlファイルをurlに指定
url = "https://aws-new-features.s3.us-east-1.amazonaws.com/html/aws_services.html"
# urlで指定したhtmlよりテーブル形式のデータを読み込む
data = pd.read_html(url, header = 0)
# data[0](1つ目の表)の内容を先頭から5行確認する
data[0].head()
# data[0]の内容を最終行から5行確認する
data[0].tail()
# data[1](2つ目の表)の内容を先頭から5行確認する
data[1].head()
# data[1]の内容を最終行から5行確認する
data[1].tail()
# 1つ目の表のデータをdf0に入れる
df0 = pd.DataFrame(data[0])
# 2つ目の表のデータをdf0に入れる
df1 = pd.DataFrame(data[1])
# df0からCSVファイルを作成する(ノートブックと同じディレクトリ)
df0.to_csv('./aws_services_mapped_region_1.csv', index=False)
# df1からCSVファイルを作成する(ノートブックと同じディレクトリ)
df1.to_csv('./aws_services_mapped_region_2.csv', index=False)

実行結果を確認する

  • ノートブックと同じディレクトリ(例では「Test」)に2つCSVファイルができた

実行結果
  • ダウンロードして中を開く

    • 例はNumbersで開いたイメージを部分的に表示したもの

aws_services_mapped_region_1.csv
aws_services_mapped_region_2.csv


後片付け

  • ノートブックを操作しないときは、ノートブックインスタンスを停止しましょう

  • もう不要なら、停止した後でノートブックインスタンスを削除します

ノートブックインスタンスを停止

おわりに

  • Amazon SageMakerを使うと、自分のPCにanacondaをインストールしなくても、手軽にJupyter Notebookが使えて便利!

  • 組織で大規模に使うこともできるし、個人でちょこっと使うこともできるのがいい。筆者は業務ではまだAmazon SageMakerを使ったことがありませんが、時間を見つけていろいろ触ってみたいと思います。

  • 以下のような動画も見ました。今後、業務で大規模な機械学習環境を構築する機会があればアーキテクチャの参考にできそう!


この記事が気に入ったらサポートをしてみませんか?