Java 使用Scala访问SecureString SSM参数

Java 使用Scala访问SecureString SSM参数,java,amazon-web-services,scala,aws-glue,aws-ssm,Java,Amazon Web Services,Scala,Aws Glue,Aws Ssm,我正在Glue中使用Scala脚本访问具有依赖库的第三方供应商。你可以看到 此解决方案运行良好,但使用clear中存储的参数运行。我想将它们移动到AWS SSM并将它们存储为SecureString。要实现这一点,我相信函数必须从KMS中提取CMK,然后提取SecureString并使用CMK对其进行解密 我在互联网上四处搜索,试图找到一些简单的代码示例,比如从Scala中提取SSM参数,但什么都找不到。我刚刚开始使用这种语言,对它的结构不是很熟悉,是否期望aws java库也能在Scala中工

我正在Glue中使用Scala脚本访问具有依赖库的第三方供应商。你可以看到

此解决方案运行良好,但使用clear中存储的参数运行。我想将它们移动到AWS SSM并将它们存储为SecureString。要实现这一点,我相信函数必须从KMS中提取CMK,然后提取SecureString并使用CMK对其进行解密

我在互联网上四处搜索,试图找到一些简单的代码示例,比如从Scala中提取SSM参数,但什么都找不到。我刚刚开始使用这种语言,对它的结构不是很熟悉,是否期望aws java库也能在Scala中工作以进行此类操作?我已经试过了,但是在Glue中出现了编译错误。举个例子

import software.amazon.awscdk.services.ssm.StringParameter;

  
object SfdcExtractData {  
  def main(sysArgs: Array[String]) {  
    print("starting")
    
    String secureStringToken = StringParameter.valueForSecureStringParameter(this, "my-secure-parameter-name", 1);   // must specify version
给出了一个编译错误,尽管aws glue不能很好地告诉我问题是什么


谢谢你抽出时间!如果您有任何代码示例、见解或资源,请告诉我。我的工作是在Spark 2.4上运行Scala 2

我们能够通过以下代码片段实现这一点

import com.amazonaws.services.simplesystemsmanagement.AWSSimpleSystemsManagementClient
import com.amazonaws.services.simplesystemsmanagement.model.GetParameterRequest
import com.amazonaws.services.simplesystemsmanagement.model.GetParameterResult

    // create a client AWSSimpleSystemsManagementClient object
    val client = new AWSSimpleSystemsManagementClient()

    // Create a GetParameterRequest object, which send the actual request
    val req = new GetParameterRequest()

    // set the name of the parameter in the object. 
    req.setName("test")
    // Only needed if the parameter is a secureString encrypted with the default kms key. If you're using a CMK you need to add the glue user as a key user. To do so, navigate to KMS console --> Customer Managed Keys --> Click on KMS key used for encryption --> Under Key policies --> Key user --> Add ( Add the Glue role )
    req.setWithDecryption(true)


    // call the getParameter() function on the object
    val param = client.getParameter(req)

记住也要将您的粘合角色iam权限授予ssm

可能是因为
String secureStringToken=…
不是有效的Scala语法,而是Java语法。@LuisMiguelMejíaSuárez,谢谢,我会尝试一下,对Scala来说还是非常新的。“是否期望aws Java库也能在Scala中用于这些类型的操作?”是的,因为Scala在JVM中运行。-尝试使用
val secureStringToken=…
也尝试至少阅读一个基本教程,您希望如何使用您甚至不知道语法的语言?请注意,下面仍然出现编译错误,可能是代码库val secureStringToken=StringParameter.valueForSecureStringParameter中的其他内容(此“我的安全参数名称”,1);//必须指定版本