Moto. Farashin AWS

Gwaji wani bangare ne na tsarin ci gaba. Kuma wani lokacin masu haɓakawa suna buƙatar gudanar da gwaje-gwaje a cikin gida, kafin yin canje-canje.
Idan aikace-aikacen yana amfani Amazon Web Services, python dakin karatu babur cikakke ga wannan.
Moto. Farashin AWS

Ana iya duba cikakken jerin abubuwan da ke tattare da albarkatu a nan.
Akwai juzu'i akan Github Hugo Picado - moto-server. Shirya hoto, ƙaddamar da amfani. Nuance kawai shine bayan ƙaddamarwa, a'a AWS Har yanzu ba a samar da albarkatun a can ba.

To, wannan yana da sauƙi don gyarawa.

Tun lokacin farawa kuna buƙatar saka nau'in sabis ɗin (kimanin m MOTO_SERVICE), dole ne mu bayyana ƙirƙirar albarkatun.

Bari mu canza shi kadan fara.sh:

Madadin haka

moto_server $MOTO_SERVICE -H $MOTO_HOST -p $MOTO_PORT

Saka:

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

Fayil na ƙarshe shine:

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

Muna gina sabon hoto kuma muna tura shi cikin rajistarmu.

Na gaba, bari mu rubuta rubutun fara kayan aiki, misali yankin SWF, ta amfani da ɗakin karatu don aiki tare da 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'

Ma'anar ita ce:

  • Lokacin farawa, muna hawa rubutun mu a ciki /opt/init/bootstrap.py.
  • Idan an ɗora fayil ɗin, za a aiwatar da shi.
  • Idan babu fayil, babur moto-uwar garken zai fara kawai.

Kuma, zaku iya yin ba'a ga dukan albarkatun ta hanyar ƙaddamar da akwati ɗaya:

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

Bari mu gwada shi ta hanyar mu'amala:

Moto. Farashin AWS

Yana aiki!

Don haka za mu iya yin docker-compose.yml, wanda zai adana canje-canjen gwaji na lokaci:

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

A zahiri, ana iya amfani da wannan hanyar ba kawai akan kwamfutar tafi-da-gidanka na mai haɓakawa ba. Gwaje-gwaje na farko tare da izgili bayan taro zai taimaka kawar da yuwuwar matsalolin yayin gudana akan wuraren dev *.

Tunani:

Motoci 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

Add a comment