2

インスタンスの起動中にスクリプトを渡すことはできますか?インスタンスが初期化されると、そのスクリプトを実行するようにするには?

public static void startInstance(final String instanceId) {
    StartInstancesRequest startRequest = new StartInstancesRequest().withInstanceIds(instanceId);
    logger.info(String.format("Starting instance '%s':...", instanceId));
    ec2.startInstances(startRequest);       
}

何か案が?スクリプトは、インスタンスの準備ができたらすぐに実行する必要がある一種の起動スクリプトになります。前もって感謝します。

4

2 に答える 2

5

私は2009年にコミュニティUbuntuAMIにユーザーデータスクリプトの概念を導入しました(RightScaleのいくつかのアイデアの簡略版)。

http://alestic.com/2009/06/ec2-user-data-scripts

要約すると、次のようになります。

インスタンスuser-dataが2文字で始まる場合、インスタンス#!は最初の起動時にrootユーザーとしてそれを実行します。

この機能は、後でCloudInitパッケージの公式UbuntuAMIに含まれていました。

https://help.ubuntu.com/community/CloudInit

Amazonは、CloudInitパッケージを独自のAmazonLinuxAMIに含めるようになりました。

http://docs.amazonwebservices.com/AWSEC2/latest/UserGuide/AmazonLinuxAMIBasics.html

他のディストリビューションは、AMIにこの機能を含めることができます(すでに含まれている可能性があります)。

于 2012-10-26T00:15:48.230 に答える
0

Userdataを使用して、スクリプトを新しいEC2インスタンスに渡すことができますが、既存のインスタンスを開始してデータを渡すことができるかどうかはわかりません。

ルートドライブにスクリプトが保存されている事前構成済みのAMIがあります。このスクリプトは、サーバーを構成し、最新のソースをダウンロードするために使用されます。

したがって、リクエストは次のようになります。

var runInstance = new RunInstancesRequest();

        runInstance.WithImageId("{ami-id}")
            .WithInstanceType("{size}")
            .WithMaxCount(1)
            .WithMinCount(1)
            .WithSecurityGroup("{the security group}")
            .WithKeyName("{your key}")
            .WithUserData(Convert.ToBase64String(Encoding.ASCII.GetBytes(userData)));

        ec2.RunInstances(runInstance);

ユーザーデータには、スクリプトへの参照またはスクリプト自体のいずれかを含めることができます。

于 2012-10-25T22:58:02.747 に答える