从创建的胶水客户端Scala中提取AWS Glue凭证

问题描述

我试图参考此question提取嵌入式连接凭证。 但是出现以下错误

// ...
<Popper
  placement="bottom-start"
  // ...
>
// ...

遇到错误::71:错误:类型不匹配;找到:String(“ {{名称:preprod-samtec-redw,HidePassword:False}”“)必需: com.amazonaws.services.glue.model.GetConnectionRequest gum.getConnection(“ {名称:嵌入式连接名称,HidePassword:False}”)

解决方法

如错误所示,您需要为GetConnectionRequest方法提供一个getConnection对象,类似于:

import org.apache.spark.sql.SparkSession
import org.apache.spark.sql.types._  //import everything from the package    
import org.apache.spark.sql.expressions.{Window => W} 
import org.apache.spark.sql.{functions => F}
import org.apache.spark.SparkContext
import com.amazonaws.services.glue.GlueContext
import com.amazonaws.services.glue.util.GlueArgParser 

import com.amazonaws.services.glue.DynamicFrame

import com.amazonaws.regions.Regions
import com.amazonaws.services.glue.model._

import com.amazonaws.services.glue.{AWSGlue,AWSGlueClient}
import scala.collection.JavaConverters.{mapAsJavaMapConverter,seqAsJavaListConverter}
import com.amazonaws.services.sagemaker.sparksdk.IAMRole

val sc = spark.sparkContext
val glueContext: GlueContext = new GlueContext(sc)

val region = Regions.fromName("us-east-1")

// Function to create AWS glue client
def glueClient(region: Regions):
AWSGlue = AWSGlueClient.builder().withRegion(region).build()

val glue = glueClient(region =region)

val getConnectionRequest: GetConnectionRequest = new GetConnectionRequest()
  .withName("name-of-embedded-connection")
  .withHidePassword(false)

val getConnectionResult: GetConnectionResult =  glue.getConnection(getConnectionRequest)

val connection: Connection = getConnectionResult.getConnection()

val connectionProperties = connection.getConnectionProperties()

// Now you can extract as many properties as you need (see https://github.com/aws/aws-sdk-java/blob/2d73c9847a327eea2f673a4cd2b3449e433649e5/aws-java-sdk-glue/src/main/java/com/amazonaws/services/glue/model/Connection.java#L687)
// For instance,the username or password
val username = connectionProperties.get("USERNAME")
val password = connectionProperties.get("PASSWORD")