我正在尝试直接从 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]
我非常感谢任何帮助,
谢谢!
最佳答案
在多次尝试从 Java 运行 awc cli
命令后,我没有成功,并决定切换到 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);
关于java - 从 java 运行 AWS CLI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53223971/