Upimaji ni sehemu muhimu ya mchakato wa maendeleo. Na wakati mwingine wasanidi wanahitaji kufanya majaribio ndani ya nchi, kabla ya kufanya mabadiliko.
Ikiwa maombi hutumia Amazon Huduma za mtandao, python maktaba moto kamili kwa hili.
Orodha kamili ya chanjo ya rasilimali inaweza kutazamwa
Kuna turnip kwenye Github Hugo Picado -
Naam, hiyo ni rahisi kutosha kurekebisha.
Tangu unapoanza unahitaji kutaja aina ya huduma (env kutofautiana MOTO_SERVICE), tunapaswa tu kuelezea uumbaji wa rasilimali.
Hebu tubadilishe kidogo anza.sh:
Badala ya
moto_server $MOTO_SERVICE -H $MOTO_HOST -p $MOTO_PORT
Ingiza:
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
Faili ya mwisho ni:
anza.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
Tunaunda picha mpya na kuisukuma kwenye sajili yetu.
Ifuatayo, wacha tuandike hati ya uanzishaji wa rasilimali, kwa mfano Kikoa cha SWF, kwa kutumia maktaba kufanya kazi na 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'
Mantiki ni hii:
- Wakati wa kuanza, tunaweka maandishi yetu ndani /opt/init/bootstrap.py.
- Ikiwa faili imewekwa, itatekelezwa.
- Ikiwa hakuna faili, seva ya moto-wazi itaanza tu.
Na, unaweza kudhihaki rasilimali nzima kwa kuzindua kontena moja:
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
Wacha tuijaribu kwa maingiliano:
Inafanya kazi!
Kwa hivyo tunaweza kufanya docker-compose.yml, ambayo itaokoa mabadiliko ya majaribio ya wakati:
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
Kwa kweli, njia hii inaweza kutumika sio tu kwenye kompyuta ndogo ya msanidi programu. Majaribio ya awali yenye kejeli baada ya mkusanyiko yatasaidia kuondoa matatizo yanayoweza kutokea wakati wa kutumia mazingira ya dev*.
Marejeo:
Repo ya pikipiki -
Moto repo -
Hati za Boto3 -
Chanzo: mapenzi.com