Kuedza chikamu chakakosha chegadziriro yekuvandudza. Uye dzimwe nguva vanogadzira vanofanirwa kumhanyisa bvunzo munharaunda, vasati vaita shanduko.
Kana iyo application ichishandisa Amazon Web Services, python raibhurari moto zvakakwana kune izvi.
Rondedzero yakazara yekuvharirwa kwezviwanikwa inogona kutariswa
Pane turnip paGithub Hugo Picado -
Zvakanaka, zviri nyore kugadzirisa.
Kubva paunotanga iwe unofanirwa kutsanangura rudzi rwebasa (approx kusiyanisa MOTO_SERVICE), isu tinongofanirwa kutsanangura kusikwa kweiyo sosi.
Ngatichinjei zvishoma tanga.sh:
Panzvimbo iyoyo
moto_server $MOTO_SERVICE -H $MOTO_HOST -p $MOTO_PORT
Isa:
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
Iyo yekupedzisira faira ndeye:
tanga.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
Isu tinovaka mufananidzo mutsva uye tousundira mukunyoresa kwedu.
Tevere, ngatinyore resource yekutanga script, semuenzaniso SWF domain, uchishandisa raibhurari yekushanda neAWS - 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'
Iyo logic ndeiyi:
- Kana tichitanga, tinoisa script yedu mukati /opt/init/bootstrap.py.
- Kana iyo faira ikaiswa, ichaitwa.
- Kana pasina faira, iyo isina moto-server inongotanga.
Uye, iwe unogona kuseka chimbo chese nekutanga mudziyo mumwe chete:
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
Ngatiedzei tichipindirana:
Inoshanda!
Saka isu tinogona kugadzira docker-compose.yml, iyo inochengetedza nguva yekuyedza shanduko:
docker-kunyora.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
Chaizvoizvo, nzira iyi inogona kushandiswa kwete chete palaptop yemugadziri. Yekutanga bvunzo nekuseka mushure megungano ichabatsira kubvisa matambudziko anogona kuitika kana uchimhanya pane dev * nharaunda.
Mareferensi:
Motocker repo -
Moto repo -
Boto3 Docs -
Source: www.habr.com