Moto. Kunyoza AWS

Kuyesa ndi gawo lofunikira lachitukuko. Ndipo nthawi zina opanga amayenera kuyesa kuyesa kwanuko, asanasinthe.
Ngati pulogalamuyo ikugwiritsidwa ntchito Mapulogalamu a Webusaiti a Amazon, python laibulale Moto wangwiro kwa izi.
Moto. Kunyoza AWS

Mndandanda wathunthu wazinthu zothandizira zitha kuwonedwa apa.
Pali mpiru pa Github Hugo Picado - moto-server. Chithunzi chokonzeka, kuyambitsa ndi kugwiritsa ntchito. Chokhachokha ndikuti pambuyo poyambitsa, ayi AWS zinthu sizinapangidwe kumeneko.

Chabwino, ndizosavuta kukonza.

Kuyambira pamene mukuyamba muyenera kufotokoza mtundu wa utumiki (kutumiza kusintha MOTO_SERVICE), timangoyenera kufotokoza kulengedwa kwa gwero.

Tiyeni tisinthe pang'ono yambani.sh:

M'malo mwake

moto_server $MOTO_SERVICE -H $MOTO_HOST -p $MOTO_PORT

Ikani:

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

Fayilo yomaliza ndi:

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

Timamanga chithunzi chatsopano ndikuchikankhira mu registry yathu.

Kenako, tiyeni tilembe zolemba zoyambira, mwachitsanzo Mtengo wa magawo SWF, pogwiritsa ntchito laibulale yogwira ntchito ndi 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'

Logic yake ndi iyi:

  • Tikayamba, timayika script yathu mkati /opt/init/bootstrap.py.
  • Ngati fayiloyo yayikidwa, idzachotsedwa.
  • Ngati palibe fayilo, seva yamoto yopanda kanthu ingoyamba.

Ndipo, mutha kunyoza chida chonse poyambitsa chidebe chimodzi:

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

Tiyeni tiyese molumikizana:

Moto. Kunyoza AWS

Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚!

Chifukwa chake titha kupanga docker-compose.yml, yomwe ingapulumutse kusintha koyesa nthawi:

makina oyimba.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

Kwenikweni, njira iyi ikhoza kugwiritsidwa ntchito osati pa laputopu ya wopanga. Kuyesa koyambirira kokhala ndi zoseketsa pambuyo pa msonkhano kumathandizira kuchotsa zovuta zomwe zingachitike mukamagwira ntchito pa dev *.

Zolemba:

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

Kuwonjezera ndemanga