0

我们正在使用 EMR。在提交 spark 作业之前,我们尝试从 AWS Param Store 中提取配置参数(我们编写了一个 java 程序)并创建一个文件并在 spark-submit 中使用它。

我们正在使用aws-java-sdk-ssm API 从参数存储中提取参数。

当我们尝试在主节点上运行该程序时,它需要一个令牌 (.aws/configure/credentials) 来连接到 aws ssm 以提取参数。

我们可以在没有任何凭据的情况下访问 S3 存储桶,但不能访问参数存储。

我们正在从大厅管道启动 EMR 集群。

下面是我们编写的从 paramstore 中提取参数的方法:

private static List<Parameter> getParametersFromAWSParamStore(String path, String awsRegion){
        List<Parameter> paramList = new ArrayList<>();

        AWSSimpleSystemsManagement client = AWSSimpleSystemsManagementClientBuilder.standard().withRegion(awsRegion).build();
        GetParametersByPathRequest request = new GetParametersByPathRequest();
        request.withRecursive(true);
        request.withPath(path);
        request.setWithDecryption(true);
        GetParametersByPathResult result = null;
        do {
            result = client.getParametersByPath(request);
            paramList.addAll(result.getParameters());
        }while( result.getNextToken() !=null && !result.getNextToken().isEmpty());
        return paramList;
    }
4

1 回答 1

0

我们需要确保执行此程序的 IAM 角色具有 ssm: getParametersByPath 策略。

早些时候,该政策丢失了,因此无法提取这些属性。

于 2020-09-07T20:28:51.780 回答