Невозможно клонировать удаленный репозиторий (On Premise) в S3 Bucket с помощью лямбда-функции aws - PullRequest
1 голос
/ 08 июля 2019

Я пытаюсь установить соединение из моего репозитория On Premise git (Remote Url), который я могу подключить на своем локальном компьютере с использованием учетных данных, к сборке кода AWS или конвейеру кода.

Для этогоУ меня есть заявление о решении со стороны AWS -

В настоящее время CodeBuild поддерживает только репозитории BitBucket, размещенные на bitbucket.org, BitBucket Server (локальный BitBucket) в настоящее время не поддерживается.Существует существующий запрос о поддержке BitBucket Server в CodeBuild, к которому я добавил ваш интерес.Я не могу сообщить ETA о том, когда эта функция может быть выпущена, однако вы можете следить за обновлениями этой функции на следующих сайтах:

- История выпуска AWS CodeBuild: https://docs.aws.amazon.com/codebuild/latest/userguide/history.html- Что нового: http://aws.amazon.com/new/
- Блоги AWS: https://aws.amazon.com/blogs/aws/

Возможен обходной путь путем создания настраиваемого моста между репозиторием Git и AWS, который может быть выполнен с помощьюСоздав лямбда-функцию, которая будет клонировать репозиторий в корзину S3, которую затем можно будет использовать в качестве источника в CodeBuild, вы можете прочитать об этом здесь [1].

Надеюсь, что это поможет, если у вас есть какие-либо вопросы, пожалуйста,дайте мне знать, я буду рад помочь.

[1] https://aws.amazon.com/quickstart/architecture/git-to-s3-using-webhooks/

Итак, я реализовал лямбда-функцию, подобную этой:

public String handleRequest(S3Event event, Context context) {

    final String REMOTE_URL = "https://username@stash.some.com/scm/something/dpautomation.git";

    CredentialsProvider cp = new UsernamePasswordCredentialsProvider("username", "password");
    try (Git result = Git.cloneRepository().setURI(REMOTE_URL).setDirectory(cretaeS3()).setCredentialsProvider(cp)
            .call()) {
        System.out.println("Having repository: " + result.getRepository().getDirectory());
    } catch (InvalidRemoteException e) {

        e.printStackTrace();
    } catch (TransportException e) {

        e.printStackTrace();
    } catch (GitAPIException e) { // TODO Auto-generated
        e.printStackTrace();
    } catch (IOException e1) {
        e1.printStackTrace();
    }

    return "sucess";

}

public File cretaeS3() throws IOException {
  String bucketName = "selenium-lambda-java";
      String destinationKey ="screenshots_on_failure/testdata1";
      String filename="\"+temp";
      AmazonS3 s3Client =
      AmazonS3ClientBuilder.standard().withRegion("us-east-1").withCredentials(new
      ProfileCredentialsProvider()).build();
      File src = new File(filename);
      s3Client.putObject(new PutObjectRequest(bucketName, destinationKey, src));
     return src;
}   

В приведенном выше коде, поскольку мне нужно скопировать файлы репозитория Remote url непосредственно в корзину s3, поэтому я использовал jgit.api.Git, где при попытке клонировать удаленное репо мне нужно указать путь в формате файла в setDirectory.параметр пока долженсоюзник путь ведра, поэтому я попробовал приведенный выше код.я получаю ошибку ниже:

{
  "errorMessage": "Unable to calculate MD5 hash: \"+temp (No such file or directory)",
  "errorType": "com.amazonaws.SdkClientException",
"stackTrace": [   


"com.amazonaws.services.s3.AmazonS3Client.getInputStream(AmazonS3Client.java:1852)", "com.amazonaws.services.s3.AmazonS3Client.uploadObject(AmazonS3Client.java:1770)",    "com.amazonaws.services.s3.AmazonS3Client.putObject(AmazonS3Client.java:1749)",    "com.amazonaws.lambda.demo.LambdaFunctionHandler.cretaeS3(LambdaFunctionHandler.java:79)",  "com.amazonaws.lambda.demo.LambdaFunctionHandler.handleRequest(LambdaFunctionHandler.java:52)",    "com.amazonaws.lambda.demo.LambdaFunctionHandler.handleRequest(LambdaFunctionHandler.java:1)"  ],  "cause": {    "errorMessage": "\"+temp (No such file or directory)",
"errorType": "java.io.FileNotFoundException",
"stackTrace": [
  "java.io.FileInputStream.open0(Native Method)",
  "java.io.FileInputStream.open(FileInputStream.java:195)",
  "java.io.FileInputStream.<init>(FileInputStream.java:138)",
  "com.amazonaws.util.Md5Utils.computeMD5Hash(Md5Utils.java:97)",
  "com.amazonaws.util.Md5Utils.md5AsBase64(Md5Utils.java:104)",
  "com.amazonaws.services.s3.AmazonS3Client.getInputStream(AmazonS3Client.java:1848)",
  "com.amazonaws.services.s3.AmazonS3Client.uploadObject(AmazonS3Client.java:1770)",
  "com.amazonaws.services.s3.AmazonS3Client.putObject(AmazonS3Client.java:1749)",
  "com.amazonaws.lambda.demo.LambdaFunctionHandler.cretaeS3(LambdaFunctionHandler.java:79)",
  "com.amazonaws.lambda.demo.LambdaFunctionHandler.handleRequest(LambdaFunctionHandler.java:52)",
  "com.amazonaws.lambda.demo.LambdaFunctionHandler.handleRequest(LambdaFunctionHandler.java:1)"
]

}}

Я застрял в последние 5 дней, пожалуйста, помогите мне в этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...