Ich habe eine Play-Framework-Java-Anwendung, die Amazon S3 verwendet und ich möchte nicht meine geheimen Schlüssel und Zugriffsschlüssel in den Konfigurationen festlegen, aber ich möchte es in Umgebungsvariablen speichern, um es zu machen sicherer.Umgebungsvariable kann nicht auf Mac OsX gesetzt werden
Ich habe dieses Plugin:
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));
}
}
und Methode enabled()
Drucke, die Schlüssel zuzugreifen, ist null, was bedeutet, dass ich es nicht richtig in die Umgebungsvariablen gespeichert haben.
Ich öffnete .bash_profile (/Users/me/.bash_profile)
mit Befehl atom .bash_profile
und klebte ich folgendes: es
export AWS_ACCESS_KEY=myAccessKey
export AWS_SECRET_KEY=mySecretKey
und gespeichert. Danach lief ich printenv
Befehl, der meine Umgebungsvariablen aufgelistet, aber weder AWS_ACCESS_KEY
noch AWS_SECRET_KEY
waren dort.
Was mache ich falsch?
Diese Frage steht hier zum Thema, aber Sie erhalten wahrscheinlich eine bessere Antwort bei Super User. – chrylis