2012-01-21 5 views
0

PHP 코드로 우분투 EC2 인스턴스를 실행하고 사용자 데이터를 전달합니다. 나는 그 인스턴스를 소유하고 있지 않지만 그것들에 대한 사용자 레벨 액세스를 제공합니다.Amazon EC2가 사용자 데이터와 작동하지 않습니다. PHP

먼저 사용자 데이터를 전달하여 특정 작업을 실행하려고했지만 작동하지 않았습니다.

나는 매우 간단하게 만들었고 "touch test.txt"를 사용자 데이터로 보냈습니다. 인스턴스가 제대로 시작되었지만 파일이 생성되지 않았을 것입니다.

단계가 하나도 빠졌습니까? 인스턴스에 ssh를 사용하여 파일이 생성되지 않았는지 확인했습니다. 한가지는 예를 들어 루트 사용자가 아니 었습니다. 그게 효과가 있니?

<?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()); 
?> 
+0

ServerFault에서 더 좋은 답변을 얻을 수 있습니다. – ceejayoz

+1

@ceejayoz 마이 그 레이션을 언급하지 않고도 그런 언급을 남기고 [크로스 포스팅 권장] (http://serverfault.com/questions/352313/amazon-ec2-not-working-with-user-data-php) 원하는. –

+0

"[변경없이 사이트를 가로 질러 질문 복사하기는 악의적 인 행동으로 간주됩니다] (http://meta.stackexchange.com/a/75012)". 제발 그러지 마세요. 각 사이트에 대한 질문을 신중하게 수정하지 않으면 교차 게시하지 마십시오. 게시하는 경우 좋은 답변을 얻지 못하고 다른 사이트에서 더 잘 할 수 있다고 생각하고 신고하고 마이그레이션하도록 요청하십시오. – freiheit

답변

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 및 Amazon Linux를 포함한 많은 AMI 배포판에서 사용되는 Ubuntu의 cloud-init 패키지에 통합되었습니다.

cloud-init에는 시작시 사물을 지정하는 좀 더 유연한 방법이 있지만 shabang (#!) 방법은 처음 부팅 할 때 모든 스크립트를 실행할 수있는 간단한 방법입니다.

+0

당신이 말한대로 시도한 것이 거의 없습니다. $ userdata2 = "#!/bin/bash touch /tmp/hello-world."."txt "; 또한 PHP 코드를 시작하기 전에 #!/usr/bin/php를 사용합니다. EC2에 전달 된 userdata가 bash에서 실행된다는 것을 알고 싶습니까? 그렇다면 내 userdata 작동해야합니다 ..하지만 내가 말한대로 생성되는 모든 파일을 볼 수 없다, ssh에 의해 검사. – amitchhajer

+0

명령 줄 스크립트에서와 같이 개행을 포함시켜야합니다. 파일을 만들고 테스트 한 다음 파일을 사용자 데이터 파일 (사용자 데이터 문자열이 아닌)로 다시 채울 수 있습니다. –

+0

예. 감사합니다. – amitchhajer

관련 문제