2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

EC2の起動時にPythonのスクリプトを実行

Last updated at Posted at 2021-04-16

やりたいこと

  • S3へのファイルアップロードをトリガーに、AWS上でかなり重たい処理(動画処理)をさせたい
  • しかし、LambdaだとTimeOutやメモリ不足が心配
  • そこで、LambdaでEC2を起動させて、起動時にPythonのスクリプトを自動で実行させる

※Pythonに限らず何でも実行できます。

ファイル構造

/home/ec2-user/
└── environment
    ├── main.py
    └── start_function.sh

/etc/init.d/
└── start
  • (任意)ホームディレクトリ(/home/ec2-user)にenvironmentというディレクトリを作る
  • 自動実行させたいpythonスクリプトmain.py
  • pythonスクリプトを実行させるためのシェルスクリプトstart_function.sh
  • EC2の起動時にシェルスクリプトを実行させるためのstart

※ファイル名やディレクトリ名は自分で好きに変えてください

本編

pythonスクリプトを実行させるshellスクリプト

sudo vim /home/ec2-user/environment/start_function.sh

以下をコピペ

#!/bin/bash

nohup /usr/local/src/pyenv/shims/python /home/ec2-user/environment/main.py &

exit 0

起動時にshellスクリプトを実行させるためのファイル

sudo vim  /etc/init.d/start

以下をコピペ

#!/bin/sh
# chkconfig: 345 99 10
# description: start_function shell
case "$1" in
  start)
    su -l ec2-user -c "sh /home/ec2-user/environment/start_function.sh"
       ;;
  stop)
     /usr/bin/kill python
       echo "stop!"
       ;;
  *) break ;;
esac

権限の変更と自動起動への登録

cd /etc/init.d
sudo chmod 775  start
sudo chkconfig --add start
sudo chkconfig start on
sudo chkconfig --list start

以下のような出力が出れば完成。

start       0:off   1:off   2:on    3:on    4:on    5:on    6:off
2
2
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
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?