使用scala访问securestring ssm参数

pcrecxhr  于 2021-07-14  发布在  Java
关注(0)|答案(1)|浏览(390)

我在glue中使用scala脚本来访问具有依赖库的第三方供应商。你可以看到我正在做的模板
这个解决方案工作得很好,但是使用clear中存储的参数运行。我想把它们移到aws ssm中,并将它们存储为securestring。要实现这一点,我相信函数必须从kms中提取cmk,然后提取securestring并使用cmk对其进行解密。
我翻遍了互联网,试图找到一些简单的代码示例,比如从scala中提取ssm参数,但什么都找不到。我刚刚开始使用这种语言,对它的结构不是很熟悉,是否期望awsjava库也能在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

xqkwcwgp

xqkwcwgp1#

可以使用以下代码段执行此操作

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了!

相关问题