Amazon EC2无法处理用户数据php

时间:2012-01-21 17:49:16

标签: php amazon-ec2

我正在使用我的PHP代码启动一个ubuntu EC2实例并将用户数据传递给它。 我不拥有该实例..但它们提供了用户级别的访问权限。

首先,我尝试通过传递用户数据来运行特定的工作,但它似乎没有用。

我做得非常简单,并将“touch test.txt”作为用户数据发送。该实例已正确启动,但文件未创建,我猜是应该。

我错过任何一步吗?我检查过该文件是不是使用ssh实现的。有一点是我不是root用户。这会影响什么吗?

<?php
error_reporting(-1);
header("Content-type: text/plain; charset=utf-8");
require_once '../sdk.class.php';
// Instantiate the class
$ec2 = new AmazonEC2();
$userdata2="touch hi".".txt";
echo $userdata2;
$response = $ec2->run_instances('ami-5f21e236', 1, 1,
array('KeyName' => 'radix2'),
array('UserData' => $userdata2),
array('InstanceType' => 'm1.small')
);
var_dump($response->isOK());
?>

感谢Eric的帮助

1 个答案:

答案 0 :(得分:1)

如果您尝试将代码作为用户数据脚本运行,则需要使用两个字符#!

启动用户数据

例如,您的触摸命令可能是:

#!/bin/bash
touch /tmp/hello-world.txt

我不是PHP程序员,但我认为这可能基于我的研究工作:

#!/usr/bin/php
<?php
[...your code here...]
?>

以下是我介绍用户数据脚本概念的文章:

  

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

这已被整合到Ubuntu的cloud-init软件包中,该软件包被许多AMI发行版(包括Ubuntu和Amazon Linux)使用。

cloud-init在启动时有一些更灵活的方法来指定事物,但shabang(#!)方法是在首次启动时运行任何脚本的简单方法。