Moto. Kudhihaki AWS

Upimaji ni sehemu muhimu ya mchakato wa maendeleo. Na wakati mwingine wasanidi wanahitaji kufanya majaribio ndani ya nchi, kabla ya kufanya mabadiliko.
Ikiwa maombi hutumia Amazon Huduma za mtandao, python maktaba moto kamili kwa hili.
Moto. Kudhihaki AWS

Orodha kamili ya chanjo ya rasilimali inaweza kutazamwa hapa.
Kuna turnip kwenye Github Hugo Picado - moto-server. Picha tayari, uzinduzi na matumizi. Nuance pekee ni kwamba baada ya uzinduzi, hapana AWS rasilimali bado hazijaundwa huko.

Naam, hiyo ni rahisi kutosha kurekebisha.

Tangu unapoanza unahitaji kutaja aina ya huduma (env kutofautiana MOTO_SERVICE), tunapaswa tu kuelezea uumbaji wa rasilimali.

Hebu tubadilishe kidogo anza.sh:

Badala ya

moto_server $MOTO_SERVICE -H $MOTO_HOST -p $MOTO_PORT

Ingiza:

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

Faili ya mwisho ni:

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

Tunaunda picha mpya na kuisukuma kwenye sajili yetu.

Ifuatayo, wacha tuandike hati ya uanzishaji wa rasilimali, kwa mfano Kikoa cha SWF, kwa kutumia maktaba kufanya kazi na 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'

Mantiki ni hii:

  • Wakati wa kuanza, tunaweka maandishi yetu ndani /opt/init/bootstrap.py.
  • Ikiwa faili imewekwa, itatekelezwa.
  • Ikiwa hakuna faili, seva ya moto-wazi itaanza tu.

Na, unaweza kudhihaki rasilimali nzima kwa kuzindua kontena moja:

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

Wacha tuijaribu kwa maingiliano:

Moto. Kudhihaki AWS

Inafanya kazi!

Kwa hivyo tunaweza kufanya docker-compose.yml, ambayo itaokoa mabadiliko ya majaribio ya wakati:

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

Kwa kweli, njia hii inaweza kutumika sio tu kwenye kompyuta ndogo ya msanidi programu. Majaribio ya awali yenye kejeli baada ya mkusanyiko yatasaidia kuondoa matatizo yanayoweza kutokea wakati wa kutumia mazingira ya dev*.

Marejeo:

Repo ya pikipiki - github.com/picadoh/motocker
Moto repo - github.com/spulec/moto
Hati za Boto3 - boto3.amazonaws.com/v1/documentation/api/latest/index.html

Chanzo: mapenzi.com

Kuongeza maoni