2014-01-03 4 views
0

У меня есть вопрос AWS: У меня есть приложение, работающее на Beanstalk. У меня две среды: XXX-LIVE и XXX-TEST.Получить текущее название среды

Я хотел бы знать, как получить имя среды с помощью SDK, так как я хочу указать на тестовую базу данных, если код работает в среде XXX-TEST?

До сих пор я нашел метод .RetrieveEnvironmentInfo() объекта AWSClientFactory.CreateAmazonElasticBeanstalkClient();

Но для этого требуется указать имя/идентификатор среды.

Может ли кто-нибудь помочь?

ответ

0

Вы можете добавить пользовательский параметр "environment-name" в обе среды. Задайте значение для имени среды или просто укажите «тест» или «производство».

enter image description here

Если URL доступа к базе данных является единственным различием между ними, а затем установить URL в качестве параметра, и вы будете в конечном итоге с одинаковым кодом без каких-либо ветвей.

Более подробную информацию о настройке можно найти здесь: Customizing and Configuring AWS Elastic Beanstalk Environments

+0

Большое спасибо за быстрый ответ! –

2

Вот как мы делаем это для нашего приложения в Ruby:

def self.beanstalk_env 
    begin 
     uuid = File.readlines('/sys/hypervisor/uuid', 'r') 
     if uuid 
     str = uuid.first.slice(0,3) 
     if str == 'ec2' 
      metadata_endpoint = 'http://169.254.169.254/latest/meta-data/' 
      dynamic_endpoint = 'http://169.254.169.254/latest/dynamic/' 
      instance_id = Net::HTTP.get(URI.parse(metadata_endpoint + 'instance-id')) 
      document = Net::HTTP.get(URI.parse(dynamic_endpoint + 'instance-identity/document')) 
      parsed_document = JSON.parse(document) 
      region = parsed_document['region'] 
      ec2 = AWS::EC2::Client.new(region: region) 
      ec2.describe_instances({instance_ids:[instance_id]}).reservation_set[0].instances_set[0].tag_set.each do |tag| 
      if tag.key == 'elasticbeanstalk:environment-name' 
       return tag.value 
      end 
      end 
     end 
     end 
    rescue 

    end 
    'No_Env' 
    end 

вашего экземпляра IAM-политики должны позволить ec2: описать:

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
    { 
     "Action": [ 
     "ec2:Describe*" 
     ], 
     "Effect": "Allow", 
     "Resource": "*" 
    } 
    ] 
} 
Смежные вопросы