0
0

More than 1 year has passed since last update.

【EC2の再起動時にスクリプトを毎回実行するにはMIME-MULTIPART形式でかけばいい。】

Last updated at Posted at 2022-01-27

今回はEC2を毎回起動するたびに実行しなければいけないコマンドを自動で実行してくれるようにしていきます。
やり方としては、「AmazonLinuxのUserDataにシェルスクリプトかcloud-configで書き込んでいく」らしいです。そもそもUserDataとは、「Linux インスタンスの起動時に実行するコマンド」を指定できる項目のこと」です。(以下参照)

ユーザーデータはマネジメントコンソールから編集できます。(なぜか調べてもcli経由の記事ばかりだったけど)
停止中のインスタンスを選択 → アクション → インスタンスの設定 → ユーザーデータを編集
以下のような画面になる。「ユーザーデータをここに配置」のところにbashスクリプトを書いていけば、初回起動時のみ実行されるスクリプトになる。

975F530F-F18E-43DA-B385-1DF441FECAEA_1_201_a.jpeg

ここにMIME-MULTIPART形式で書いていけば再起動するたびに実行されるスクリプトになる。

MIME-MULTIPART形式とは?
MIME TYPEのひとつで、application/gzipやtext/html、image/jpegなどのような、タイプ/サブタイプで決められた文書やファイルの形式の型を決めるやつらの仲間ということらしい。
multipart/form-data ← このように表す。
(multipart/form-dataは二重ダッシュ - で始まる文字列によって区切られる)

以下のtextをユーザーデータ項目に貼り付ければ、再起動ごとに
/bin/echo "Hello World" >> /tmp/testfile.txtが実行されるスクリプトになる。

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
/bin/echo "Hello World" >> /tmp/testfile.txt
--//--

(以下参照)

0
0
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
0
0