AWS-лямбда-клон git-репозитория и сделать zip-файл не в состоянии загрузить в s3 - PullRequest
0 голосов
/ 27 мая 2018

Я хочу попробовать клонировать мой репозиторий git, который находится в частном github.Я вижу, что после добавления веб-хуков и настройки формирования облаков, как описано здесь .

Это отправка запроса на мою лямбду.Я могу клонировать репозиторий одним из следующих способов, но не могу создать zip-репозиторий и загрузить его в s3, как в Lambda. Я не могу найти, где он хранит репозиторий, чтобы сделать его zip-архивом и загрузить его по этому пути.

import boto3
from botocore.vendored import requests
import logging
import base64
import os
import shutil
from zipfile import ZipFile
from cStringIO import StringIO

# Set to False to allow self-signed/invalid ssl certificates
verify = False

logger = logging.getLogger()
logger.setLevel(logging.INFO)


s3_client = boto3.client('s3')


def lambda_handler(event, context):

   path        =   "/gitpull" 
   clone       =   "git clone https://username:pwd@site.com/scm/awsdemos/testrepo.git" 

# os.system("sshpass -p your_password ssh user_name@your_localhost")
  os.chdir(path) 

  os.system(clone) # Cloning
#   folder = "/gitpull"
#   logger.info(os.listdir(folder))

#   shutil.make_archive('Gitpull', 'zip', '/tmp')
   s3_archive_file = "Gitpull.zip" 

    # Create zip from /tmp dir without any common preffixes
   shutil.make_archive('Gitpull', 'zip', os.getcwd())
   logger.info("Uploading zip to S3://%s/%s" % ('gitpulls3', s3_archive_file))
   s3_client.upload_file(os.getcwd(), 'gitpulls3', s3_archive_file)
   logger.info('Upload Complete')

Есть ли какой-нибудь хороший способ, которым я могу это сделать?

1 Ответ

0 голосов
/ 27 мая 2018

Измените файл s3_client.upload_file на приведенный ниже код:

s3 = boto3.resource('s3')
s3.meta.client.upload_file(os.getcwd() + "/" + s3_archive_file_name, 'mybucket', s3_archive_file_name)

Проверьте приведенный ниже код, который я пытался использовать для лямбда-функции:

import boto3
from botocore.vendored import requests
import logging
import base64
import os
import shutil
from zipfile import ZipFile

# Set to False to allow self-signed/invalid ssl certificates
verify = False

logger = logging.getLogger()
logger.setLevel(logging.INFO)

logging.info("hello")
s3_client = boto3.client('s3')
s3 = boto3.resource('s3')


def lambda_handler(event, context):

   path        =   "/tmp" 
   clone       =   "git clone https://github.com/sirajpathan/test.git" 

# os.system("sshpass -p your_password ssh user_name@your_localhost")
   logger.info(os.getcwd())
   os.chdir(path) 

   os.system(clone) # Cloning
   #os.chdir(os.getcwd())
   folder = os.getcwd() + "/tmp"
   logger.info(os.listdir(os.getcwd()))
   logger.info(os.listdir("/tmp"))

   #shutil.make_archive('Gitpull', 'zip', '/tmp')
   s3_archive_file = 'test.zip'

    # Create zip from /tmp dir without any common preffixes
   shutil.make_archive('test', 'zip', os.getcwd())
   logger.info(os.listdir(os.getcwd()))
   logger.info("Uploading zip to S3://%s/%s" % ('testsiraj1', s3_archive_file))
   #used s3 meta client below
   s3.meta.client.upload_file(os.getcwd() + "/" + s3_archive_file, 'testsiraj1', s3_archive_file)
   ##s3_client.upload_file(os.getcwd(), 'bucketname', s3_archive_file)
   logger.info('Upload Complete')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...