2016-03-21 29 views
1

私はAmazon S3を使用するプレーフレームワークJavaアプリケーションを持っていますが、設定で自分の秘密鍵とアクセス鍵を設定したくありませんが、環境変数に保存してより安全な。キーは、私は環境変数で適切に保存していないことを意味し、nullでアクセスMac OSXで環境変数を設定できません

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)); 
    } 

} 

及び方法enabled()プリント:

私はこのプラグインを持っています。

私はコマンドatom .bash_profile.bash_profile (/Users/me/.bash_profile)を開いて、私は次のように貼り付け:

export AWS_ACCESS_KEY=myAccessKey 
export AWS_SECRET_KEY=mySecretKey 

、それを救いました。その後、printenvコマンドを実行して自分の環境変数を示しましたが、AWS_ACCESS_KEYでもAWS_SECRET_KEYもありませんでした。

私は間違っていますか?

+0

この質問はここのトピックですが、あなたはスーパーユーザーでより良い回答を得ることができます。 – chrylis

答えて

2

あなたは実行したいことがあります。対話的なログインモードで起動したときに

source /Users/me/.bash_profile 

bash_profileだけのbashによって供給されます。

+0

私はそれをしました、今私はprintenvコマンドを実行した後、キーが表示されますが、Javaアプリケーションはそれをまだ読んでいません。 – xpg94

+0

実際に動作します。私がしなければならないのは、そのコマンドを実行した後、同じターミナルタブでアクチベータを実行してから、変数を正しく読み込むことです。 – xpg94

関連する問題