Moto. Kuseka AWS

Kuedza chikamu chakakosha chegadziriro yekuvandudza. Uye dzimwe nguva vanogadzira vanofanirwa kumhanyisa bvunzo munharaunda, vasati vaita shanduko.
Kana iyo application ichishandisa Amazon Web Services, python raibhurari moto zvakakwana kune izvi.
Moto. Kuseka AWS

Rondedzero yakazara yekuvharirwa kwezviwanikwa inogona kutariswa pano.
Pane turnip paGithub Hugo Picado - moto-server. Yakagadzirira mufananidzo, kutanga uye kushandisa. Iyo chete nuance ndeyekuti mushure mekutanga, kwete AWS zviwanikwa hazvisati zvagadzirwa ipapo.

Zvakanaka, zviri nyore kugadzirisa.

Kubva paunotanga iwe unofanirwa kutsanangura rudzi rwebasa (approx kusiyanisa MOTO_SERVICE), isu tinongofanirwa kutsanangura kusikwa kweiyo sosi.

Ngatichinjei zvishoma tanga.sh:

Panzvimbo iyoyo

moto_server $MOTO_SERVICE -H $MOTO_HOST -p $MOTO_PORT

Isa:

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

Iyo yekupedzisira faira ndeye:

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

Isu tinovaka mufananidzo mutsva uye tousundira mukunyoresa kwedu.

Tevere, ngatinyore resource yekutanga script, semuenzaniso SWF domain, uchishandisa raibhurari yekushanda neAWS - 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'

Iyo logic ndeiyi:

  • Kana tichitanga, tinoisa script yedu mukati /opt/init/bootstrap.py.
  • Kana iyo faira ikaiswa, ichaitwa.
  • Kana pasina faira, iyo isina moto-server inongotanga.

Uye, iwe unogona kuseka chimbo chese nekutanga mudziyo mumwe chete:

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

Ngatiedzei tichipindirana:

Moto. Kuseka AWS

Inoshanda!

Saka isu tinogona kugadzira docker-compose.yml, iyo inochengetedza nguva yekuyedza shanduko:

docker-kunyora.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

Chaizvoizvo, nzira iyi inogona kushandiswa kwete chete palaptop yemugadziri. Yekutanga bvunzo nekuseka mushure megungano ichabatsira kubvisa matambudziko anogona kuitika kana uchimhanya pane dev * nharaunda.

Mareferensi:

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

Voeg