Moto. Moyok AWS

Tés mangrupa bagian integral tina prosés pangwangunan. Sarta kadangkala pamekar kudu ngajalankeun tés lokal, saméméh committing parobahan.
Lamun aplikasi ngagunakeun Layanan Web Amazon, python perpustakaan Moto sampurna pikeun ieu.
Moto. Moyok AWS

Daptar lengkep ngeunaan cakupan sumberdaya tiasa ditingali di dieu.
Aya turnip on Github Hugo Picado - moto-server. Gambar siap, peluncuran sareng dianggo. Hiji-hijina nuansa nyaéta saatos peluncuran, henteu AWS sumberdaya teu acan dijieun aya.

Muhun, éta cukup gampang pikeun ngalereskeun.

Kusabab nalika ngamimitian anjeun kedah netepkeun jinis jasa (utusan variabel MOTO_SERVICE), urang ngan kudu ngajelaskeun kreasi sumberdaya.

Hayu urang ngarobah éta saeutik ngamimitian.sh:

Malahan

moto_server $MOTO_SERVICE -H $MOTO_HOST -p $MOTO_PORT

Lebetkeun:

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

File ahir nyaéta:

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

Urang ngawangun gambar anyar jeung nyorong kana pendaptaran urang.

Salajengna, hayu urang nulis naskah initialization sumberdaya, contona domain SWF, ngagunakeun perpustakaan pikeun gawé bareng 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'

Logikana kieu:

  • Nalika ngamimitian, urang pasang skrip urang /opt/init/bootstrap.py.
  • Upami file dipasang, éta bakal dieksekusi.
  • Lamun teu aya file, nu bulistir Moto-server saukur bakal ngamimitian.

Sareng, anjeun tiasa nyindiran sadayana sumber ku ngaluncurkeun hiji wadah:

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

Hayu urang cobaan sacara interaktif:

Moto. Moyok AWS

Gawéna!

Janten urang tiasa ngadamel docker-compose.yml, anu bakal ngahémat waktos parobihan tés:

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

Sabenerna, pendekatan ieu tiasa dianggo henteu ngan ukur dina laptop pamekar. Tes awal sareng moyok saatos perakitan bakal ngabantosan ngaleungitkeun masalah anu mungkin nalika ngajalankeun dina lingkungan dev *.

Rujukan:

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

sumber: www.habr.com

Tambahkeun komentar