【发布时间】:2018-06-19 11:46:21
【问题描述】:
我们正在使用 Alpakka s3 连接器从 VPC 中的本地系统连接到 s3 存储桶并出现如下错误,如果我们使用我们的传统 aws 客户端库,我们能够连接到 s3 并下载文件,我还附上了示例代码我们用于 alpakka s3 连接器。 这个错误是因为我必须在代码中设置一些 VPC 代理,我用它来处理我们的传统 aws s3 库,但我没有看到 alpakka 提供设置我的 VPC 代理的选项?
错误 - akka.stream.StreamTcpException:Tcp 命令 [Connect(bucket-name.s3.amazonaws.com:443,None,List(),Some(10 seconds),true)] 失败,因为 Some(10 seconds) 的连接超时已过期
代码 -
override def main(args: Array[String]): Unit = {
implicit val system = ActorSystem()
implicit val materializer = ActorMaterializer()
implicit val executionContext: ExecutionContext =
ExecutionContext.Implicits.global
val awsCredentialsProvider = new AWSStaticCredentialsProvider(
new BasicSessionCredentials("xxxxxx", "xxxx", "xxxx")
)
val regionProvider =
new AwsRegionProvider {
def getRegion: String = "us-east-1"
}
val settings =
new S3Settings(MemoryBufferType, None, awsCredentialsProvider,
regionProvider, false, None, ListBucketVersion2)
val s3Client = new S3Client(settings)(system, materializer)
val future = s3Client.download("bucket_name", "Data/abc.txt", None,
Some(ServerSideEncryption.AES256))
future._2.onComplete {
case Success(value) => println(s"Got the callback, meaning =
value")
case Failure(e) => e.printStackTrace
}
}
【问题讨论】:
-
“设置VPC代理”是指提供代理主机、端口以及是否应该使用https?
-
它的代理服务器设置为访问组织内的任何 AWS 服务,如 S3。