【Alteryx Tips】AWS Toolsを利用してS3のバケット内のリストを取得する方法をご紹介します
Alteryx ACEのAkimasaKajitaniです。
Alteryxの純正のAWSのS3関連のツールは、Amazon S3アップロード・Amazon S3ダウンロードの2ツールがあり、これを使ってS3からファイルをダウンロードしたりS3へアップロードすることができます。しかしながら、ファイル名にアップロード日付がついているケースなど、ファイル名が固定ではないファイルのダウンロードは動的にできないような仕様になっています。
そこで、今回はMarketplaceで提供されているAimpoint Digital社のマクロ「AWS Tools by Aimpoint Digital」を紹介したいと思います。MarketplaceのダウンロードURLはこちら です。ダウンロードの方法などMarketplaceに関わる内容は過去記事をご覧ください。
実際に「AWS Tools by Aimpoint Digital」を使ってみる
事前準備(Boto3パッケージの導入)
本ツールですが、実は事前作業が必要です。中身的にはPythonで組まれているようで、「Boto3」と呼ばれるAWS操作用のパッケージを導入する必要があります。マクロの作り方によってはAlteryxを管理者権限で立ち上げて実行すれば不足しているパッケージを自動的に入れてくれるのですが、本ツールはそのような作りになっておらず、事前にパッケージを導入する必要があります。
Pythonツールを使ったことが無い方のために、管理者権限で実行すればパッケージのインストールができるワークフローを共有したいと思いますが、実際は下にあるのようにPackage.installPackagesでboto3をインストールするだけです。これは一度実施してしまえば、そのPCでは再度行う必要はありません。
なお、管理者権限で実行する場合は、右クリックから「管理者で実行」で実行してください(Designerには管理者版と非管理者版がありますが、管理者版をインストールしていても普段は非管理者権限で実行されていると思います)。
以下のスクリーンショットは、非管理者版の画面です。
管理者版であれば、「管理者として実行」が可能です。
これにより以下のように「管理者権限で実行」となります。
Boto3_installerダウンロード
ダウンロード後、解凍し、管理者権限で起動しているDesignerにて実行してください。
実際に使ってみる
Boto3パッケージがインストールできたら実際に使うことができます。なお、S3アップロード/ダウンロードツールと同様に、アクセスキーとシークレットアクセスキーが必要になります。入手方法は、過去の記事を参照ください。
設定画面は以下のように、資格情報欄に「アクセスキー」と「アクセスシークレットキー」を記載します。それ以外はリストを取得したいバケット名と正規表現のルールを記載すれば、ルールにマッチしたファイルのリストを取得することができます。
これにより、以下のようなリストを取得することができます。
あとは、例えばlast modifiedの降順でソートしサンプリングツールなどで最初の1行を取れば、最新のファイルを取得することなどが可能になります。
リストが取得できれば、bucketnameとobject_pathの組み合わせでファイルをダウンロードすることができます。これもAWS S3ツールの「Amazon S3 Download」ツールで可能です。設定画面は以下の通りで、ここでも「アクセスキー」と「アクセスシークレットキー」を入力する必要があります。
ただ、出力先がファイルしか選択できないのが少し不便でしょうか。CSVなどであればそのまま取り込んで利用することもできるのですが・・・。ここからは、動的入力ツールを使って読み込むことになります。
最終的には、以下のようなワークフローになるかと思います。
なお、その他の手段として、AWS CLIツールを使ってコマンドラインでファイルリストを取得するような方法 も紹介されています。こちらの場合は、AWSのCLIツールのインストールが必要になります。
Alteryx Designer 2023.1.1.306 パッチ: 4時点の情報となります