IAMロールをアタッチしたEC2で、cronからシェルスクリプト実行でハマった話。
環境
- RHEL7.7
- aws cli/1.18.8
- IAMロール(S3アップロード権限有)
やりたいこと
cronからS3アップロード処理を記載したシェルスクリプトを実行し、EC2にあるデータをS3にアップロードしたい。
エラー内容
EC2にSSHでログインし手動でシェルスクリプトを実行可能だが
cronから実行すると「aws コマンドが見つかりません」でエラーとなる。
解決方法
- whichコマンドでAWS CLIのフルパスを確認し、コマンドはフルパスで記載する。
- シェルスクリプトの冒頭の呼び出しシェルに「-l」オプションを追加
sample.sh
# !/bin/bash -l
/usr/local/bin/aws s3 cp ローカルファイルパス S3バケット