2016-03-21 34 views
1

Amazon S3 kullanan bir oyun çerçevesi java uygulamasına sahibim ve yapılandırmalarda gizli ve erişim anahtarlarımı ayarlamak istemiyorum, ancak bunu yapmak için ortam değişkenine kaydetmek istiyorum daha güvenli. anahtar ise ortam değişkenleri düzgün kaydetmek vermedi, yani null erişmekMac OsX üzerinde ortam değişkeni ayarlanamıyor

import com.amazonaws.auth.AWSCredentials; 
import com.amazonaws.auth.BasicAWSCredentials; 
import com.amazonaws.services.s3.AmazonS3; 
import com.amazonaws.services.s3.AmazonS3Client; 
import com.google.inject.Inject; 
import play.Application; 
import play.Logger; 
import play.Plugin; 

public class S3Plugin extends Plugin { 

    public static final String AWS_S3_BUCKET = "aws.s3.bucket"; 
    public static final String AWS_ACCESS_KEY = "aws.access.key"; 
    public static final String AWS_SECRET_KEY = "aws.secret.key"; 
    private final Application application; 

    public static AmazonS3 amazonS3; 

    public static String s3Bucket; 

    @Inject 
    public S3Plugin(Application application) { 
     this.application = application; 
    } 

    @Override 
    public void onStart() { 
     String accessKey = application.configuration().getString(AWS_ACCESS_KEY); 
     String secretKey = application.configuration().getString(AWS_SECRET_KEY); 
     s3Bucket = application.configuration().getString(AWS_S3_BUCKET); 

     if ((accessKey != null) && (secretKey != null)) { 
      AWSCredentials awsCredentials = new BasicAWSCredentials(accessKey, secretKey); 
      amazonS3 = new AmazonS3Client(awsCredentials); 
      amazonS3.createBucket(s3Bucket); 
      Logger.info("Using S3 Bucket: " + s3Bucket); 
     } 
    } 

    @Override 
    public boolean enabled() { 

     System.out.println("ACCESSKEY "+ application.configuration().keys().contains(AWS_ACCESS_KEY)); 

     return (application.configuration().keys().contains(AWS_ACCESS_KEY) && 
       application.configuration().keys().contains(AWS_SECRET_KEY) && 
       application.configuration().keys().contains(AWS_S3_BUCKET)); 
    } 

} 

ve yöntem enabled() baskılar:

ben bu eklentiyi var.

Ben komutuyla atom .bash_profile ile .bash_profile (/Users/me/.bash_profile) açıldı ve şu yapıştırılan:

export AWS_ACCESS_KEY=myAccessKey 
export AWS_SECRET_KEY=mySecretKey 

ve onu kurtardı. Bundan sonra, ortam değişkenlerimi listeleyen printenv komutunu çalıştırdım ancak AWS_ACCESS_KEY ya da AWS_SECRET_KEY orada yoktu.

Neyi yanlış yapıyorum?

+0

Bu soru konuyla ilgili, ancak Süper Kullanıcı'da daha iyi bir yanıt almanız olasıdır. – chrylis

cevap

2

Sen çalıştırmak isteyebilirsiniz: etkileşimli giriş modunda başladığı

source /Users/me/.bash_profile 

bash_profile sadece bash tarafından kaynaklı.

+0

Yaptım, şimdi printenv komutunu çalıştırdıktan sonra tuşlar gösteriliyor ama java uygulaması hala okunmuyor. – xpg94

+0

Aslında çalışıyor. Yapmam gereken şey, bu komutu çalıştırmak ve bundan sonra, aynı terminal sekmesinde, aktivatör çalıştırmayı kullanmaktır ve sonra değişkenleri düzgün okur. – xpg94