簡體   English   中英

無法在Mac OsX上設置環境變量

[英]Can not set environment variable on Mac OsX

我有一個使用Amazon S3的play framework java應用程序,我不想在配置中設置我的秘密和訪問密鑰,但是我想將其保存在環境變量中以使其更安全。

我有這個插件:

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命令atom .bash_profile打開.bash_profile (/Users/me/.bash_profile) ,並粘貼了以下內容:

export AWS_ACCESS_KEY=myAccessKey
export AWS_SECRET_KEY=mySecretKey

並保存。 之后,我運行了printenv命令,該命令列出了我的環境變量,但是AWS_ACCESS_KEYAWS_SECRET_KEY都不存在。

我究竟做錯了什么?

您可能要運行:

source /Users/me/.bash_profile

bash_profile僅在以交互式登錄方式啟動時由bash來源。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM