LoginSignup
5
5

More than 5 years have passed since last update.

aws cliを夜間バッチ処理に組み込んだら、認証エラーになった時の解決方法

Last updated at Posted at 2015-08-07

大した内容じゃないですが、備忘も兼ねて記述・・・。
よく考えてみれば、わかることだし、
こういう使い方するものではあまりないような気もするんだけど、ちょっとはまったので。

バッチについて

AWS CLI S3のCpコマンドを使って、
夜中にAmazon S3からファイルをコピーするWindowsのバッチコマンドを作った。
コマンド自体は抜粋するとこんな感じ。

s3copy.bat
for /f "delims=" %%a  in (copyList.txt) do %%a
copyList.txt
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の初期設定について(認証情報とコマンド補完

認証情報がバッチコマンドにベタに書いてあるので、イマイチですが、
それで上手くいったので、とりあえず良しとします。

5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5