Amazon Elastic Compute Cloud (Amazon EC2) インスタンスが再起動するたびに、ユーザーデータを使用してファイルを作成したいのですが、どうすればいいですか?

デフォルトでは、ユーザーデータスクリプトと cloud-init ディレクティブは、インスタンスが起動される最初の起動サイクル中にのみ実行されます。ただし、MIME マルチパートファイルを使用して、ユーザーデータスクリプトと cloud-init ディレクティブを設定できます。MIME マルチパートファイルを使用すると、cloud-init パッケージでユーザーデータが実行される頻度をスクリプトで変更できます。その後、ファイルはユーザースクリプトを実行します。

警告: この手順を開始する前に、以下の点に注意してください。

1.    セキュリティ上の理由から、ModifyInstanceAttribute API を介してユーザーデータを追加または削除できるユーザーを制限する IAM ポリシーを作成します。

2.    [Amazon EC2 コンソール] を開きます。

3.    インスタンスを停止してください

4.    [アクション]、[インスタンス設定] を選択し、次に [ユーザーデータの表示/変更] を選択します。

5.    ユーザースクリプトを [ユーザーデータの表示/変更] ダイアログボックスにコピーして、[保存] を選択します。

次の例は、「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
--//

デフォルトでは、cloud-init はユーザーデータに一度に 1 つのコンテンツタイプのみ許可します。ただし、この例では、MIME マルチパートファイル内の text/cloud-configtext/x-shellscript の両方の content-types を示しています。

text/cloud-config コンテンツタイプは、[SCRIPTS-USER] パラメータを [ALWAYS] に設定することによって、cloud-init パッケージでユーザーデータが実行される頻度をオーバーライドします。

text/x-shellscript コンテンツタイプは、cloud-init cloud_final_modules モジュールによって実行される実際のユーザースクリプトを提供します。この場合、実行される行は 「/bin/echo "Hello World." >> /tmp/testfile.txt」の 1 行だけです。この行を、インスタンスの起動中に実行するシェルスクリプトに置き換えます。

6.    EC2 インスタンスを再起動して/tmp/testfile.txt ファイルが作成されたことを確認します。


このページは役に立ちましたか? はい | いいえ

AWS サポート ナレッジ センターに戻る

サポートが必要ですか? AWS サポートセンターをご覧ください。

公開日: 2017 年 8 月 11日

更新日: 2019 年 1 月 29 日