运行 来自 java 的 AWS CLI

Run AWS CLI from java

我正在尝试直接从 java 代码 运行 AWS CLI 命令。

这是因为 AWS Java SDK 不允许创建重定向,我需要从 Java 应用程序以某种方式创建重定向。

到目前为止,我的代码如下所示:

private String runAwsCli(String cliCommand) {

        ProcessBuilder processBuilder = new ProcessBuilder(cliCommand);
        Process process = processBuilder.start();

        try (BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()))) {
            return IOUtils.toString(bufferedReader);
        }
}

但是,调用此方法时我得到:

java.io.IOException: error=2, No such file or directory
at java.lang.UNIXProcess.forkAndExec(Native Method) ~[na:1.8.0_151]
at java.lang.UNIXProcess.<init>(UNIXProcess.java:247) ~[na:1.8.0_151]
at java.lang.ProcessImpl.start(ProcessImpl.java:134) ~[na:1.8.0_151]

非常感谢任何帮助,

谢谢!

经过数十次尝试 运行 awc cli 来自 Java 的命令后,我没有成功并决定切换到 aws sdk。

因此创建重定向的代码如下所示:

import com.amazonaws.services.elasticloadbalancingv2.AmazonElasticLoadBalancing;
import com.amazonaws.services.elasticloadbalancingv2.model.*;




            AmazonElasticLoadBalancing amazonElasticLoadBalancing = AmazonElasticLoadBalancingClientBuilder.defaultClient();
            CreateRuleRequest createRuleRequest = new CreateRuleRequest();
            createRuleRequest.setListenerArn(LISTENER_ARN);
            createRuleRequest.setPriority(priority);
            Action action = new Action();
            action.setType(REDIRECT);

            RuleCondition ruleCondition = new RuleCondition();
            ruleCondition.setField(PATH_PATTERN);
            ruleCondition.setValues(singletonList(requestUrl));

            RedirectActionConfig redirectActionConfig = new RedirectActionConfig();
            redirectActionConfig.setHost(HOST);
            redirectActionConfig.setPort(PORT);
            redirectActionConfig.setProtocol(PROTOCOL);
            redirectActionConfig.setPath(DESTINATION_URL);
            redirectActionConfig.setStatusCode(HTTP_301);

            action.setRedirectConfig(redirectActionConfig);

            createRuleRequest.setActions(singletonList(action));
            createRuleRequest.setConditions(singletonList(ruleCondition));

            CreateRuleResult createRuleResult = amazonElasticLoadBalancing.createRule(createRuleRequest);