2017-09-01 70 views
0

我需要定期複製EC2實例中存在的日誌到S3存儲桶。所以我使用Amazon cli和crontab來安排它。 在crontab -e,我添加以下行AWS - 通過cron複製EC2日誌到S3

* * * * * aws --version >> /tmp/out.txt 2&>1 
* * * * * aws s3 cp log_file_path s3://bucket >> /tmp/out.txt 2&>1 

首先聲明,我只是用來檢查AWS,因爲我是新來這個這是每分鐘重定向AWS版本文件CLI工作正常。

第一個命令工作正常,但第二個命令沒有。如果我單獨運行aws s3 cp命令,那麼它運行正常,即將日誌文件複製到s3存儲桶。但不與cron的工作,如上面提到的,

通過日誌才知道,我得到下面的錯誤:

Upload failed....An error occurred (AccessDenied) when calling the PutObject operation : Access Denied. 

可有人請指出如何使其發揮作用。

+0

https://serverfault.com/questions/614890/cant-run-aws-cli-from-cron-credentials –

+0

添加記錄到第二線也 –

+0

@DusanBajic - 更新 – Anand

回答

2

我猜你已將AWS憑據設置爲EC2用戶帳戶中的環境變量。 cron作業不能'訪問這些環境變量,這就是爲什麼你需要將它們移動到~/.aws/credentials

但是通過IAM角色更好的選擇是assign the permissions to the EC2 instance directly

0

第一步是創建具有正確權限的EC2角色,以便s3操作可行。 因此aws cli配置不需要。

然後創建將執行上傳或任何aws相關操作的腳本,並最後添加cron命令。

考慮從安全和管理角度創建ec2角色爲強制角色。