java - 从 java 运行 AWS CLI

标签 java amazon-web-services aws-sdk aws-cli

我正在尝试直接从 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/

相关文章:

javascript - 当从异步函数返回 Promise 时会发生什么?

java - 你如何在java中返回一个数组对象?

amazon-web-services - 如何从现有资源创建模板?

ruby - 使用 aws-sdk gem 更改 s3 文件对象所有者

javascript - 更新 forEach 数组时,AWS SDK S3 在 forEach 内调用

amazon-web-services - AWS堆栈使用最终快照删除RDS

java - 在java中年龄计算返回错误值

java - Java字符集转换

java抛出异常找不到符号

javascript - AWS Lambda错误: Process exited before completing request