在Scala源代码中隐藏变量

在Scala源代码中隐藏变量,scala,Scala,在我的scala应用程序中,我们正在与AWS交互。这是一个公司内部项目,但我们仍然需要隐藏两个参数,即密钥和访问密钥。我们的代码存在于github上,所以我不确定是否有任何可行的方法在scala中实现它?或者我们需要将它们作为scala应用程序拾取的服务器上的导出参数吗?如果是这样,我该怎么做 val hadoopConf=sc.hadoopConfiguration; hadoopConf.set("fs.s3.impl", "org.apache.hadoop.fs.s3native.Nat

在我的scala应用程序中,我们正在与AWS交互。这是一个公司内部项目,但我们仍然需要隐藏两个参数,即密钥和访问密钥。我们的代码存在于github上,所以我不确定是否有任何可行的方法在scala中实现它?或者我们需要将它们作为scala应用程序拾取的服务器上的导出参数吗?如果是这样,我该怎么做

val hadoopConf=sc.hadoopConfiguration;
hadoopConf.set("fs.s3.impl", "org.apache.hadoop.fs.s3native.NativeS3FileSystem")
hadoopConf.set("fs.s3.awsAccessKeyId",myAccessKey)
hadoopConf.set("fs.s3.awsSecretAccessKey",mySecretKey)
编辑:
我们正在redhat物理服务器上运行此应用程序,而不是在EC2上。似乎这与scala无关,有谁能给我指出一个方向来帮助我解决这个问题吗?

一种方法是使用
环境变量注入这两个值

这可以通过使用例如
typesafe配置
轻松实现

因此,您将创建一个
application.conf
文件:

AWS {
  accessKey = {$AWS_ACCESS_KEY} // env variable AWS_ACCESS_KEY
  secret = {$AWS_SECRET} // env variable AWS_SECRET
}
要在应用程序中使用此选项,您可以通过以下方式访问值:

import com.typesafe.config.ConfigFactory

conf = ConfigFactory.load()
val awsAccessKey = conf getString "AWS.accessKey"
val awsSecret = conf getString "AWS.secret"

一个很好的特性是,当未设置所需的环境变量时,代码将引发运行时异常。

一种方法是使用
环境变量注入这两个值

这可以通过使用例如
typesafe配置
轻松实现

因此,您将创建一个
application.conf
文件:

AWS {
  accessKey = {$AWS_ACCESS_KEY} // env variable AWS_ACCESS_KEY
  secret = {$AWS_SECRET} // env variable AWS_SECRET
}
要在应用程序中使用此选项,您可以通过以下方式访问值:

import com.typesafe.config.ConfigFactory

conf = ConfigFactory.load()
val awsAccessKey = conf getString "AWS.accessKey"
val awsSecret = conf getString "AWS.secret"

一个很好的特性是,当未设置所需的环境变量时,代码将抛出运行时异常。

这实际上不是scala问题;这是一个“如何在运行时将机密加载到我的应用程序”的问题。为了得到有用的答案,您需要更多地描述环境(程序运行的地方)。您是否在EC2实例中运行应用程序?只需将这些键设置为服务器上的环境变量即可。这实际上不是scala问题;这是一个“如何在运行时将机密加载到我的应用程序”的问题。为了得到有用的答案,您需要更多地描述环境(程序运行的地方)。您是否在EC2实例中运行应用程序?只需将这些键设置为服务器上的环境变量即可。