2012-05-24 30 views
8

Tôi đang cố gắng tải dữ liệu người dùng vào Ubuntu 12.04 LTS AMI (ami-a29943cb, nhưng tôi đã thử một số khác không có kết quả) qua ec2.run_instances của boto (..., user_data = USER_DATA). Tương tự, tôi đã không thành công với việc cung cấp dữ liệu người dùng theo cách thủ công trong khi khởi chạy các cá thể thông qua bảng điều khiển AWS. Không có kết quả hoặc tin nhắn trong/var/logs/syslog cho bất kỳ phương pháp nào tôi đã thử.Ubuntu AMI không tải dữ liệu người dùng

USER_DATA trông giống như sau, đọc như là một chuỗi từ một tập tin:

#!/usr/bin/env python 

import boto 

AWS_BOOTSTRAP_BUCKET = '' 
AWS_ACCESS_KEY_ID  = '' 
AWS_SECRET_ACCESS_KEY = '' 

# Pull processing script from S3. 
print 'Bootstrapping started.....' 
print 'Connecting to S3...' 
s3  = boto.connect_s3(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY) 
bucket = s3.get_bucket(AWS_BOOTSTRAP_BUCKET) 
print 'Downloading bootstrap file...' 
key = bucket.get_key('xxx') 
key.get_contents_to_filename('xxx') 

print 'Importing Bootstrap file...' 
import xxx 
xxx.process() 

# Shut down the EC2 instance running this process. 
print 'Shutting down this instance...' 
import socket 
desired_hostname = socket.gethostname() 
ec2 = boto.connect_ec2(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY) 
reservations = ec2.get_all_instances() 
for reservation in reservations: 
    for instance in reservation.instances: 
     if desired_hostname in instance.private_dns_name: 
      instance.terminate() 

Tôi đã hơn nữa cố gắng tải lên các tập tin vào một xô S3 công cộng và tải nó theo cách này, một lần nữa để không avail:

#include 
https://s3.amazonaws.com/bucket/file.py 

Có ai có lời khuyên nào về vấn đề này không? Tôi hoàn toàn hiểu nhầm mục đích của dữ liệu người dùng/đám mây-init hay là công nghệ chỉ bị phá vỡ trong AMI mà tôi đang cố gắng sử dụng?

+1

Bạn đã thử cái này chưa? 'Mẹo: Nếu bạn thêm set -x ở trên cùng của một tập lệnh bash, thì nó sẽ xuất ra mọi lệnh được thi hành. Nếu bạn thêm set -e vào tập lệnh, thì tập lệnh dữ liệu người dùng sẽ thoát trên lệnh đầu tiên không thành công. Những điều này giúp bạn nhanh chóng xác định nơi mà các vấn đề có thể đã bắt đầu.' [nguồn] (http://alestic.com/2009/06/ec2-user-data-scripts) – Daan

Trả lời

11

Thật khó để biết những gì đã xảy ra mà không có một thông báo lỗi, nhưng có một vài nơi bạn có thể xem xét:

  1. File /var/log/cloud-init.log thường sẽ chứa bất kỳ lỗi nào (ví dụ như boto suy nhập khẩu) đã xảy ra trong dụ bootstrapping .
  2. Thư mục /var/lib/cloud/instance sẽ chứa tập lệnh thô và dữ liệu người dùng được tải xuống ví dụ
  3. Bạn có thể xem/chỉnh sửa USER_DATA bên trong bảng điều khiển AWS bằng cách nhấp chuột phải vào thể hiện để xem liệu có đúng không.

Tìm kiếm những địa điểm này sẽ giúp cung cấp sự rõ ràng.

Tôi biết Ubuntu 12.04 đi kèm với boto 2.2.2:

[email protected]:/var/lib/cloud/instance# python 
Python 2.7.3 (default, Apr 20 2012, 22:44:07) 
[GCC 4.6.3] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import boto 
>>> boto.__version__ 
'2.2.2' 

..nhưng tôi tự hỏi, nếu nó thực sự dễ tiếp cận ở PYTHONPATH của bạn khi chạy.

+0

Cảm ơn bạn đã cho lời khuyên tuyệt vời. Nó chắc chắn sẽ là vô giá đối với các nhà phát triển trong tương lai. Vấn đề của tôi là Ubuntu AMI, vì một lý do nào đó, không tải bất kỳ dữ liệu người dùng nào. Tuy nhiên, AMI của Amazon đã tải dữ liệu chính xác. – kfr2

+0

Tôi thiên vị đối với Ubuntu so với các bản phân phối dựa trên Redhat như AMI của Amazon (các gói tốt hơn, di sản Debian, v.v.) - nhưng với từng gói riêng của họ. Điều quan trọng là bạn có nó làm việc! :) – gabrtv

+0

Trong trường hợp của tôi trên Ubuntu 16 LTS /var/log/cloud-init-output.log đã cung cấp cho tôi thông tin bổ sung để giải quyết vấn đề của tôi về các tập lệnh tải dữ liệu người dùng thực thi. – user1811107

Các vấn đề liên quan