แขแแกแขแแ แแแ แแแแแแแแ แแแแก แแ แแชแแกแแก แแแแฃแงแแคแแแ แแแฌแแแแ. แแ แแแแฏแแ แแแแแแแแแ แแแก แกแญแแ แแแแแ แขแแกแขแแแแก แแแจแแแแ แแแแแแแแ แแแแ, แชแแแแแแแแแแก แแแแฎแแ แชแแแแแแแแแ.
แแฃ แแแแแแแชแแ แแงแแแแแก Amazon แแแ แกแแ แแแกแแแ, แแแแแแ แแแแแแแแแแ motorbike แแแแแแฃแ แแ แแแแกแแแแแก.
แ แแกแฃแ แกแแแแก แแแคแแ แแแก แกแ แฃแแ แกแแ แจแแแแซแแแแ แแฎแแแแ
แแแขแฐแฃแแแ แแ แแก แขแฃแ แแแแ แฃแแ แแแแแแ -
แแกแ, แแแแก แแแแแกแฌแแ แแแ แกแแแแแแ แแแ แขแแแแ.
แแแฌแงแแแแกแแก แแฅแแแ แฃแแแ แแแฃแแแแแ แกแแ แแแกแแก แขแแแ (env แชแแแแแ MOTO_SERVICE), แฃแแ แแแแ แฃแแแ แแฆแแฌแแ แแ แ แแกแฃแ แกแแก แจแแฅแแแ.
แชแแขแ แจแแแชแแแแแ แแแฌแงแแแ.แจ:
แแแชแแแแ
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
แกแแแแแแ แคแแแแ แแ แแก:
แแแฌแงแแแ.แจ
#!/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
แแแแแ แแชแแแแ แแแขแแ แแฅแขแแฃแแแ:
แแฃแจแแแแก!
แแกแ แ แแ, แฉแแแ แจแแแแแซแแแ แแแแแแแแแ 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* แแแ แแแแแ แแฃแจแแแแแกแแก.
แแแฃแแแแ:
แแแขแแแแ แแก แ แแแ -
แแแขแ แ แแแ -
Boto3 Docs -
แฌแงแแ แ: www.habr.com