Запустите AWS CLI из Java - PullRequest
0 голосов
/ 09 ноября 2018

Я пытаюсь запускать команды CLI AWS напрямую из кода Java.

Причина этого в том, что 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]

Буду очень признателен за любую помощь,

Спасибо!

1 Ответ

0 голосов
/ 15 ноября 2018

После десятков попыток запустить команду 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...