各製品の資料を入手。
詳細はこちら →Python pandas を使ってAmazon S3 のデータを可視化・分析する方法
CData Python Connector を使えば、Python でAmazon S3 をpandas などのライブラリで呼び出してデータ分析や可視化を実行できます。
最終更新日:2023-09-23
この記事で実現できるAmazon S3 連携のシナリオ
こんにちは!ウェブ担当の加藤です。マーケ関連のデータ分析や整備もやっています。
Python エコシステムには多くのライブラリがあり、開発やデータ分析を行う際には必須と言っていいライブラリも多く存在します。CData Python Connector for AmazonS3 は、pandas、Matplotlib、SQLAlchemy から使用することで Amazon S3 にデータ連携するPython アプリケーションを構築したり、Amazon S3 のデータの可視化を実現します。本記事では、pandas、SQLAlchemy、およびMatplotlib のビルトイン機能でAmazon S3 にリアルタイムアクセスし、クエリを実行して結果を可視化する方法を説明します。
CData Python Connectors の特徴
CData Python Connectors は、以下のような特徴を持った製品です。
- Amazon S3 をはじめとする、CRM、MA、会計ツールなど多様なカテゴリの270種類以上のSaaS / オンプレデータソースに対応
- pandas をはじめとする多様なデータ分析・BI ツールにAmazon S3 のデータを連携
- ノーコードでの手軽な接続設定
CData Python Connectors では、1.データソースとしてAmazon S3 の接続を設定、2.Python からPython Connectors との接続を設定、という2つのステップだけでデータソースに接続できます。以下に具体的な設定手順を説明します。
以下の手順に従い、必要なライブラリをインストールし、Python オブジェクト経由でAmazon S3 にアクセスします。
必要なライブラリのインストール
pip で、pandas & Matplotlib ライブラリおよび、SQLAlchemy をインストールします。
pip install pandas pip install matplotlib pip install sqlalchemy
次にライブラリをインポートします。
import pandas import matplotlib.pyplot as plt from sqlalchemy import create_engine
Python でAmazon S3 のデータを可視化
次は接続文字列を作成してAmazon S3 に接続します。create_engine 関数を使って、Amazon S3 に連携するEngne を作成します。以下はサンプルの接続文字列になりますので、環境に応じてクレデンシャル部分を変更してください。
engine = create_engine("amazons3:///?AccessKey=a123&SecretKey=s123")
Amazon S3 リクエストを認可するには、管理者アカウントまたはカスタム権限を持つIAM ユーザーの認証情報を入力します。AccessKey をアクセスキーID に設定します。SecretKey をシークレットアクセスキーに設定します。
Note: AWS アカウント管理者として接続できますが、AWS サービスにアクセスするにはIAM ユーザー認証情報を使用することをお勧めします。
尚、CData 製品はAmazon S3 のファイルの一覧表示やユーザー管理情報の取得用です。S3 に保管されているExcel、CSV、JSON などのファイル内のデータを読み込みたい場合には、Excel Driver、CSV Driver、JSON Driver をご利用ください。
アクセスキーの取得
IAM ユーザーの資格情報を取得するには:
- IAM コンソールにサインインします。
- ナビゲーションペインで「ユーザー」を選択します。
- ユーザーのアクセスキーを作成または管理するには、ユーザーを選択してから「セキュリティ認証情報」タブを選択します。
AWS ルートアカウントの資格情報を取得するには:
- ルートアカウントの資格情報を使用してAWS 管理コンソールにサインインします。
- アカウント名または番号を選択し、表示されたメニューで「My Security Credentials」を選択します。
- 「Continue to Security Credentials」をクリックし、「Access Keys」セクションを展開して、ルートアカウントのアクセスキーを管理または作成します。
AWS ロールとして認証
多くの場合、認証にはAWS ルートユーザーのダイレクトなセキュリティ認証情報ではなく、IAM ロールを使用することをお勧めします。RoleARN を指定することでAWS ロールを代わりに使用できます。これにより、CData 製品は指定されたロールの資格情報を取得しようと試みます。
(すでにEC2 インスタンスなどで接続されているのではなく)AWS に接続している場合は、ロールを引き受けるIAM ユーザーのAccessKey とSecretKey を追加で指定する必要があります。AWS ルートユーザーのAccessKey および SecretKey を指定する場合、ロールは使用できません。
SSO 認証
SSO 認証を必要とするユーザーおよびロールには、RoleARN およびPrincipalArn 接続プロパティを指定してください。各Identity Provider に固有のSSOProperties を指定し、AccessKey とSecretKey を空のままにする必要があります。これにより、CData 製品は一時的な認証資格情報を取得するために、リクエストでSSO 認証情報を送信します。
Amazon S3 にアクセスするSQL を実行
pandas のread_sql 関数を使って好きなSQL を発行して、DataFrame にデータを格納します。
df = pandas.read_sql("""SELECT Name, OwnerId FROM ObjectsACL WHERE Name = 'TestBucket'""", engine)
Amazon S3 のデータを可視化
DataFrame に格納されたクエリ結果に対して、plot 関数をつかって、Amazon S3 のデータをグラフ化してみます。
df.plot(kind="bar", x="Name", y="OwnerId") plt.show()

Amazon S3 からPython へのデータ連携には、ぜひCData Python Connector をご利用ください
このようにCData Python Connector と併用することで、270を超えるSaaS、NoSQL データをPython からコーディングなしで扱うことができます。30日の無償評価版が利用できますので、ぜひ自社で使っているクラウドサービスやNoSQL と合わせて活用してみてください。
日本のユーザー向けにCData Python Connector は、UI の日本語化、ドキュメントの日本語化、日本語でのテクニカルサポートを提供しています。
ソースコード
import pandas import matplotlib.pyplot as plt from sqlalchemy import create_engin engine = create_engine("amazons3:///?AccessKey=a123&SecretKey=s123") df = pandas.read_sql("""SELECT Name, OwnerId FROM ObjectsACL WHERE Name = 'TestBucket'""", engine) df.plot(kind="bar", x="Name", y="OwnerId") plt.show()