src/main/scala/s3/website/model/Config.scala in s3_website-3.1.0 vs src/main/scala/s3/website/model/Config.scala in s3_website-3.2.0
- old
+ new
@@ -6,11 +6,11 @@
import scala.util.matching.Regex
import scala.util.{Failure, Try}
import scala.collection.JavaConversions._
import s3.website.Ruby.rubyRuntime
import s3.website._
-import com.amazonaws.auth.{AWSCredentialsProvider, BasicAWSCredentials, BasicSessionCredentials, DefaultAWSCredentialsProviderChain}
+import com.amazonaws.auth.{AWSCredentialsProvider, BasicAWSCredentials, BasicSessionCredentials, AWSStaticCredentialsProvider, DefaultAWSCredentialsProviderChain}
case class Config(
s3_id: Option[String], // If undefined, use IAM Roles (http://docs.aws.amazon.com/AWSSdkDocsJava/latest/DeveloperGuide/java-dg-roles.html)
s3_secret: Option[String], // If undefined, use IAM Roles (http://docs.aws.amazon.com/AWSSdkDocsJava/latest/DeveloperGuide/java-dg-roles.html)
session_token: Option[String], // If defined, the AWS Security Token Service session token (http://docs.aws.amazon.com/STS/latest/APIReference/Welcome.html)
@@ -35,28 +35,25 @@
)
object Config {
def awsCredentials(config: Config): AWSCredentialsProvider = {
- val credentialsFromConfigFile =
- if (config.session_token.isEmpty) {
+ val credentialsFromConfigFile: Option[AWSStaticCredentialsProvider] =
+ if (config.s3_id.isEmpty) {
+ None
+ } else if (config.session_token.isEmpty) {
for {
s3_id <- config.s3_id
s3_secret <- config.s3_secret
- } yield new BasicAWSCredentials(s3_id, s3_secret)
+ } yield new AWSStaticCredentialsProvider(new BasicAWSCredentials(s3_id, s3_secret))
} else {
for {
s3_id <- config.s3_id
s3_secret <- config.s3_secret
session_token <- config.session_token
- } yield new BasicSessionCredentials(s3_id, s3_secret, session_token)
+ } yield new AWSStaticCredentialsProvider(new BasicSessionCredentials(s3_id, s3_secret, session_token))
}
- credentialsFromConfigFile.fold(new DefaultAWSCredentialsProviderChain: AWSCredentialsProvider)(credentials =>
- new AWSCredentialsProvider {
- def getCredentials = credentials
- def refresh() = {}
- }
- )
+ credentialsFromConfigFile getOrElse new DefaultAWSCredentialsProviderChain
}
def loadOptionalBooleanOrStringSeq(key: String)(implicit unsafeYaml: UnsafeYaml): Either[ErrorReport, Option[Either[Boolean, Seq[String]]]] = {
val yamlValue = for {
optionalValue <- loadOptionalValue(key)
\ No newline at end of file