מוטו. לועג ל-AWS

בדיקה היא חלק בלתי נפרד מתהליך הפיתוח. ולפעמים מפתחים צריכים להריץ בדיקות באופן מקומי, לפני ביצוע שינויים.
אם האפליקציה משתמשת אמזון שירותי אינטרנט, פִּיתוֹן библиотека אופנוע מושלם עבור זה.
מוטו. לועג ל-AWS

ניתן לראות רשימה מלאה של כיסוי משאבים כאן.
יש לפת ב-Github הוגו פיקדו - שרת מוטו. תמונה מוכנה, השקה ושימוש. הניואנס היחיד הוא שאחרי ההשקה, לא AWS עדיין לא נוצרו שם משאבים.

ובכן, זה קל מספיק לתקן.

מאז שמתחיל צריך לציין את סוג השירות (env משתנה MOTO_SERVICE), אנחנו רק צריכים לתאר את יצירת המשאב.

בואו נשנה את זה קצת start.sh:

במקום זאת

moto_server $MOTO_SERVICE -H $MOTO_HOST -p $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
wait

הקובץ הסופי הוא:

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

אנו בונים תמונה חדשה ודוחפים אותה לרישום שלנו.

לאחר מכן, בוא נכתוב סקריפט אתחול משאבים, למשל דומיין SWF, באמצעות הספרייה לעבודה עם 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'

ההיגיון הוא כזה:

  • כאשר מתחילים, אנו מעלים את הסקריפט שלנו /opt/init/bootstrap.py.
  • אם הקובץ מותקן, הוא יבוצע.
  • אם אין קובץ, שרת המוטו החשוף פשוט יתחיל.

בנוסף, אתה יכול ללעוג למשאב שלם על ידי השקת מיכל אחד:

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

בואו ננסה זאת באופן אינטראקטיבי:

מוטו. לועג ל-AWS

Работает!

אז נוכל ליצור docker-compose.yml, שיחסוך זמן בבדיקת שינויים:

docker-compose.ym

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

למעשה, ניתן להשתמש בגישה זו לא רק במחשב הנייד של מפתח. בדיקות ראשוניות עם דוגמיות לאחר הרכבה יסייעו להיפטר מבעיות אפשריות בעת הפעלה על סביבות מפתח*.

קישורים:

ריפו של מוטוקר - github.com/picadoh/motocker
ריפו מוטו - github.com/spulec/moto
Boto3 Docs - boto3.amazonaws.com/v1/documentation/api/latest/index.html

מקור: www.habr.com

קנה אירוח אמין לאתרים עם הגנת DDoS, שרתי VPS VDS 🔥 קנה אחסון אתרים אמין עם הגנת DDoS, שרתי VPS VDS | ProHoster