Reputation: 12820
I am launching a ubuntu EC2 instance with my PHP code and passing user data to it. I don't own that instance.. but they provide user level access to it.
Firstly i tried to run a particular job by passing user data, but it did not seem to work.
I made it very simple and send "touch test.txt" as user data. The instance was launched properly but the file was not created as should be i guess.
Am I missing any step? I checked that file was not created using ssh 'ing to the instance. One thing was i was not in root user at instance. Will that effect anything?
<?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());
?>
Thanks for the help Eric
Upvotes: 0
Views: 1550
Reputation: 22407
If you are trying to run your code as a user-data script, then you need to start the user data with the two characters #!
For example, your touch command might be:
#!/bin/bash
touch /tmp/hello-world.txt
I'm not a PHP programmer, but I think this might work based on my research:
#!/usr/bin/php
<?php
[...your code here...]
?>
Here's the article where I introduced the concept of user-data scripts:
This has been incorporated into Ubuntu's cloud-init package which is used by a number of AMI distros including Ubuntu and Amazon Linux.
cloud-init has some more flexible ways of specifying things at startup, but the shabang (#!) method is a simple way to run any script at first boot.
Upvotes: 2