すべてのプロダクト
Search
ドキュメントセンター

Elastic Compute Service:ユーザーデータを使用したインスタンスの初期化

最終更新日:Aug 21, 2026

Elastic Compute Service (ECS) インスタンスの作成時に、Nginx や Docker などのソフトウェアのプレインストールやホスト名の変更など、システム設定や特定のビジネススクリプトの実行を行いたい場合は、[ユーザーデータ] パラメーターを使用します。

カスタムデータの概要

ユーザーデータは、インスタンスにアップロードして初期化や設定タスクを実行するためのスクリプト、命令、または設定ファイルで構成されます。たとえば、インスタンスの初回起動時に、サービス起動スクリプトの自動実行、ソフトウェアのインストール、ログの出力などが可能です。ユーザーデータは、インスタンスの初回起動時に自動的に実行されます。一部のユーザーデータ形式では、Linux インスタンスが起動するたびに実行することもサポートされています。詳細については、「ユーザーデータの形式と実行頻度」をご参照ください。

制限事項

  • インスタンスは Virtual Private Cloud (VPC) 内にある必要があります。

  • インスタンスはパブリックイメージ、またはパブリックイメージから作成されたカスタムイメージを使用する必要があります。オペレーティングシステムは、次のいずれかである必要があります。

    • Alibaba Cloud Linux、CentOS、CentOS Stream、Ubuntu、SUSE Linux Enterprise Server、Red Hat Enterprise Linux、OpenSUSE、Debian、AlmaLinux、Rocky Linux、または Fedora

    • Windows Server 2008 R2 以降

  • 旧世代のインスタンスタイプのうち、ユーザーデータ機能をサポートするのは I/O 最適化インスタンスのみです。この機能は、非 I/O 最適化インスタンスではサポートされていません。詳細については、「旧世代のインスタンスタイプ」をご参照ください。

インスタンス作成時のユーザーデータの使用

1. カスタムデータの準備

インスタンスの初期化中、初期化ツールは指定されたユーザーデータを読み取ってカスタム設定を実行します。Linux インスタンスと Windows インスタンスでは、異なる初期化ツールが使用されます。これらのツールは、複数のユーザーデータ形式をサポートしています。データ形式とその実行頻度の詳細については、次のセクションをご参照ください。

カスタムデータの形式と実行頻度

Linux インスタンス

Linux インスタンスは、cloud-init コンポーネントを使用して初期化アクションを実行します。インスタンスが初回起動かどうかによって、実行される設定が異なります。古いイメージバージョンを使用する一部のインスタンスでは、初期化に Upstart ジョブ も使用されます。

cloud-init ツールは、User-Data や Cloud-Config 形式など、インスタンスを直接設定できるユーザーデータタイプをサポートしています。また、他のユーザーデータ形式もサポートしています。最も一般的な形式は、Include ファイル と Gzip 圧縮コンテンツ です。cloud-init ツールに加えて、古いイメージバージョンを使用する一部のインスタンスでは、初期化に Upstart ジョブ も使用されます。

説明
  • ユーザーデータの形式の詳細については、cloud-init ドキュメントの「User-Data Formats」をご参照ください。

  • User-Data スクリプト、Cloud-Config データ、または Include ファイルのサイズが 32 KB を超える場合は、データタイプとして Gzip 圧縮コンテンツ を選択してください。

  • インスタンスが起動するたびにタスクを実行する必要がある場合は、データタイプとして Cloud-Config データ または Upstart ジョブ を選択してください。

User-Data スクリプト

  • 概要

    User-Data スクリプトが Linux インスタンスに渡されると、シェルスクリプトとして実行されます。スクリプトは、インスタンスの初回起動時に 1 度だけ実行されます。

  • 実行頻度

    • インスタンスの起動:インスタンスの初回起動時に 1 度だけ実行されます。インスタンスの再起動時には再実行されません。

    • オペレーティングシステムの置換:自動的に実行されます。

    • システムディスクの再初期化:自動的に実行されます。

    重要

    次の場合、スクリプトは自動的に実行されません。

    • ソースインスタンスから作成されたカスタムイメージを使用してオペレーティングシステムを置換する場合、システムはインスタンスが初回起動ではないと判断し、スクリプトを実行しません。

    • カスタムイメージを使用してインスタンスを作成する場合、インスタンスのシステムディスクにはすでにデータが含まれています。システムディスクを初期化する際、システムはインスタンスが初回起動ではないと判断し、スクリプトを実行しません。

  • 形式

    最初の行はシバン (#!) で始める必要があります。

  • User-Data スクリプトのサンプル

    • カスタムスクリプトの実行

      #!/bin/sh
      echo "Hello World. The time is now $(date -R)!" | tee /root/userdata_test.txt

      このサンプルの User-Data スクリプトは、インスタンスの初回起動時にシステム時刻を userdata_test.txt ファイルに書き込みます。

    • ソフトウェアソース、DNS 設定、時刻同期サービスのカスタマイズ

      インスタンスを作成する際、User-Data スクリプトを使用して、インスタンスのソフトウェアソース、DNS 設定、および時刻同期サービスをカスタマイズできます。次の例では CentOS Stream 9 を使用しています。ご使用のオペレーティングシステムに適した設定に置き換えてください。

      重要

      システムは、インスタンスの起動時にデフォルトの yum リポジトリ、Network Time Protocol (NTP) サービス、および DNS サービスを自動的に設定します。ユーザーデータを使用して、デフォルトの yum リポジトリ、NTP サービス、および DNS サービスを変更できます。次の点にご注意ください。

      • yum リポジトリをカスタマイズした場合、Alibaba Cloud は yum リポジトリのサポートを提供しなくなります。

      • NTP サービスをカスタマイズした場合、Alibaba Cloud は時刻同期サービスを提供しなくなります。

      #!/bin/sh
      # DNS の変更
      echo "nameserver 114.114.114.114" | tee /etc/resolv.conf
      # yum リポジトリの変更と更新
      cp /etc/yum.repos.d/centos.repo /etc/yum.repos.d/centos.repo.bak
      cp /etc/yum.repos.d/centos-addons.repo /etc/yum.repos.d/centos-addons.repo.bak
      sed -i "s@http://mirrors.cloud.aliyuncs.com/centos-stream/@https://mirror.stream.centos.org/@g" /etc/yum.repos.d/centos.repo
      sed -i "s@http://mirrors.cloud.aliyuncs.com/centos-stream/@https://mirror.stream.centos.org/@g" /etc/yum.repos.d/centos-addons.repo
      yum update -y
      # NTP サーバーの変更
      echo "server ntp1.aliyun.com" | tee /etc/ntp.conf
      systemctl restart ntpd.service
      説明

      上記のコードでは、114.114.114.114 は DNS サーバーのアドレス、https://mirror.stream.centos.org は CentOS Stream の yum リポジトリのミラーアドレス、server ntp1.aliyun.com は Alibaba Cloud の NTP サーバーアドレス です。必要に応じて置き換えてください。

      Cloud-Config データを使用して yum リポジトリを変更することもできます。ただし、この方法は柔軟性が低く、Alibaba Cloud が一部の yum リポジトリを事前設定しているケースには対応できません。User-Data スクリプトを使用することを推奨します。

    • 管理者アカウントのカスタマイズ

      デフォルトでは、Linux インスタンスは root ユーザーを管理者として使用します。ユーザーデータを使用して、別のユーザーを管理者として指定できます。

      #!/bin/sh
      useradd test-user
      echo "test-user   ALL=(ALL)        NOPASSWD:ALL" | tee -a /etc/sudoers
      mkdir /home/test-user/.ssh
      touch /home/test-user/.ssh/authorized_keys
      echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCRnnUveAis****" | tee -a /home/test-user/.ssh/authorized_keys
      説明

      サンプルの公開鍵 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCRnnUveAis**** を実際の公開鍵に置き換えてください。

説明

User-Data スクリプトの実行中に問題が発生した場合、一般的な Cloud Assistant コマンド ACS-ECS-UserData-Check-for-linux.sh を実行してエラーログを取得できます。エラーメッセージが返された場合、スクリプトの実行に失敗しています。エラーメッセージが返されない場合は、スクリプトはエラーなしで実行されたため、他の考えられる問題を調査する必要があります。一般的な Cloud Assistant コマンドの詳細については、「パブリックコマンドの表示と実行」をご参照ください。

Cloud-Config データ

  • 概要

    cloud-init は、一連の機能モジュールを使用して、ソフトウェアパッケージのインストールやネットワーク設定などのタスクを実行します。実行するモジュールとそのロジックは、ベンダーデータ、ユーザーデータ、またはカーネルパラメーターから取得できる Cloud-Config データによって決定されます。ECS インスタンスを作成する際、Cloud-Config データをカスタマイズして、実行するモジュールとタスクを指定できます。インスタンスが起動すると、cloud-init は Cloud-Config データを読み取って解析し、対応するモジュールを実行して指定された設定タスクを実行し、ECS インスタンスを自動的に設定・デプロイします。

  • 実行頻度

    • インスタンスの起動:Cloud-Config データ内のタスクが実行されるかどうかは、対応するモジュールの頻度設定によって異なります。モジュールの詳細については、「Modules」をご参照ください。

      • 頻度が once-per-instance (インスタンスごとに 1 回):インスタンスの初回起動時にのみ実行されます。たとえば、Apt や Set Passwords などのモジュールを設定した場合、頻度は once-per-instance であり、インスタンスの再起動時には実行されません。

      • 頻度が always (常に):インスタンスが起動するたびに実行されます。たとえば、Bootcmd や Update Etc Hosts などのモジュールを設定した場合、頻度は always であり、インスタンスが起動するたびに実行されます。

    • オペレーティングシステムの置換:自動的に実行されます。

    • システムディスクの再初期化:自動的に実行されます。

      重要

      次の場合、スクリプトは自動的に実行されません。

      • ソースインスタンスから作成されたカスタムイメージを使用してオペレーティングシステムを置換する場合、システムはインスタンスが初回起動ではないと判断し、スクリプトを実行しません。

      • カスタムイメージを使用してインスタンスを作成する場合、インスタンスのシステムディスクにはすでにデータが含まれています。システムディスクを初期化する際、システムはインスタンスが初回起動ではないと判断し、スクリプトを実行しません。

  • 形式

    • 最初の行は #cloud-config でなければならず、その前にスペースを入れることはできません。

    • 内容は YAML 構文で記述する必要があります。

  • Cloud-Config データのサンプル

    • インスタンスのソフトウェアソースのカスタマイズ

      [ユーザーデータ] セクションに、以下の内容を入力して、カスタムのインスタンスソフトウェアソースを設定します。この例では、Ubuntu イメージを使用してインスタンスを作成しています。異なるイメージを使用する場合は、適切なモジュールの内容に設定を置き換えてください。

      #cloud-config
      apt:
        preserve_sources_list: false
        disable_suites:
          - $RELEASE-updates
          - backports
          - $RELEASE
          - mysuite
        primary:
          - arches:
              - amd64
              - i386
              - default
            uri: http://us.archive.ubuntu.com/ubuntu
    • Nginx サービスの自動インストールの設定

      [ユーザーデータ] セクションに、以下の内容を入力して、インスタンスが Nginx サービスを自動的にインストールするように設定します。

      #cloud-config
      packages: 
       - nginx 
      runcmd: 
       - systemctl start nginx.service
    • カスタムホスト名の設定

      [ユーザーデータ] セクションに、以下の内容を入力して、カスタムホスト名を設定します。

      #cloud-config
      hostname: my-instance
      fqdn: my-instance.localdomain
    • カスタムスクリプトの自動実行の設定

      [ユーザーデータ] セクションに、以下の内容を入力して、インスタンスが起動するたびにシェルスクリプトが自動的に実行されるように設定します。

      #cloud-config
      bootcmd:
      - echo "Hello World. The time is now $(date -R)!" | tee /root/userdata_test.txt

Include ファイル

  • 概要

    Include ファイルには、1つ以上の User-Data スクリプトまたは Cloud-Config データファイルへのリンクが含まれています。複数のリンクは改行で区切ります。インスタンスが起動すると、cloud-init は各リンクの内容を順次解析して読み取ります。リンクの内容の読み取り中にエラーが発生した場合、cloud-init は残りのリンクの読み取りを停止します。

    説明

    Alibaba Cloud Object Storage Service (OSS) を使用して、User-Data スクリプトまたは Cloud-Config データをアップロードし、リンクを取得して、リンクの有効期間を設定できます。詳細については、「OSS コンソールの使用開始」をご参照ください。

  • 実行頻度

    • インスタンスの起動:実行頻度はリンクの内容によって決まります。たとえば、リンクの内容が User-Data スクリプトの場合、インスタンスの初回起動時に 1 度だけ実行されます。リンクの内容が Cloud-Config データの場合、Cloud-Config データの実行頻度に従います。

    • オペレーティングシステムの置換:自動的に実行されます。

    • システムディスクの再初期化:自動的に実行されます。

      重要

      次の場合、スクリプトは自動的に実行されません。

      • ソースインスタンスから作成されたカスタムイメージを使用してオペレーティングシステムを置換する場合、システムはインスタンスが初回起動ではないと判断し、スクリプトを実行しません。

      • カスタムイメージを使用してインスタンスを作成する場合、インスタンスのシステムディスクにはすでにデータが含まれています。システムディスクを初期化する際、システムはインスタンスが初回起動ではないと判断し、スクリプトを実行しません。

  • 形式

    最初の行は #include でなければならず、その前にスペースを入れることはできません。

  • Include ファイルのサンプル

    #include
    https://ecs-image-test.oss-cn-hangzhou.aliyuncs.com/userdata/myscript.sh

    サンプルの Include ファイルには、スクリプトへのリンクが含まれています。このスクリプトは User-Data スクリプトであるため、インスタンスの初回起動時に 1 度だけ実行されます。

    説明

    Include ファイルまたは Gzip 圧縮コンテンツを使用する場合、ストレージサービスを使用してスクリプトをアップロードし、スクリプトリンクを取得して、リンクの有効期間を設定する必要があります。Alibaba Cloud OSS の使用を推奨します。詳細については、「OSS コンソールの使用開始」をご参照ください。

Gzip 圧縮コンテンツ

  • 概要

    User-Data スクリプト、Cloud-Config データ、または Include ファイルのサイズが 32 KB を超える場合は、Gzip 圧縮コンテンツ (.gz 形式) を使用できます。圧縮コンテンツへのリンクを作成し、そのリンクを Include ファイルに入力します。cloud-init は Gzip コンテンツを自動的に解凍します。解凍されたコンテンツを実行する効果は、元のコンテンツを直接渡して実行するのと同じです。

    説明

    Alibaba Cloud OSS を使用して、User-Data スクリプトまたは Cloud-Config データをアップロードし、リンクを取得して、リンクの有効期間を設定できます。詳細については、「OSS コンソールの使用開始」をご参照ください。

  • 実行頻度

    • インスタンスの起動:スクリプトのタイプとモジュールのタイプによって決まります。たとえば、Gzip 圧縮コンテンツへのリンクが User-Data スクリプト用の場合、インスタンスの初回起動時に 1 度だけ実行されます。

    • オペレーティングシステムの置換:自動的に実行されます。

    • システムディスクの再初期化:自動的に実行されます。

      重要

      次の場合、スクリプトは自動的に実行されません。

      • ソースインスタンスから作成されたカスタムイメージを使用してオペレーティングシステムを置換する場合、システムはインスタンスが初回起動ではないと判断し、スクリプトを実行しません。

      • カスタムイメージを使用してインスタンスを作成する場合、インスタンスのシステムディスクにはすでにデータが含まれています。システムディスクを初期化する際、システムはインスタンスが初回起動ではないと判断し、スクリプトを実行しません。

  • 形式

    最初の行は #include でなければならず、その前にスペースを入れることはできません。

  • Gzip 圧縮コンテンツのサンプル

    #include
    https://ecs-image-test.oss-cn-hangzhou.aliyuncs.com/userdata/myscript.gz

    この例は、Gzip 圧縮コンテンツへのリンクを含む Include ファイルを示しています。cloud-init が Gzip 圧縮コンテンツを読み取った後、自動的に解凍して実行します。Gzip コンテンツは圧縮された User-Data スクリプトであり、インスタンスの初回起動時に 1 度だけ実行されます。

Upstart ジョブ

説明

Upstart ジョブを使用するには、インスタンスに upstart サービスをインストールする必要があります。upstart サービスを使用して起動動作の管理をサポートするオペレーティングシステムには、CentOS 6、Ubuntu 10/12/14、および Debian 6/7 が含まれます。

  • 概要

    Upstart はイベント駆動型の初期化システムです。Upstart ジョブは、サービスやタスクがいつ開始、停止し、どのように実行されるかを定義する設定ファイルです。通常、.conf のファイル拡張子を付けて /etc/init/ ディレクトリに配置されます。

  • 実行頻度

    • インスタンスの起動:インスタンスが起動するたびに自動的に実行されます。

    • オペレーティングシステムの置換:自動的に実行されます。

    • システムディスクの再初期化:自動的に実行されます。

      重要

      次の場合、スクリプトは自動的に実行されません。

      • ソースインスタンスから作成されたカスタムイメージを使用してオペレーティングシステムを置換する場合、システムはインスタンスが初回起動ではないと判断し、スクリプトを実行しません。

      • カスタムイメージを使用してインスタンスを作成する場合、インスタンスのシステムディスクにはすでにデータが含まれています。システムディスクを初期化する際、システムはインスタンスが初回起動ではないと判断し、スクリプトを実行しません。

  • 形式

    最初の行は #upstart-job でなければならず、その前にスペースを入れることはできません。

  • Upstart ジョブのコンテンツのサンプル

    #upstart-job
    description "upstart test"
    start on runlevel [2345] # ランレベル 2, 3, 4, 5 で実行
    stop on runlevel [!2345] # ランレベル 2, 3, 4, 5 以外では実行しない
    exec echo "Hello World. The time is now $(date -R)!" | tee /root/output.txt

    サンプルの Upstart ジョブは、システムが指定されたランレベルに入ったときにタイムスタンプ付きのメッセージを出力し、そのメッセージを /root/output.txt ファイルに記録します。システムがこれらのランレベルを離れると、ジョブの実行は停止します。

MIME マルチパートファイル

  • 概要

    MIME マルチパートファイルは、複数の種類の命令を送信できます。たとえば、MIME マルチパートファイルを使用して、ユーザーデータに text/cloud-config (cloud-init 設定用) と text/x-shellscript (シェルスクリプト) の両方を含めることができます。cloud-init は、これらの異なる種類の命令を個別に解析して実行します。

  • 実行頻度

    • インスタンスの起動:MIME メッセージ内の各パートのタイプと cloud-init の設定によって異なります。たとえば、MIME メッセージのコンテンツタイプが User-Data スクリプトの場合、インスタンスの初回起動時に 1 度だけ実行されます。コンテンツタイプが Cloud-Config データの場合、Cloud-Config データの実行頻度に従います。

    • オペレーティングシステムの置換:自動的に実行されます。

    • システムディスクの再初期化:自動的に実行されます。

      重要

      次の場合、スクリプトは自動的に実行されません。

      • ソースインスタンスから作成されたカスタムイメージを使用してオペレーティングシステムを置換する場合、システムはインスタンスが初回起動ではないと判断し、スクリプトを実行しません。

      • カスタムイメージを使用してインスタンスを作成する場合、インスタンスのシステムディスクにはすでにデータが含まれています。システムディスクを初期化する際、システムはインスタンスが初回起動ではないと判断し、スクリプトを実行しません。

  • 形式

    • 最初の行は Content-Type: multipart/mixed; boundary="****" です。境界 (boundary) はカスタマイズ可能で、行の先頭にスペースを入れてはいけません。

    • 2 行目はバージョン MIME-Version: 1.0 を指定します。このフィールドは通常、すべての MIME メッセージで必須です。

  • MIME マルチパートファイルのサンプル

    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
    runcmd:
    - [ mkdir, /test-cloudinit ]
    write_files:
    - path: /test-cloudinit/cloud-init.txt
      content: |
        Created by cloud-init
      append: true
    
    --//
    Content-Type: text/x-shellscript; charset="us-ascii"
    MIME-Version: 1.0
    Content-Transfer-Encoding: 7bit
    Content-Disposition: attachment; filename="userdata.txt"
    
    #!/bin/bash
    mkdir test-userscript
    touch /test-userscript/userscript.txt
    echo "Created by bash shell script" >> /test-userscript/userscript.txt
    --//--

    サンプルの MIME マルチパートファイルには、cloud-init 命令と Bash シェルスクリプトが含まれています。

    • cloud-init 命令はファイル (/test-cloudinit/cloud-init.txt) を作成し、そこに Created by cloud-init と書き込みます。

    • Bash シェルスクリプトはファイル (/test-userscript/userscript.txt) を作成し、そこに Created by bash shell script と書き込みます。

Windows インスタンス

Windows インスタンスは、Vminit ツールの Plugin_Main_CloudinitUserData プラグインを使用してユーザーデータスクリプトを実行します。このプラグインは、インスタンスの初回起動時にのみスクリプトの実行をサポートしています。プラグインは、Bat と PowerShell の両方のスクリプトをサポートしています。

Bat スクリプト

  • 実行頻度

    • インスタンスの起動:インスタンスの初回起動時に 1 度だけ実行されます。インスタンスの再起動時には再実行されません。

    • オペレーティングシステムの置換:自動的に実行されます。

    • システムディスクの再初期化:自動的に実行されます。

      重要

      次の場合、スクリプトは自動的に実行されません。

      • ソースインスタンスから作成されたカスタムイメージを使用してオペレーティングシステムを置換する場合、システムはインスタンスが初回起動ではないと判断し、スクリプトを実行しません。

      • カスタムイメージを使用してインスタンスを作成する場合、インスタンスのシステムディスクにはすでにデータが含まれています。システムディスクを初期化する際、システムはインスタンスが初回起動ではないと判断し、スクリプトを実行しません。

  • 形式

    • 最初の行は [bat] でなければならず、その前にスペースを入れることはできません。

    • 半角文字のみを使用してください。余分な文字を入力しないでください。

    • C:\Users ディレクトリにデータを書き込まないでください。書き込むと、ユーザーデータの実行に失敗します。

      説明

      Windows では、C:\Users とそのサブディレクトリは、ログオン後にのみアクセスできます。ユーザーデータはログオン前のシステム初期化中に実行されるため、C:\Users への書き込みは失敗します。

  • Bat スクリプトのサンプル

    • カスタムスクリプトの実行

      [bat]
      echo "bat test" > C:\userdata_test.txt

      このサンプルの Bat スクリプトは、インスタンスの初回起動時に "bat test" を userdata_test.txt ファイルに書き込みます。

PowerShell スクリプト

  • 実行頻度

    • インスタンスの起動:インスタンスの初回起動時に 1 度だけ実行されます。インスタンスの再起動時には再実行されません。

    • オペレーティングシステムの置換:自動的に実行されます。

    • システムディスクの再初期化:自動的に実行されます。

      重要

      次の場合、スクリプトは自動的に実行されません。

      • ソースインスタンスから作成されたカスタムイメージを使用してオペレーティングシステムを置換する場合、システムはインスタンスが初回起動ではないと判断し、スクリプトを実行しません。

      • カスタムイメージを使用してインスタンスを作成する場合、インスタンスのシステムディスクにはすでにデータが含まれています。システムディスクを初期化する際、システムはインスタンスが初回起動ではないと判断し、スクリプトを実行しません。

  • 形式

    • 最初の行は [powershell] でなければならず、その前にスペースを入れることはできません。

    • 半角文字のみを使用してください。余分な文字を入力しないでください。

    • C:\Users ディレクトリにデータを書き込まないでください。書き込むと、ユーザーデータの実行に失敗します。

      説明

      Windows では、C:\Users とそのサブディレクトリは、ログオン後にのみアクセスできます。ユーザーデータはログオン前のシステム初期化中に実行されるため、C:\Users への書き込みは失敗します。

  • PowerShell スクリプトのサンプル

    • カスタムスクリプトの実行

      [powershell]
      write-output "powershell test" | Out-File C:\userdata_test.txt

      このサンプルの PowerShell スクリプトは、インスタンスの初回起動時に powershell test を userdata_test.txt ファイルに書き込みます。

2. インスタンス作成時のユーザーデータの使用

  • コンソールでのインスタンス作成

    インスタンス購入ページ で、[詳細設定] セクションを展開します。[ユーザーデータ] セクションに、ユーザーデータを入力します。

    重要

    ユーザーデータがすでに Base64 でエンコード済みの場合は、[ユーザーデータは Base64 でエンコード済み] を選択します。エンコード前の元のデータは 32 KB を超えてはなりません。プレーンテキストを入力する場合は、このオプションを選択しないでください。システムが自動的にコンテンツをエンコードします。

  • API 呼び出しによるインスタンス作成

    API を呼び出してインスタンスを作成する場合、RunInstances または CreateInstance 操作で UserData パラメーターを指定します。

3. ユーザーデータが期待どおりに実行されたことの確認

カスタムスクリプトが期待どおりに実行されたことを確認する必要があります。次の例は、Linux インスタンスに渡された User-Data スクリプトの実行を確認する方法を示しています。

#!/bin/sh
echo "Hello World. The time is now $(date -R)!" | tee /root/userdata_test.txt

この例では、User-Data スクリプトはインスタンスの初回起動時にシステム時刻を userdata_test.txt ファイルに書き込みます。スクリプトの実行を確認するには、cat userdata_test.txt コマンドを実行して結果を確認します。システム時刻が userdata_test.txt ファイルに書き込まれています。

view-result

説明

User-Data スクリプトの実行中に問題が発生した場合、一般的な Cloud Assistant コマンド ACS-ECS-UserData-Check-for-linux.sh を実行してエラーログを取得できます。エラーメッセージが返された場合、スクリプトの実行に失敗しています。エラーメッセージが返されない場合は、スクリプトはエラーなしで実行されたため、他の考えられる問題を調査する必要があります。一般的な Cloud Assistant コマンドの詳細については、「パブリックコマンドの表示と実行」をご参照ください。

その他の操作

既存インスタンスのユーザーデータの表示

ユーザーデータがインスタンスに渡された後、メタデータサービスを使用するか、コンソールでユーザーデータを表示できます。

メタデータサービスからのユーザーデータの取得 (セキュリティ強化モード)

  • Linux インスタンス

    TOKEN=`curl -X PUT "http://100.100.100.200/latest/api/token" -H "X-aliyun-ecs-metadata-token-ttl-seconds:180"`
    curl -H "X-aliyun-ecs-metadata-token: $TOKEN" http://100.100.100.200/latest/user-data
  • Windows インスタンス

    $token = Invoke-RestMethod -Headers @{"X-aliyun-ecs-metadata-token-ttl-seconds" = "180"} -Method PUT -Uri http://100.100.100.200/latest/api/token
    Invoke-RestMethod -Headers @{"X-aliyun-ecs-metadata-token" = $token} -Method GET -Uri http://100.100.100.200/latest/user-data
説明
  • 上記の例では、トークンの有効期間は 180 秒です。シナリオに応じて有効期間を調整できます。

  • この例では、メタデータサービスのセキュリティ強化モードを使用してメタデータを取得しています。メタデータサービスから情報を取得する方法の詳細については、「インスタンスメタデータ」をご参照ください。

  • メタデータの詳細については、「インスタンスメタデータ」をご参照ください。

コンソールからの取得

  1. インスタンスが [停止済み] 状態であることを確認します。

    重要

    インスタンスが従量課金で VPC 内にある場合は、インスタンスを停止する際に [停止モード] を [標準モード] に設定することを推奨します。[節約モード] を選択すると、コンピューティングリソース (vCPU とメモリ) が解放されます。その結果、在庫不足によりインスタンスが再起動に失敗する可能性があります。詳細については、「節約モード」をご参照ください。

  2. 対象のインスタンスのIDをクリックしてインスタンス詳細ページに移動します。[すべての操作] をクリックして操作パネルを展開します。 [ユーザーデータの設定] を検索してクリックします。その後、[ユーザーデータ] セクションで、設定されているユーザーデータを表示します。

API 呼び出しによる取得

DescribeUserData API を呼び出して、ECS インスタンスのユーザーデータをクエリできます。詳細については、「DescribeUserData」をご参照ください。

既存インスタンスのユーザーデータの変更

既存インスタンスのユーザーデータを変更するには、コンソール上で以下の操作を実行します。

  1. インスタンスが [停止済み] 状態であることを確認します。

    重要

    インスタンスが従量課金で VPC 内にある場合は、インスタンスを停止する際に [停止モード] を [標準モード] に設定することを推奨します。[節約モード] を選択すると、コンピューティングリソース (vCPU とメモリ) が解放されます。その結果、在庫不足によりインスタンスが再起動に失敗する可能性があります。詳細については、「節約モード」をご参照ください。

  2. 対象のインスタンスのIDをクリックしてインスタンス詳細ページに移動します。[すべての操作] をクリックして操作パネルを展開します。 [ユーザーデータの設定] を検索してクリックします。その後、[ユーザーデータ] セクションに、ユーザーデータを入力します。

重要

既存インスタンスのユーザーデータを変更した後、インスタンス起動後にユーザーデータスクリプトが実行されるかどうかは、ユーザーデータの形式と実行頻度によって異なります。ユーザーデータを変更する前に、要件を確認してください。詳細については、「ユーザーデータの形式と実行頻度」をご参照ください。

関連ドキュメント

  • Auto Scaling のユーザーデータ機能を使用して、複数の ECS インスタンスが起動時に設定済みのスクリプトやコマンドを自動的に実行させることもできます。これにより、ECS インスタンス設定の一貫性が確保され、運用保守 (O&M) が簡素化されます。詳細については、「インスタンスのユーザーデータを使用して ECS インスタンスを自動設定する」をご参照ください。

  • プログラムの例外、サーバーの再起動、または電源障害によってサービスやスクリプトが中断された場合に迅速に復旧させたい場合は、ecs-tool-servicekeepalive Cloud Assistant プラグインを使用します。詳細については、「Cloud Assistant プラグインを使用してサービスを維持する」をご参照ください。

  • インスタンスの初期化を管理する方法の詳細については、「初期化ツールの概要」をご参照ください。