詰まっているところ
EC2上のコマンド上で手動で、bash xxxx.sh
を実行すると、問題なく処理が実行できます。
しかし、同じものをcronに設定して実行すると、うまく実行されません。
cronについては、echo 1 >> ~/test.txt
という簡単な処理を実行させてたところ、正常に動作しています。
AWsCLIが入ったシェルスクリプトだと処理がcronは作動してるのですが、AWSCLIが実行されない状況です。
実行環境
amazon-linux-2
Amazon Linux 2 AMI
[ec2-user@ip-xxxxxxxxxx ~]$ bash test.sh うまく処理が実行される [ec2-user@ip-xxxxxxxxxx ~]$ crontab -e
cron
130 * * * * /home/ec2-user/test.sh 2AWSCLIが実行されない
test.shの中身は以下のとおりです。
#!/bin/sh #自動バックアップしている最新のスナップショットを取得 SNAPSHOT_NAME=`aws rds describe-db-snapshots --query "reverse(sort_by(DBSnapshots[?DBInstanceIdentifier=='xxxxxxxxxxxx'],&SnapshotCreateTime))[0].DBSnapshotIdentifier"` # s/置換条件/置換文字/ 置換条件を置換文字に変換する。最後にgを付けた場合は置換条件に当てはまるすべての文字列が置換される SNAPSHOT_NAME=`echo $SNAPSHOT_NAME | sed "s/\"//g"` #スナップショットの復元 マスキング用RDSの作成 aws rds --no-cli-pager xxxxxxxxxxxxxxxxx \ --db-snapshot-identifier $SNAPSHOT_NAME \ --db-instance-identifier "xxxxxxxxxxxxxxxx" \ --availability-zone "ap-northeast-1a" \ --db-subnet-group-name "xxxxxxxxxxxxxx" \ --vpc-security-group-ids "xxxxxxxxxxxxxx" \ --db-parameter-group-name "aws-xxxxxxx-mysql57" \ --db-instance-class db.t3.micro \ --no-multi-az \ # RDSが作成するまで待機 aws rds wait db-instance-available --db-instance-identifier "xxxxxxxxxxxxxxxxxx" [処理] # RDSからmysqlコマンドでダンプ取る処理を記載しています。 # ここの処理は実行されるのですが、AWSCLIが実行されていないため、空のダンプされたデータしかない状況です。 # DBの削除 aws rds delete-db-instance \ --db-instance-identifier "xxxxxxxxxxxxxxxx" \ --skip-final-snapshot
といった内容のものです。
ファイル権限 実行権限も付与しています。
[ec2-user@ip-xxxxxxx ~]$ ls -l test.sh -rwxrwx--x 1 ec2-user ec2-user 2387 xxxxxxx test.sh
ファイルパス クーロンの記載にはフルパスで指定しています。
[ec2-user@ip-xxxxxxx ~]$ pwd test.sh /home/ec2-user
AWSCLIはcronでは使えないのでしょうか?
何かアドバイスいただければ幸いです。
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー