在Amazon EC2中启动实例时传递脚本

dre*_*mer 2 cloud shell amazon-ec2 amazon-web-services

在我启动实例时是否可以传递脚本?这样实例一旦初始化就会执行该脚本?

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

任何的想法?脚本将是一种启动脚本,我需要在实例准备好后立即执行.提前致谢.

Eri*_*ond 5

我在2009年在社区Ubuntu AMIs中介绍了用户数据脚本的概念(来自RightScale的一些想法的简化版本):

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

归结为:

如果实例用户数据以两个字符开头,#!则实例在第一次引导时以root用户身份运行它.

此功能后来包含在CloudInit包中的官方Ubuntu AMI中:

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

亚马逊现在在他们自己的Amazon Linux AMI中包含CloudInit包:

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

欢迎其他发行版(并且可能已经)在其AMI中包含此功能.