Lambdaをローカルでテスト(with Docker)

  • Dockerfile
FROM lambci/lambda:build-python3.6
ENV AWS_DEFAULT_REGION ap-northeast-1
 
ADD . .
 
CMD pip3 install -r requirements.txt -t /var/task && \
  zip -9 deploy_package.zip lambda_function.py && \
  zip -r9 deploy_package.zip *
  • requirements.txt
paramiko == 2.7.1
cffi == 1.14.1
boto3 == 1.14.35
pycrypto == 2.6.1
  • build.sh
ls |  grep -v -E 'lambda_function.py|sample.py|requirements.txt|Dockerfile|build.sh' | xargs rm -Rf
docker build -t sshmonitor .
docker run -v "$PWD":/var/task sshmonitor 
  • lambda_function.py
import boto3
import logging
import paramiko

print('Start Scanning EC2 instances which password authentication is set to')

logging.basicConfig()
logging.getLogger("paramiko").setLevel(logging.DEBUG)

def lambda_handler(event, context):
    client = paramiko.SSHClient()
    client.load_system_host_keys()
    client.set_missing_host_key_policy(paramiko.AutoAddPolicy())

    ec2 = boto3.client('ec2')
    response = ec2.describe_instances()
    reservations = response["Reservations"]

    for reservation in reservations:
        instance = reservation["Instances"][0]

        try:
            ip = instance["PublicIpAddress"]
            print('Accessing: ' + ip)
            client.connect(ip, username='Security Scanner.', password='XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX')
        except:
            print('Done: ' + ip)

    return 'Finish Scanning!'

My Twitter & RSS

Leave a Reply

Your email address will not be published.