AWS CLIコマンドを利用することはできますか?
現在、AWSのS3は広く利用されており、Asteria上でもS3からのダウンロード操作が頻繁に行われています。もちろん、AsteriaデザイナーにはS3からのダウンロード用コンポーネント(AWS S3Download)が標準で用意されていますが、時にはCLIコマンドを直接利用して、複数のファイルを柔軟にまとめてダウンロードすることで、思いがけない便利さを実感できる場合があります。
Asteria AWS S3 コンポーネント
例えば、複数のファイルがある場合、ファイル名の日付部分は毎日変わりますし、すべてのファイルが毎日存在するとは限りません。
こんな状況でAsteriaデザイナーのコンポーネントを使う場合、まずファイルがあるかどうかチェックする必要があります。ファイル名が統一されていないものがたくさんある場合は、AWS CLIを使って直接ダウンロードする方法が効率的でおすすめです。
では、例を挙げてご説明いたしましょう。
S3上に以下のファイルが存在しています。
1. sampleCsv_1_20250101.csv
2. sampleAsteria_2_20250101.csv
3. sampleAws_3_20250101.csv
4. sampleCli_4_20250101.csv
5. sampleBat_5_20250101.csv
AWS S3のcpコマンドを利用すると、わずか2行で全ファイルをダウンロードすることが可能です。まずは、CLIコマンドを組み込んだBatプログラムを作成します。
@echo off
setlocal enabledelayedexpansion
set S3_BUCKET=%1
set TARGET_FOLDER=%2
set DATE_PARAM=%3
set AWS_ACCESS_KEY_ID=AXXXXXXXXXXXXXXXXXXX
set AWS_SECRET_ACCESS_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
set PREFIX_LIST=sampleCsv_1_ sampleAsteria_2_ sampleAws_3_ sampleCli_4_ sampleBat_5_
for %%P in (%PREFIX_LIST%) do (
aws s3 ls s3://%S3_BUCKET%/ --recursive | findstr "%%P%DATE_PARAM%" >nul 2>&1
if !errorlevel! equ 0 (
aws s3 cp s3://%S3_BUCKET%/ %TARGET_FOLDER% --recursive --exclude "*" --include "%%P%DATE_PARAM%*"
)
)
endlocal
◆Batプログラム呼出す
◆マップ設定
S3上の「csv-store-jp」バケットに保存されているcsvファイルを、
\\DWH\shared\yyyyMMdd(前日の日付)のフォルダにダウンロードしました。
いかがでしたか?
この記事が少しでも参考になれば幸いです。
ご意見やご感想がありましたら、コメントでお知らせください。


