Moto. AWS ngece

Pengujian minangka bagean integral saka proses pangembangan. Lan kadhangkala pangembang kudu nganakake tes sacara lokal, sadurunge nindakake owah-owahan.
Yen aplikasi nggunakake Amazon Web Services, python perpustakaan motor sampurna kanggo iki.
Moto. AWS ngece

Dhaptar lengkap jangkoan sumber daya bisa dideleng kene.
Ana turnip ing Github Hugo Picado - moto-server. Gambar siap, bukak lan gunakake. Mung nuansa yaiku sawise diluncurake, ora AWS sumber daya durung digawe ana.

Inggih, cukup gampang kanggo ndandani.

Wiwit nalika miwiti sampeyan kudu nemtokake jinis layanan (sugeng variabel MOTO_SERVICE), kita mung kudu njlèntrèhaké nggawe sumber daya.

Ayo diganti sethithik miwiti.sh:

Tinimbang

moto_server $MOTO_SERVICE -H $MOTO_HOST -p $MOTO_PORT

Sisipake:

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 pungkasan yaiku:

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

Kita mbangun gambar anyar lan push menyang pendaptaran kita.

Sabanjure, ayo nulis skrip inisialisasi sumber daya, contone domain SWF, nggunakake perpustakaan kanggo nggarap 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'

Logikanya begini:

  • Nalika miwiti, kita masang skrip /opt/init/bootstrap.py.
  • Yen file dipasang, bakal dieksekusi.
  • Yen ora ana file, bare moto-server mung bakal miwiti.

Lan, sampeyan bisa moyoki kabeh sumber kanthi ngluncurake siji wadhah:

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

Ayo coba kanthi interaktif:

Moto. AWS ngece

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

Supaya kita bisa nggawe docker-compose.yml, sing bakal ngirit wektu pangowahan tes:

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

Bener, pendekatan iki bisa digunakake ora mung ing laptop pangembang. Tes awal kanthi mock sawise perakitan bakal mbantu nyingkirake masalah sing bisa ditindakake nalika mlaku ing lingkungan dev *.

Cathetan:

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

Source: www.habr.com

Add a comment