برنامه نویسی

گرفتن mwaa-local-runner در AWS Cloud9

اگر به دنبال راه‌اندازی mwaa-local-runner و اجرای برنامه‌نویس Cloud9 خود هستید، در اینجا یک دستور العمل سریع آورده شده است. این ممکن است بهینه ترین راه نباشد، بنابراین من بسیار خوشحالم که پیشنهاداتی در مورد چگونگی بهبود آن دریافت کردم. آنچه من در اینجا پوشش خواهم داد نحوه استقرار mwaa-local-runner بر روی یک Cloud9 IDE استاندارد است که در یک VPC پیش فرض مستقر شده است.

در حال به روز رسانی محیط AWS Cloud9 من

اولین کاری که باید انجام می دادم این بود که اندازه دیسک محلی خود را افزایش دهم زیرا Cloud9 تنها 10 گیگابایت فضای ذخیره سازی ارائه می دهد. این برای موارد استفاده معمولی خوب است، اما ما قصد داریم تصاویر کانتینر بسازیم، بنابراین باید این را بالاتر تنظیم کنیم.

pip3 install --user --upgrade boto3
export instance_id=$(curl -s http://169.254.169.254/latest/meta-data/instance-id)
python -c "import boto3
import os
from botocore.exceptions import ClientError 
ec2 = boto3.client('ec2')
volume_info = ec2.describe_volumes(
    Filters=[
        {
            'Name': 'attachment.instance-id',
            'Values': [
                os.getenv('instance_id')
            ]
        }
    ]
)
volume_id = volume_info['Volumes'][0]['VolumeId']
try:
    resize = ec2.modify_volume(    
            VolumeId=volume_id,    
            Size=30
    )
    print(resize)
except ClientError as e:
    if e.response['Error']['Code'] == 'InvalidParameterValue':
        print('ERROR MESSAGE: {}'.format(e))"
if [ $? -eq 0 ]; then
    sudo reboot
fi
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

نصب چند ابزار گم شده

کار بعدی که باید انجام دهم این است که “docker-compose” را نصب کنم، زیرا در حالی که Docker نصب است، docker-compose نصب نیست. این اسکریپتی است که من استفاده می کنم

wget https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)
sudo mv docker-compose-$(uname -s)-$(uname -m) /usr/bin/docker-compose
chmod +x /usr/bin/docker-compose
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

و اگر این موفقیت آمیز بود، اکنون باید آن را از طریق خط فرمان در دسترس داشته باشید

ops:~/environment $ docker-compose version
Docker Compose version v2.17.2
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

گرفتن آدرس IP عمومی AWS Cloud9 من

این باید تمام چیزی باشد که برای شروع به آن نیاز دارید. با این حال، قبل از ادامه به یک اطلاعات نیاز داریم، و آن آدرس IP عمومی برای نمونه Cloud9 شما است. ما به این نیاز داریم زیرا می خواهیم پارامتر پیکربندی URL را در mwaa-local-runner به روز کنیم. (اگر این کار را انجام ندهید، هنگام دسترسی به Airflow از طریق UI، 400 خطای Gateway دریافت خواهید کرد). دستور زیر را اجرا کنید تا شما را پیدا کنید

curl http://169.254.169.254/latest/meta-data/public-ipv4
3.253.9.131
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

پیکربندی و ساخت mwaa-local-runner

اکنون می توانید پروژه mwaa-local-runner را در محیط Cloud9 خود بررسی کنید

git clone https://github.com/aws/aws-mwaa-local-runner.git
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اکنون باید چند چیز را تغییر دهیم.

اولین مورد به روز رسانی airflow.cfg (docker/config/airflow.cfg) است تا بتوانیم پارامتر base_url (خط 406) را با IP عمومی نمونه Cloud9 شما به روز کنیم.

#base_url = http://localhost:8080
base_url = https://3.253.9.131:8080
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

تغییر بعدی که هنوز در airflow.cfg است، برای به‌روزرسانی سریع DAGها در پوشه DAGs. خط 757 تغییر کرده است

#dag_dir_list_interval = 300
dag_dir_list_interval = 5

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اکنون می توانید این فایل را ذخیره کنید و آماده ساخت تصویر mwaa-local-runner خود هستید. شما این کار را با استفاده از دستور زیر انجام می دهید (و این در برابر هر نسخه ای از Apache Airflow که mwaa پشتیبانی می کند کار می کند)

mwaa-local-env build-image
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اکنون حدود 10 دقیقه طول می کشد تا فرآیند ساخت کامل شود. برو نوشیدنی مورد علاقه خود را بخور و سپس برگرد. امیدوارم چیزی شبیه این را ببینید:

[+] Building 543.8s (27/27) FINISHED                                                                                                                                                                           
 => [internal] load build definition from Dockerfile                                                                                                                                                      0.0s
 => => transferring dockerfile: 43B                                                                                                                                                                       0.0s
 => [internal] load .dockerignore                                                                                                                                                                         0.0s
 => => transferring context: 2B                                                                                                                                                                           0.0s
 => [internal] load metadata for docker.io/library/amazonlinux:2                                                                                                                                          1.6s
 => [auth] library/amazonlinux:pull token for registry-1.docker.io                                                                                                                                        0.0s
 => CACHED [ 1/21] FROM docker.io/library/amazonlinux:2@sha256:ad9b9135cd4eaa9f5a7b903b1cd72fef23027260c9aa84a743d090b64ce3609e                                                                           0.0s
 => [internal] load build context                                                                                                                                                                         0.0s
 => => transferring context: 5.46kB                                                                                                                                                                       0.0s
 => [ 2/21] COPY script/bootstrap.sh /bootstrap.sh                                                                                                                                                        0.1s
 => [ 3/21] COPY script/systemlibs.sh /systemlibs.sh                                                                                                                                                      0.0s
 => [ 4/21] COPY script/generate_key.sh /generate_key.sh                                                                                                                                                  0.0s
 => [ 5/21] COPY script/run-startup.sh /run-startup.sh                                                                                                                                                    0.0s
 => [ 6/21] COPY script/shell-launch-script.sh /shell-launch-script.sh                                                                                                                                    0.0s
 => [ 7/21] COPY script/verification.sh /verification.sh                                                                                                                                                  0.0s
 => [ 8/21] COPY config/constraints.txt /constraints.txt                                                                                                                                                  0.0s
 => [ 9/21] COPY config/mwaa-base-providers-requirements.txt /mwaa-base-providers-requirements.txt                                                                                                        0.0s
 => [10/21] RUN chmod u+x /systemlibs.sh && /systemlibs.sh                                                                                                                                              133.1s
 => [11/21] RUN chmod u+x /bootstrap.sh && /bootstrap.sh                                                                                                                                                343.3s 
 => [12/21] RUN chmod u+x /generate_key.sh && /generate_key.sh                                                                                                                                            0.6s 
 => [13/21] RUN chmod u+x /run-startup.sh                                                                                                                                                                 0.3s 
 => [14/21] RUN chmod u+x /shell-launch-script.sh                                                                                                                                                         0.3s 
 => [15/21] RUN chmod u+x /verification.sh                                                                                                                                                                0.5s 
 => [16/21] COPY script/entrypoint.sh /entrypoint.sh                                                                                                                                                      0.0s 
 => [17/21] COPY config/airflow.cfg /usr/local/airflow/airflow.cfg                                                                                                                                        0.0s 
 => [18/21] COPY config/webserver_config.py /usr/local/airflow/webserver_config.py                                                                                                                        0.0s
 => [19/21] RUN chown -R airflow: /usr/local/airflow                                                                                                                                                     31.4s
 => [20/21] RUN chmod +x /entrypoint.sh                                                                                                                                                                   0.4s
 => [21/21] WORKDIR /usr/local/airflow                                                                                                                                                                    0.1s
 => exporting to image                                                                                                                                                                                   31.7s
 => => exporting layers                                                                                                                                                                                  31.7s
 => => writing image sha256:54d466e5db131a71b694018f94ab69653794548551c37b05d172f5070f4deda8                                                                                                              0.0s
 => => naming to docker.io/amazon/mwaa-local:2_4                                                                                                                                                          0.0s

Use 'docker scan' to run Snyk tests against images to find vulnerabilities and learn how to fix them
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

تبریک می گویم، قسمت سخت انجام شد.

توجه داشته باشید اگر خطای زیر را مشاهده کردید:

16 188.4 + sudo -u airflow pip3 install --no-use-pep517 --constraint /constraints.txt poetry
16 188.8 
16 188.8 Usage:   
16 188.8   pip3 install [options] <requirement specifier> [package-index-options] ...
16 188.8   pip3 install [options] -r <requirements file> [package-index-options] ...
16 188.8   pip3 install [options] [-e] <vcs project url> ...
16 188.8   pip3 install [options] [-e] <local project path> ...
16 188.8   pip3 install [options] <archive url/path> ...
16 188.8 
16 188.8 --no-use-pep517 error: It is not possible to use --no-use-pep517
16 188.8 without setuptools and wheel installed.

executor failed running [/bin/sh -c chmod u+x /bootstrap.sh && /bootstrap.sh]: exit code: 2

شما باید اسکریپت “bootstrap.sh” را به روز کنید و خط 43 را به روز کنید تا به نظر برسد:

pip3 install $PIP_OPTION --upgrade 'pip<23'

این برای حل مشکل پیپ نسخه 23.1 است

برای شروع mwaa-local-runner، تنها کاری که اکنون باید انجام دهید این است:

mwaa-local-env start
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

و Apache Airflow شروع به بوت شدن خواهد کرد. 2-3 دقیقه طول می کشد، اما پس از آماده شدن چیزی شبیه به آن خواهید دید

aws-mwaa-local-runner-2_4-local-runner-1  | [2023-04-17 10:09:29 +0000] [202] [INFO] Starting gunicorn 20.1.0
aws-mwaa-local-runner-2_4-local-runner-1  | [2023-04-17 10:09:29 +0000] [202] [INFO] Listening at: http://0.0.0.0:8080 (202)
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

و اکنون می توانید یک مرورگر را باز کنید و به آدرس IP عمومی خود اشاره کنید و به Apache Airflow در پورت 8080 دسترسی پیدا کنید.

نتیجه

این پست کوتاه به شما نشان می‌دهد که چگونه می‌توانید mwaa-local-runner را در نمونه‌های AWS Cloud9 خود اجرا کنید. من استفاده از این را آزمایش کرده‌ام، و واقعاً دوست دارم که می‌توانم آن را از تنظیمات محلی خود جدا کنم. من همچنان روی تنظیم تنظیمات کار می کنم تا بتوانم دسترسی عمومی به نمونه Cloud9 را فقط به آدرس IP خودم محدود کنم، کاری که توصیه می کنم شما انجام دهید.

اگر این پست وبلاگ را مفید یافتید، لطفاً با تکمیل این نظرسنجی بسیار کوتاه در اینجا، بازخوردی به من بدهید

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا