Moto. Ho soma AWS

Teko ke karolo ea bohlokoa ea ts'ebetso ea nts'etsopele. 'Me ka linako tse ling bahlahisi ba hloka ho etsa liteko sebakeng sa heno, pele ba etsa liphetoho.
Haeba sesebelisoa se sebetsa Amazon Web Services, python laeborari moto, e phethahetseng bakeng sa sena.
Moto. Ho soma AWS

Lethathamo le felletseng la ts'ebeliso ea lisebelisoa le ka bonoa mona.
Ho na le turnip ho Github Hugo Picado - moto-server. Setšoantšo se se se loketse, qala le ho se sebelisa. The nuance feela ke hore ka mor'a ho qala, che AWS lisebelisoa ha li so thehoe moo.

Ho lokile, ho bonolo ho e lokisa.

Ho tloha ha o qala o hloka ho hlakisa mofuta oa tšebeletso (romeletsa feto-fetoha MOTO_SERVICE), re tlameha feela ho hlalosa pōpo ea mohloli.

Ha re e fetoleng hanyane qala.sh:

Sebakeng seo

moto_server $MOTO_SERVICE -H $MOTO_HOST -p $MOTO_PORT

Kenya:

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

Faele ea ho qetela ke:

qala.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

Re theha setšoantšo se secha ebe re se sutumelletsa ho registry ea rona.

Ka mor'a moo, a re ngoleng lengolo la ho qala lisebelisoa, mohlala Sebaka sa marang-rang sa SWF, ho sebelisa laebrari ho sebetsa le 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'

The logic ke ena:

  • Ha re qala, re kenya script ho eona /opt/init/bootstrap.py.
  • Haeba faele e kentsoe, e tla etsoa.
  • Haeba ho se na faele, seva sa mollo se tla qala feela.

Mme, o ka soma sesebelisoa kaofela ka ho qala setshelo se le seng:

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

Ha re e leke ka lipuisano:

Moto. Ho soma AWS

E sebetsa!

Kahoo re ka etsa docker-compose.yml, e tla boloka liphetoho tsa tlhahlobo ea nako:

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

Ha e le hantle, mokhoa ona o ka sebelisoa eseng feela ho laptop ea moqapi. Liteko tsa pele tse nang le litšeho ka mor'a kopano li tla thusa ho tlosa mathata a ka bang teng ha u sebetsa libakeng tsa dev *.

Lipeeletso:

Motocker repo - github.com/picadoh/motocker
Moto repo - github.com/spulec/moto
Boto3 Docs - boto3.amazonaws.com/v1/documentation/api/latest/index.html

Source: www.habr.com

Eketsa ka tlhaloso