2015-04-02 32 views
22

Tôi đang cố gắng truy cập một biến môi trường mà tôi đã xác định trong cấu hình Cây đậu AWS. Tôi cần truy cập nó trong tệp cấu hình trong .ebextensionshoặc trong tệp được sao chép tại chỗ trong tệp cấu hình. Tôi đã thử những điều sau đây:Truy cập các biến môi trường trong AWS Cây đậu ebextensions

container_commands: 
    update_nginx_config: 
    command: "cp .ebextensions/files/nginx/nginx.conf /etc/nginx/nginx.conf" 

Và trong tập tin nginx.conf của tôi, tôi đã cố gắng để truy cập $MYVAR, ${MYVAR}{$MYVAR}, một số trong đó đã được đề xuất herehere (sau này là trực tiếp bên trong một file config).

files: 
    "/etc/nginx/nginx.conf" : 
    mode: "000644" 
    owner: root 
    group: root 
    content: | 
     $MYVAR ${MYVAR} {$MYVAR} 

Điều này không có tác dụng. Trong mọi trường hợp, tên biến chỉ là đầu ra như $MYVAR, vì vậy Beanstalk không nhận ra các biến của tôi. Tôi tìm thấy dưới đây trong AWS documentation về container_commands:

Họ cũng có quyền truy cập vào biến môi trường như thông tin an ninh AWS của bạn.

Điều này thật tuyệt, nhưng không nói cách.

Làm cách nào để truy cập biến môi trường có ebextensions, có thể là trong tệp cấu hình hoặc trong một tệp riêng biệt được sao chép tại chỗ không?

Cảm ơn bạn trước!

Trả lời

35

tôi đã tìm đến sự hỗ trợ kỹ thuật của Amazon cho một câu trả lời cho câu hỏi này, và đây là câu trả lời của họ:


Đáng tiếc là các biến không có sẵn trong ebextensions trực tiếp. Lựa chọn tốt nhất để làm điều đó là bằng cách tạo ra một kịch bản mà sau đó được chạy từ lệnh chứa như thế này:

files: 
    "/home/ec2-user/setup.sh": 
    mode: "000755" 
    owner: root 
    group: root 
    content: | 
     #!/bin/bash 

     # Commands that will be run on containter_commmands 
     # Here the container variables will be visible as environment variables. 

container_commands: 
    set_up: 
    command: /home/ec2-user/setup.sh 

Vì vậy, nếu bạn tạo một kịch bản shell và gọi nó thông qua một lệnh container, sau đó bạn sẽ có quyền truy cập vào các biến môi trường trong kịch bản lệnh shell của bạn như sau: $ENVIRONMENT_VARIABLE. Tôi đã thử nghiệm này, và nó hoạt động. Tùy thuộc vào trường hợp sử dụng của bạn, bạn có thể phải thay đổi cách tiếp cận của bạn một chút (ít nhất là tôi đã làm), nhưng nó là một giải pháp làm việc. Tôi hi vọng điêu nay se giup được ai đo!

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