9
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AWS EC2でNode.jsを自動起動

Last updated at Posted at 2024-01-10

はじめに

Node.jsで作成したWebRTCのSignaling ServerをAWS EC2(Amazon Linux 2023)で自動実行する際に課題に直面しました。
その解決手順を以下にまとめました。
読んでいただいた方が少しでも参考になれば幸いです。

こんな人に読んでほしい

  • EC2+Node.jsを使った環境を構築したい方
  • AWSを学びたい方

前提条件

  • EC2+Node.js環境が作成済であること

やりたいこと

Node.jsの手動実行の例
$ node signaling_server.js

これをEC2インスタンス起動時に自動実行する。

EC2のユーザーデータ作成手順

①EC2インスタンスを停止する。

②EC2インスタンスから「アクション」-「インスタンスの設定」-「ユーザーデータを編集」を実行する。
image.png

③下記画面からユーザーデータを入力する。
image.png

ユーザーデータ入力内容

ユーザーデータはデフォルトでは初回起動時のみ実行されるので、再起動時にも実行されるように以下のコマンドを入力します。

Content-Type: multipart/mixed; boundary="//"
MIME-Version: 1.0

--//
Content-Type: text/cloud-config; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="cloud-config.txt"

#cloud-config
cloud_final_modules:
- [scripts-user, always]

--//
Content-Type: text/x-shellscript; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="userdata.txt"

#!/bin/bash
ここにユーザーコマンドを記入
--//--

ユーザーコマンドは次の通りです。

runuser -l ec2-user -c "node /home/ec2-user/hogehoge/signaling_server.js"

これで、rootユーザーで実行されるユーザーデータがec2-userユーザーで実行されます。

ご参考

この手順に進む前に、foreverを使用してNode.jsをデーモン化する方法も検討しました。
詳細はforeverメモをご覧ください。
しかし、現在のNode.jsのバージョンにはforeverが対応していないようです。
Node.jsのバージョンをv13.13.0に下げるとエラーがなくなるようですが、現在のバージョンは次の通りです。

$ node --version
v20.10.0

このため、現状では諦めることにしました。

9
1
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
9
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?