موٽو. ٺٺوليون AWS

جاچ ترقي جي عمل جو هڪ لازمي حصو آهي. ۽ ڪڏهن ڪڏهن ڊولپرز کي مقامي طور تي ٽيسٽ هلائڻ جي ضرورت آهي، تبديليون ڪرڻ کان پهريان.
جيڪڏهن ايپليڪيشن استعمال ڪري ٿي ايم ايس ايز ويب خدمتون, سٿان لائبريري moto هن لاء ڀرپور.
موٽو. ٺٺوليون AWS

وسيلن جي ڪوريج جي مڪمل فهرست ڏسي سگھجي ٿو هتي.
Github تي هڪ turnip آهي هيوگو پيڪاڊو - موٽر سرور. تيار تصوير، لانچ ۽ استعمال ڪريو. صرف nuance اهو آهي ته لانچ کان پوء، نه اوس وسيلا اڃا تائين پيدا نه ڪيا ويا آهن.

خير، ان کي ٺيڪ ڪرڻ لاء ڪافي آسان آهي.

شروع ڪرڻ کان وٺي توهان کي خدمت جي قسم جي وضاحت ڪرڻ جي ضرورت آهي (اين اي ڪشش MOTO_SERVICE)، اسان کي صرف وسيلن جي تخليق کي بيان ڪرڻو پوندو.

اچو ته ان کي ٿورو تبديل ڪريون start.sh:

بدران

moto_server $MOTO_SERVICE -H $MOTO_HOST -p $MOTO_PORT

داخل ڪريو:

if [ -f /opt/init/bootstrap.py ]; then
  moto_server $MOTO_SERVICE -H $MOTO_HOST -p $MOTO_PORT & (sleep 5 && echo "Executing bootstrap script." && python /opt/init/bootstrap.py)
else
  moto_server $MOTO_SERVICE -H $MOTO_HOST -p $MOTO_PORT
fi
wait

آخري فائل آهي:

start.sh

#!/bin/sh

# validate required input
if [ -z "$MOTO_SERVICE" ]; then
  echo "Please define AWS service to run with Moto Server (e.g. s3, ec2, etc)"
  exit 1
fi

# setting defaults for optional input
if [ -z "$MOTO_HOST" ]; then
  MOTO_HOST="0.0.0.0"
fi

if [ -z "$MOTO_PORT" ]; then
  MOTO_PORT="5000"
fi

echo "Starting service $MOTO_SERVICE at $MOTO_HOST:$MOTO_PORT"

if [ -f /opt/init/bootstrap.py ]; then
  moto_server $MOTO_SERVICE -H $MOTO_HOST -p $MOTO_PORT & (sleep 5 && echo "Executing bootstrap script." && python /opt/init/bootstrap.py)
else
  moto_server $MOTO_SERVICE -H $MOTO_HOST -p $MOTO_PORT
fi
# Prevent container from exiting when bootstrap.py finishing
wait

اسان هڪ نئين تصوير ٺاهي ۽ ان کي اسان جي رجسٽري ۾ ڌڪيو.

اڳيون، اچو ته هڪ وسيلا شروعاتي اسڪرپٽ لکون، مثال طور SWF ڊومين، AWS سان ڪم ڪرڻ لاءِ لائبريري استعمال ڪندي - boto3:

bootstrap_swf.py

import boto3
from botocore.exceptions import ClientError
import os

os.environ["AWS_ACCESS_KEY_ID"] = "fake"
os.environ["AWS_SECRET_ACCESS_KEY"] = "fake"

client = boto3.client('swf', region_name='us-west-2', endpoint_url='http://localhost:5000')

try:
    client.register_domain(
        name='test-swf-mock-domain',
        description="Test SWF domain",
        workflowExecutionRetentionPeriodInDays="10"
    )
except ClientError as e:
    print "Domain already exists: ", e.response.get("Error", {}).get("Code")

response = client.list_domains(
    registrationStatus='REGISTERED',
    maximumPageSize=123,
    reverseOrder=True|False
)

print 'Ready'

منطق هي آهي:

  • جڏهن شروع ڪريون ٿا، اسان اسان جي اسڪرپٽ کي نصب ڪيو /opt/init/bootstrap.py.
  • جيڪڏهن فائل نصب ٿيل آهي، اهو عمل ڪيو ويندو.
  • جيڪڏهن ڪا به فائل نه آهي، بيئر موٽر سرور صرف شروع ٿيندي.

۽، توهان هڪ ڪنٽينر کي لانچ ڪندي پوري وسيلن کي ٺٺولي ڪري سگهو ٿا:

docker run --name swf -d 
    -e MOTO_SERVICE=swf 
    -e MOTO_HOST=0.0.0.0 
    -e MOTO_PORT=5000 
    -p 5001:5000 
    -v /tmp/bootstrap_swf.py:/opt/init/bootstrap.py 
    -i awesome-repo.com/moto-server:latest

اچو ته ان کي باضابطه طور تي ڪوشش ڪريو:

موٽو. ٺٺوليون AWS

Работает!

تنهن ڪري اسان docker-compose.yml ٺاهي سگهون ٿا، جيڪو وقت جي جانچ جي تبديلين کي بچائيندو:

docker-compose.yml

version: '3'
services:
  s3:
    image: picadoh/motocker
    environment:
      - MOTO_SERVICE=s3
      - MOTO_HOST=10.0.1.2
    ports:
      - "5002:5000"
    networks:
      motonet:
        ipv4_address: 10.0.1.2
    volumes:
      - /tmp/bootstrap_s3.py:/opt/init/bootstrap.py
  swf:
    image: picadoh/motocker
    environment:
      - MOTO_SERVICE=swf
      - MOTO_HOST=10.0.1.3
    ports:
      - "5001:5000"
    networks:
      motonet:
        ipv4_address: 10.0.1.3
    volumes:
      - /tmp/bootstrap_swf.py:/opt/init/bootstrap.py
  ec2:
    image: picadoh/motocker
    environment:
      - MOTO_SERVICE=ec2
      - MOTO_HOST=10.0.1.4
    ports:
      - "5003:5000"
    networks:
      motonet:
        ipv4_address: 10.0.1.4
    volumes:
      - /tmp/bootstrap_ec2.py:/opt/init/bootstrap.py
networks:                             
  motonet:                          
    driver: bridge                
    ipam:                         
      config:                       
        - subnet: 10.0.0.0/16

دراصل، هي طريقو استعمال ڪري سگهجي ٿو نه رڳو ڊولپر جي ليپ ٽاپ تي. اسيمبليءَ کان پوءِ ٺٺوليون سان ابتدائي ٽيسٽون ممڪن مسئلن کان نجات حاصل ڪرڻ ۾ مدد ڪنديون جڏهن dev * ماحول تي هلندي.

حوالا:

موٽرڪر ريپو - github.com/picadoh/motocker
موٽو ريپو - github.com/spulec/moto
Boto3 دستاويز - boto3.amazonaws.com/v1/documentation/api/latest/index.html

جو ذريعو: www.habr.com

تبصرو شامل ڪريو