1. turupon

    No comment

    turupon
Changes in body
Source | HTML | Preview
@@ -1,21 +1,22 @@
+
## はじめに
-クレデンシャル情報の定義を変更するだけで、プログラムを変更せずに Cloudian と S3 へのアクセスが可能となります。 オブジェクトストレージを オンプレミス と S3 でハイブリッドに使いたい方へ参考になればと、、、
+AWS SDK for Python(boto3) を使って、プログラムをほぼ変更せずに Cloudian と S3 へのアクセスが可能となります。 クレデンシャル情報の定義を変更するだけで、オブジェクトストレージをハイブリッド(オンプレミス:Cloudian、AWS:S3)で使いたい方へ参考になればと、、、
## 概要
-オブジェクトストレージ/Cloudian上のバケット名「boto3-cloudian」にあるJSON形式のデータファイルから特定のデータを抽出する Python プログラムです。
+オブジェクトストレージ Cloudian/S3 上のバケット名「boto3-cloudian」にあるJSON形式のデータファイルから特定のデータを抽出する Python プログラムです。
JSON形式のデータファイルは、[これ](https://qiita.com/turupon/private/e16789a959fc92068c68) で生成した「test-iot-dummy.json」となり、10万件のデータが存在しています。そのデータから、項目「section」=「R」のものを抽出し、そのデータ件数と抽出に掛かった時間を表示します。
抽出項目「section」はパラメータとして定義することも可能です(アルファベット大文字1文字)。プログラム実行時に、パラメータ「-h」を指定することにより表示されるヘルプも参照ください。
## 実行環境
macOS Big Sur 11.1
python 3.8.3
## クレデンシャル情報の定義
-今回はクレデンシャル情報を .zshenv に定義してプログラムを実行しています。
+今回はクレデンシャル情報を .zshenv に定義してプログラムを実行しています。接続先に合わせて定義ください。
```
# AWS S3
export AWS_ACCESS_KEY_ID=xxxxxxxxxxxxx
export AWS_SECRET_ACCESS_KEY=yyyyyyyyyyyyyyyyy
@@ -26,10 +27,12 @@
#export AWS_SECRET_ACCESS_KEY=bbbbbbbbbbbbbbbbbbbb
#export AWS_DEFAULT_REGION=pic
```
## 実行プログラム
+Cloudianへアクセスする場合は endpoint_url を記載ください(プログラム内を参照ください)。
+
```python:IoTSample-read.py
import json
import time
import argparse
@@ -39,11 +42,13 @@
OBJECT_KEY = 'test-iot-dummy.json'
# S3-APIで全データ取得してロジックでフィルタ(項目:Section)
def section_main(section):
- client = boto3.client('s3')
+
+ # client = boto3.client('s3', endpoint_url='http://s3-pic.networld.local') # Cloudianへのアクセス時
+ client = boto3.client('s3') # S3へのアクセス時
response = client.get_object(
Bucket=BUCKET_NAME,
Key=OBJECT_KEY
)
@@ -96,21 +101,26 @@
では、デフォルトの抽出項目でデータ抽出を実行してみます。
```
$ python IoTSample-read.py
-データ抽出件数:17
-抽出処理時間(通常_API):0.20635700225830078 [sec]
+データ抽出件数:3929
+抽出処理時間(通常_API):3.6708199977874756 [sec]
```
次に、抽出項目を指定した場合の実行です。
```
-$ python IoTSample-read.py --section S
+$ python IoTSample-read.py --section Z
-データ抽出件数:29
-抽出処理時間(通常_API):0.22118234634399414 [sec]
+データ抽出件数:3792
+抽出処理時間(通常_API):3.5160200595855713 [sec]
```
-## 参考文献
+## まとめ
+
+今回は、AWS SDK for Python(boto3) を使って、オブジェクトストレージ Cloudian / S3 からデータを抽出することを確認できました。
+
+10万件のデータから数秒で目的のデータを抽出することができました(もちろん環境に異存します)。
+Cloudianについては、[ここ](https://qiita.com/yamahiro/items/7b8a11c773106b641795) を確認ください。