大した内容じゃないですが、備忘も兼ねて記述・・・。
よく考えてみれば、わかることだし、
こういう使い方するものではあまりないような気もするんだけど、ちょっとはまったので。
バッチについて
AWS CLI S3のCpコマンドを使って、
夜中にAmazon S3からファイルをコピーするWindowsのバッチコマンドを作った。
コマンド自体は抜粋するとこんな感じ。
for /f "delims=" %%a in (copyList.txt) do %%a
aws s3 cp s3://buckets/対象ファイルA E:/対象ファイルA
aws s3 cp s3://buckets/対象ファイルB E:/対象ファイルB
前段で、copyList.txtを上記フォーマットで作ってあって、
それをひたすら読み込んで、S3のcpコマンドを実行している状態。
バッチの実行
作って、テスト(手動実行)で問題なかったので、
いざ実行だと、
毎日0時に実行するように、
Windowsのバッチスケジューラに登録したら、
翌朝ログを見たら、以下のような出力が・・・。
Completed 1 part(s) with ... file(s) remaining
Completed 1 part(s) with ... file(s) remaining
要は、
Amazonにアクセスできていない。
無論、初期設定はできているし、
普通にバッチを実行しても、問題ない。
ただ、Windowsにログインしていない状態で実行すると、
上記のログが出てくる。
・・・サインアウト状態だと、認証情報が読み込まれない???
確かに、configやらcredentialsはユーザーのフォルダの中に格納されているから、
そのせいかなぁ・・・という結論になった。
解決方法
読み込まないなら、強制的にセットしてしまえと、
S3のCPコマンド実行前に、SETコマンドで環境変数に認証情報をセットした。
SET AWS_ACCESS_KEY_ID=アクセスキー
SET AWS_SECRET_ACCESS_KEY=シークレットアクセスキー
SET AWS_DEFAULT_REGION=region名
SET AWS_DEFAULT_OUTPUT=出力形式
こちらを参考しました、
【AWS】CLIの初期設定について(認証情報とコマンド補完
認証情報がバッチコマンドにベタに書いてあるので、イマイチですが、
それで上手くいったので、とりあえず良しとします。