Logo Zephyrnet

Kết hợp AWS Glue và Amazon MWAA để xây dựng các chiến lược chuyển đổi dự phòng và lựa chọn VPC nâng cao | Dịch vụ web của Amazon

Ngày:

Keo AWS là một dịch vụ tích hợp dữ liệu không có máy chủ giúp dễ dàng khám phá, chuẩn bị, di chuyển và tích hợp dữ liệu từ nhiều nguồn để phân tích, học máy (ML) và phát triển ứng dụng.

Khách hàng của AWS Glue thường phải đáp ứng các yêu cầu bảo mật nghiêm ngặt, đôi khi liên quan đến việc khóa kết nối mạng được phép thực hiện công việc hoặc chạy bên trong một VPC cụ thể để truy cập dịch vụ khác. Để chạy bên trong VPC, các công việc cần được gán cho một mạng con duy nhất, nhưng mạng con phù hợp nhất có thể thay đổi theo thời gian (ví dụ: dựa trên mức sử dụng và tính khả dụng), vì vậy, bạn có thể muốn đưa ra quyết định đó trong thời gian chạy, dựa trên về chiến lược của riêng bạn.

Quy trình công việc được quản lý của Amazon cho Luồng khí Apache (Amazon MWAA) là một dịch vụ AWS để chạy các quy trình làm việc Airflow được quản lý, cho phép viết logic tùy chỉnh để điều phối cách thức thực hiện các tác vụ như công việc AWS Glue.

Trong bài đăng này, chúng tôi trình bày cách chạy tác vụ AWS Glue như một phần của quy trình làm việc Airflow, với lựa chọn cấu hình động của mạng con VPC được gán cho tác vụ trong thời gian chạy.

Tổng quan về giải pháp

Để chạy bên trong VPC, tác vụ AWS Glue cần được chỉ định ít nhất một kết nối bao gồm cấu hình mạng. Mọi kết nối đều cho phép chỉ định VPC, mạng con và nhóm bảo mật, nhưng để đơn giản, bài đăng này sử dụng các kết nối thuộc loại: NETWORK, chỉ xác định cấu hình mạng và không liên quan đến hệ thống bên ngoài.

Nếu công việc có một mạng con cố định được chỉ định bởi một kết nối duy nhất, trong trường hợp dịch vụ ngừng hoạt động trên Các vùng khả dụng hoặc nếu mạng con không có sẵn vì lý do khác thì công việc sẽ không thể thực hiện được. Hơn nữa, mỗi nút (trình điều khiển hoặc nhân viên) trong tác vụ AWS Glue đều yêu cầu địa chỉ IP được chỉ định từ mạng con. Khi chạy đồng thời nhiều tác vụ lớn, điều này có thể dẫn đến thiếu địa chỉ IP và tác vụ chạy với ít nút hơn dự định hoặc hoàn toàn không chạy.

Các công việc trích xuất, chuyển đổi và tải (ETL) của AWS Glue cho phép chỉ định nhiều kết nối với nhiều cấu hình mạng. Tuy nhiên, công việc sẽ luôn cố gắng sử dụng cấu hình mạng của các kết nối theo thứ tự được liệt kê và chọn cấu hình đầu tiên vượt qua được yêu cầu. kiểm tra sức khỏe và có ít nhất hai địa chỉ IP để bắt đầu công việc, đây có thể không phải là lựa chọn tối ưu.

Với giải pháp này, bạn có thể nâng cao và tùy chỉnh hành vi đó bằng cách sắp xếp lại các kết nối một cách linh hoạt và xác định mức độ ưu tiên của lựa chọn. Nếu cần thử lại, các kết nối sẽ được ưu tiên lại dựa trên chiến lược vì các điều kiện có thể đã thay đổi kể từ lần chạy cuối cùng.

Nhờ đó, nó giúp ngăn công việc không chạy hoặc chạy dưới công suất do thiếu địa chỉ IP mạng con hoặc thậm chí ngừng hoạt động, đồng thời đáp ứng các yêu cầu về kết nối và bảo mật mạng.

Sơ đồ sau minh họa kiến ​​trúc giải pháp.

Điều kiện tiên quyết

Để làm theo các bước của bài đăng, bạn cần một người dùng có thể đăng nhập vào Bảng điều khiển quản lý AWS và có quyền truy cập Amazon MWAA, Đám mây riêng ảo Amazon (Amazon VPC) và AWS Glue. Khu vực AWS nơi bạn chọn triển khai giải pháp cần có khả năng tạo VPC và hai địa chỉ IP linh hoạt. Hạn ngạch Khu vực mặc định cho cả hai loại tài nguyên là năm, vì vậy bạn có thể cần yêu cầu tăng thông qua bảng điều khiển.

Bạn cũng cần một Quản lý truy cập và nhận dạng AWS (IAM) phù hợp để chạy các tác vụ AWS Glue nếu bạn chưa có. Để biết hướng dẫn, hãy tham khảo Tạo vai trò IAM cho AWS Glue.

Triển khai môi trường Airflow và VPC

Trước tiên, bạn sẽ triển khai môi trường Airflow mới, bao gồm việc tạo VPC mới với hai mạng con công cộng và hai mạng con riêng tư. Điều này là do Amazon MWAA yêu cầu khả năng chịu lỗi của Vùng sẵn sàng nên nó cần chạy trên hai mạng con trên hai Vùng sẵn sàng khác nhau trong Khu vực. Các mạng con công cộng được sử dụng để NAT Gateway có thể cung cấp quyền truy cập internet cho các mạng con riêng tư.

Hoàn thành các bước sau:

  1. tạo một Hình thành đám mây AWS mẫu trong máy tính của bạn bằng cách sao chép mẫu từ sau hướng dẫn nhanh vào một tập tin văn bản cục bộ.
  2. Trên bảng điều khiển AWS CloudFormation, hãy chọn Stacks trong khung điều hướng.
  3. Chọn Tạo ngăn xếp với tùy chọn Với các tài nguyên mới (tiêu chuẩn).
  4. Chọn Tải lên tệp mẫu và chọn tệp mẫu cục bộ.
  5. Chọn Sau.
  6. Hoàn tất các bước thiết lập, nhập tên cho môi trường và để các thông số còn lại làm mặc định.
  7. Ở bước cuối cùng, xác nhận rằng tài nguyên sẽ được tạo và chọn Gửi.

Quá trình tạo có thể mất 20–30 phút cho đến khi trạng thái của ngăn xếp thay đổi thành CREATE_COMPLETE.

Tài nguyên sẽ tiêu tốn nhiều thời gian nhất là môi trường Airflow. Trong khi nó đang được tạo, bạn có thể tiếp tục các bước sau cho đến khi bạn được yêu cầu mở Airflow UI.

  1. Trên ngăn xếp của Thông tin tab, lưu ý ID cho VPC và hai mạng con riêng tư (PrivateSubnet1PrivateSubnet2), để sử dụng trong bước tiếp theo.

Tạo kết nối AWS Glue

Mẫu CloudFormation triển khai hai mạng con riêng tư. Ở bước này, bạn tạo kết nối AWS Glue với từng kết nối để các tác vụ AWS Glue có thể chạy trong đó. Amazon MWAA gần đây đã bổ sung khả năng chạy cụm Airflow trên các VPC dùng chung, giúp giảm chi phí và đơn giản hóa việc quản lý mạng. Để biết thêm thông tin, hãy tham khảo Giới thiệu hỗ trợ VPC dùng chung trên Amazon MWAA.

Hoàn thành các bước sau để tạo kết nối:

  1. Trên bảng điều khiển AWS Glue, hãy chọn Kết nối dữ liệu trong khung điều hướng.
  2. Chọn Tạo kết nối.
  3. Chọn mạng làm nguồn dữ liệu.
  4. Chọn VPC và mạng con riêng tư (PrivateSubnet1) được tạo bởi ngăn xếp CloudFormation.
  5. Sử dụng nhóm bảo mật mặc định.
  6. Chọn Sau.
  7. Đối với tên kết nối, hãy nhập MWAA-Glue-Blog-Subnet1.
  8. Xem lại các chi tiết và hoàn thành việc tạo.
  9. Lặp lại các bước này bằng cách sử dụng PrivateSubnet2 và đặt tên cho kết nối MWAA-Glue-Blog-Subnet2.

Tạo công việc AWS Glue

Bây giờ, bạn tạo tác vụ AWS Glue, tác vụ này sẽ được kích hoạt sau bởi quy trình làm việc của Airflow. Công việc sử dụng các kết nối được tạo trong phần trước, nhưng thay vì gán chúng trực tiếp cho công việc như bạn thường làm, trong trường hợp này, bạn để trống danh sách kết nối công việc và để quy trình làm việc quyết định sử dụng kết nối nào trong thời gian chạy.

Tập lệnh công việc trong trường hợp này không có ý nghĩa quan trọng và chỉ nhằm mục đích chứng minh công việc được chạy trên một trong các mạng con, tùy thuộc vào kết nối.

  1. Trên bảng điều khiển AWS Glue, hãy chọn công việc ETL trong ngăn điều hướng, sau đó chọn Biên tập kịch bản.
  2. Để nguyên các tùy chọn mặc định (Spark engine và Bắt đầu tươi) và lựa chọn Tạo tập lệnh.
  3. Thay thế tập lệnh giữ chỗ bằng mã Python sau:
    import ipaddress
    import socket
    
    subnets = {
        "PrivateSubnet1": "10.192.20.0/24",
        "PrivateSubnet2": "10.192.21.0/24"
    }
    
    ip = socket.gethostbyname(socket.gethostname())
    subnet_name = "unknown"
    for subnet, cidr in subnets.items():
        if ipaddress.ip_address(ip) in ipaddress.ip_network(cidr):
            subnet_name = subnet
    
    print(f"The driver node has been assigned the ip: {ip}"
          + f" which belongs to the subnet: {subnet_name}")
    

  4. Đổi tên công việc thành AirflowBlogJob.
  5. trên Chi tiết công việc tab, cho Vai trò IAM, chọn bất kỳ vai trò nào và nhập 2 cho số lượng công nhân (chỉ để tiết kiệm).
  6. Lưu những thay đổi này để công việc được tạo.

Cấp quyền AWS Glue cho vai trò môi trường Airflow

Vai trò được tạo cho Airflow bằng mẫu CloudFormation cung cấp các quyền cơ bản để chạy quy trình công việc nhưng không tương tác với các dịch vụ khác như AWS Glue. Trong một dự án sản xuất, bạn sẽ xác định các mẫu của riêng mình với các quyền bổ sung này, nhưng trong bài đăng này, để đơn giản, bạn thêm các quyền bổ sung dưới dạng chính sách nội tuyến. Hoàn thành các bước sau:

  1. Trên bảng điều khiển IAM, chọn Vai trò trong khung điều hướng.
  2. Xác định vị trí vai trò được tạo bởi mẫu; nó sẽ bắt đầu bằng tên bạn đã gán cho ngăn xếp CloudFormation và sau đó -MwaaExecutionRole-.
  3. Trên trang chi tiết vai trò, trên Thêm quyền menu, chọn Tạo chính sách nội tuyến.
  4. Chuyển từ chế độ Visual sang JSON và nhập JSON sau vào hộp văn bản. Nó giả định rằng vai trò AWS Glue mà bạn có tuân theo quy ước bắt đầu bằng AWSGlueServiceRole. Để tăng cường bảo mật, bạn có thể thay thế tài nguyên ký tự đại diện trên ec2:DescribeSubnets quyền với ARN của hai mạng con riêng tư từ ngăn xếp CloudFormation.
    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "glue:GetConnection"
                ],
                "Resource": [
                    "arn:aws:glue:*:*:connection/MWAA-Glue-Blog-Subnet*",
                    "arn:aws:glue:*:*:catalog"
                ]
            },
            {
                "Effect": "Allow",
                "Action": [
                    "glue:UpdateJob",
                    "glue:GetJob",
                    "glue:StartJobRun",
                    "glue:GetJobRun"
                ],
                "Resource": [
                    "arn:aws:glue:*:*:job/AirflowBlogJob",
                    "arn:aws:glue:*:*:job/BlogAirflow"
                ]
            },
            {
                "Effect": "Allow",
                "Action": [
                    "ec2:DescribeSubnets"
                ],
                "Resource": "*"
            },
            {
                "Effect": "Allow",
                "Action": [
                    "iam:GetRole",
                    "iam:PassRole"
                ],
                "Resource": "arn:aws:iam::*:role/service-role/AWSGlueServiceRole*"
            }
        ]
    }
    

  5. Chọn Sau.
  6. đăng ký hạng mục thi GlueRelatedPermissions làm tên chính sách và hoàn tất việc tạo.

Trong ví dụ này, chúng tôi sử dụng tác vụ tập lệnh ETL; đối với công việc trực quan, vì nó tự động tạo tập lệnh khi lưu, nên vai trò Airflow sẽ cần có quyền ghi vào đường dẫn tập lệnh đã định cấu hình trên Dịch vụ lưu trữ đơn giản của Amazon (Amazon S3).

Tạo DAG luồng không khí

Quy trình làm việc của Luồng không khí dựa trên Đồ thị tuần hoàn có hướng (DAG), được xác định bởi tệp Python chỉ định theo chương trình các nhiệm vụ khác nhau có liên quan và sự phụ thuộc lẫn nhau của nó. Hoàn thành các tập lệnh sau để tạo DAG:

  1. Tạo một tệp cục bộ có tên glue_job_dag.py bằng cách sử dụng trình soạn thảo văn bản.

Trong mỗi bước sau đây, chúng tôi cung cấp một đoạn mã để nhập vào tệp và giải thích nội dung thực hiện.

  1. Đoạn mã sau bổ sung thêm các yêu cầu nhập mô-đun Python. Các mô-đun đã được cài đặt trên Airflow; nếu không phải như vậy, bạn sẽ cần phải sử dụng requirements.txt để cho Airflow biết mô-đun nào cần cài đặt. Nó cũng xác định các máy khách Boto3 mà mã sẽ sử dụng sau này. Theo mặc định, họ sẽ sử dụng cùng vai trò và Khu vực với Airflow, đó là lý do tại sao bạn thiết lập trước vai trò này với các quyền bổ sung cần thiết.
    import boto3
    from pendulum import datetime, duration
    from random import shuffle
    from airflow import DAG
    from airflow.decorators import dag, task
    from airflow.models import Variable
    from airflow.providers.amazon.aws.operators.glue import GlueJobOperator
    
    glue_client = boto3.client('glue')
    ec2 = boto3.client('ec2')
    

  2. Đoạn mã sau bổ sung ba chức năng để triển khai chiến lược thứ tự kết nối, xác định cách sắp xếp lại các kết nối đã cho để thiết lập mức độ ưu tiên của chúng. Đây chỉ là một ví dụ; bạn có thể xây dựng mã tùy chỉnh để triển khai logic của riêng mình, theo nhu cầu của bạn. Trước tiên, mã sẽ kiểm tra các IP có sẵn trên mỗi mạng con kết nối và phân tách những IP có đủ IP để chạy công việc hết công suất và những IP có thể được sử dụng vì chúng có sẵn ít nhất hai IP, đây là mức tối thiểu mà một công việc cần phải làm. bắt đầu. Nếu chiến lược được đặt thành random, nó sẽ sắp xếp ngẫu nhiên thứ tự trong mỗi nhóm kết nối được mô tả trước đó và thêm bất kỳ kết nối nào khác. Nếu chiến lược là capacity, nó sẽ sắp xếp chúng từ hầu hết các IP miễn phí đến ít IP nhất.
    def get_available_ips_from_connection(glue_connection_name):
        conn_response = glue_client.get_connection(Name=glue_connection_name)
        connection_properties = conn_response['Connection']['PhysicalConnectionRequirements']
        subnet_id = connection_properties['SubnetId']
        subnet_response = ec2.describe_subnets(SubnetIds=[subnet_id])
        return subnet_response['Subnets'][0]['AvailableIpAddressCount']
    
    def get_connections_free_ips(glue_connection_names, num_workers):
        good_connections = []
        usable_connections = []    
        for connection_name in glue_connection_names:
            try:
                available_ips = get_available_ips_from_connection(connection_name)
                # Priority to connections that can hold the full cluster and we haven't just tried
                if available_ips >= num_workers:
                    good_connections.append((connection_name, available_ips))
                elif available_ips >= 2: # The bare minimum to start a Glue job
                    usable_connections.append((connection_name, available_ips))                
            except Exception as e:
                print(f"[WARNING] Failed to check the free ips for:{connection_name}, will skip. Exception: {e}")  
        return good_connections, usable_connections
    
    def prioritize_connections(connection_list, num_workers, strategy):
        (good_connections, usable_connections) = get_connections_free_ips(connection_list, num_workers)
        print(f"Good connections: {good_connections}")
        print(f"Usable connections: {usable_connections}")
        all_conn = []
        if strategy=="random":
            shuffle(good_connections)
            shuffle(usable_connections)
            # Good connections have priority
            all_conn = good_connections + usable_connections
        elif strategy=="capacity":
            # We can sort both at the same time
            all_conn = good_connections + usable_connections
            all_conn.sort(key=lambda x: -x[1])
        else: 
            raise ValueError(f"Unknown strategy specified: {strategy}")    
        result = [c[0] for c in all_conn] # Just need the name
        # Keep at the end any other connections that could not be checked for ips
        result += [c for c in connection_list if c not in result]
        return result
    

  3. Đoạn mã sau tự tạo DAG với tác vụ công việc đang chạy, tác vụ này cập nhật công việc với thứ tự kết nối được xác định bởi chiến lược, chạy nó và chờ kết quả. Tên công việc, kết nối và chiến lược đến từ các biến Airflow nên có thể dễ dàng cấu hình và cập nhật. Nó có hai lần thử lại với cấu hình chờ theo cấp số nhân, vì vậy nếu tác vụ không thành công, nó sẽ lặp lại toàn bộ tác vụ bao gồm cả việc lựa chọn kết nối. Có thể bây giờ lựa chọn tốt nhất là một kết nối khác hoặc mạng con được chọn ngẫu nhiên trước đó nằm trong Vùng sẵn sàng hiện đang bị ngừng hoạt động và bằng cách chọn một mạng con khác, nó có thể phục hồi.
    with DAG(
        dag_id='glue_job_dag',
        schedule_interval=None, # Run on demand only
        start_date=datetime(2000, 1, 1), # A start date is required
        max_active_runs=1,
        catchup=False
    ) as glue_dag:
        
        @task(
            task_id="glue_task", 
            retries=2,
            retry_delay=duration(seconds = 30),
            retry_exponential_backoff=True
        )
        def run_job_task(**ctx):    
            glue_connections = Variable.get("glue_job_dag.glue_connections").strip().split(',')
            glue_jobname = Variable.get("glue_job_dag.glue_job_name").strip()
            strategy= Variable.get('glue_job_dag.strategy', 'random') # random or capacity
            print(f"Connections available: {glue_connections}")
            print(f"Glue job name: {glue_jobname}")
            print(f"Strategy to use: {strategy}")
            job_props = glue_client.get_job(JobName=glue_jobname)['Job']            
            num_workers = job_props['NumberOfWorkers']
            
            glue_connections = prioritize_connections(glue_connections, num_workers, strategy)
            print(f"Running Glue job with the connection order: {glue_connections}")
            existing_connections = job_props.get('Connections',{}).get('Connections', [])
            # Preserve other connections that we don't manage
            other_connections = [con for con in existing_connections if con not in glue_connections]
            job_props['Connections'] = {"Connections": glue_connections + other_connections}
            # Clean up properties so we can reuse the dict for the update request
            for prop_name in ['Name', 'CreatedOn', 'LastModifiedOn', 'AllocatedCapacity', 'MaxCapacity']:
                del job_props[prop_name]
    
            GlueJobOperator(
                task_id='submit_job',
                job_name=glue_jobname,
                iam_role_name=job_props['Role'].split('/')[-1],
                update_config=True,
                create_job_kwargs=job_props,
                wait_for_completion=True
            ).execute(ctx)   
            
        run_job_task()
    

Tạo quy trình làm việc Airflow

Bây giờ bạn tạo một quy trình làm việc gọi ra tác vụ AWS Glue mà bạn vừa tạo:

  1. Trên bảng điều khiển Amazon S3, tìm nhóm được tạo bởi mẫu CloudFormation, sẽ có tên bắt đầu bằng tên của ngăn xếp, sau đó -environmentbucket- (ví dụ, myairflowstack-environmentbucket-ap1qks3nvvr4).
  2. Bên trong nhóm đó, tạo một thư mục có tên dagsvà trong thư mục đó, tải tệp DAG lên glue_job_dag.py mà bạn đã tạo ở phần trước.
  3. Trên bảng điều khiển Amazon MWAA, hãy điều hướng đến môi trường bạn đã triển khai bằng ngăn xếp CloudFormation.

Nếu trạng thái chưa Có Sẵn, đợi cho đến khi nó đạt đến trạng thái đó. Sẽ không mất quá 30 phút kể từ khi bạn triển khai ngăn xếp CloudFormation.

  1. Chọn liên kết môi trường trên bảng để xem chi tiết môi trường.

Nó được định cấu hình để nhận DAG từ nhóm và thư mục bạn đã sử dụng ở các bước trước. Luồng khí sẽ theo dõi thư mục đó để biết những thay đổi.

  1. Chọn Mở giao diện người dùng luồng khí để mở một tab mới truy cập vào Giao diện người dùng Airflow, sử dụng bảo mật IAM tích hợp để đăng nhập.

Nếu có bất kỳ vấn đề nào với tệp DAG bạn đã tạo, nó sẽ hiển thị lỗi ở đầu trang cho biết các dòng bị ảnh hưởng. Trong trường hợp đó, hãy xem lại các bước và tải lên lại. Sau vài giây, nó sẽ phân tích cú pháp và cập nhật hoặc xóa biểu ngữ lỗi.

  1. trên quản trị viên menu, chọn Biến.
  2. Thêm ba biến với các khóa và giá trị sau:
    1. Key glue_job_dag.glue_connections có giá trị MWAA-Glue-Blog-Subnet1,MWAA-Glue-Blog-Subnet2.
    2. Key glue_job_dag.glue_job_name có giá trị AirflowBlogJob.
    3. Key glue_job_dag.strategy có giá trị capacity.

Chạy công việc với sự phân công mạng con động

Bây giờ bạn đã sẵn sàng chạy quy trình làm việc và xem chiến lược sắp xếp lại các kết nối một cách linh hoạt.

  1. Trên giao diện người dùng Luồng không khí, hãy chọn DAG, và trên hàng glue_job_dag, chọn biểu tượng phát.
  2. trên Xem menu, chọn Phiên bản nhiệm vụ.
  3. Trên bảng phiên bản, cuộn sang phải để hiển thị Log Url và chọn biểu tượng trên đó để mở nhật ký.

Nhật ký sẽ cập nhật khi tác vụ chạy; bạn có thể xác định vị trí dòng bắt đầu bằng “Công việc chạy keo theo thứ tự kết nối:” và các dòng trước đó hiển thị chi tiết về IP kết nối và danh mục được chỉ định. Nếu xảy ra lỗi, bạn sẽ thấy chi tiết trong nhật ký này.

  1. Trên bảng điều khiển AWS Glue, hãy chọn công việc ETL trong ngăn điều hướng, sau đó chọn công việc AirflowBlogJob.
  2. trên Chạy tab, chọn phiên bản đang chạy, sau đó chọn Nhật ký đầu ra liên kết, sẽ mở một tab mới.
  3. Trên tab mới, hãy sử dụng liên kết luồng nhật ký để mở nó.

Nó sẽ hiển thị IP mà trình điều khiển đã được chỉ định và nó thuộc mạng con nào, phải khớp với kết nối được chỉ định bởi Airflow (nếu nhật ký không hiển thị, hãy chọn Sơ yếu lý lịch vì vậy nó sẽ được cập nhật ngay khi có sẵn).

  1. Trên giao diện Airflow UI, chỉnh sửa biến Airflow glue_job_dag.strategy đặt nó thành random.
  2. Chạy DAG nhiều lần và xem thứ tự thay đổi như thế nào.

Làm sạch

Nếu bạn không cần triển khai nữa, hãy xóa tài nguyên để tránh phải trả thêm phí:

  1. Xóa tập lệnh Python mà bạn đã tải lên để nhóm S3 có thể tự động bị xóa trong bước tiếp theo.
  2. Xóa ngăn xếp CloudFormation.
  3. Xóa công việc AWS Glue.
  4. Xóa tập lệnh mà công việc đã lưu trong Amazon S3.
  5. Xóa các kết nối bạn đã tạo như một phần của bài đăng này.

Kết luận

Trong bài đăng này, chúng tôi đã trình bày cách AWS Glue và Amazon MWAA có thể phối hợp với nhau để xây dựng các quy trình làm việc tùy chỉnh nâng cao hơn, đồng thời giảm thiểu chi phí vận hành và quản lý. Giải pháp này cung cấp cho bạn nhiều quyền kiểm soát hơn về cách tác vụ AWS Glue của bạn hoạt động để đáp ứng các yêu cầu vận hành, mạng hoặc bảo mật đặc biệt.

Bạn có thể triển khai môi trường Amazon MWAA của riêng mình theo nhiều cách, chẳng hạn như với mẫu được sử dụng trong bài đăng này, trên bảng điều khiển Amazon MWAA hoặc sử dụng AWSCLI. Bạn cũng có thể triển khai các chiến lược của riêng mình để sắp xếp các công việc AWS Glue, dựa trên yêu cầu và kiến ​​trúc mạng của bạn (ví dụ: để chạy công việc gần với dữ liệu hơn khi có thể).


Giới thiệu về tác giả

Michael Greenshtein là Kiến trúc sư giải pháp chuyên môn về phân tích cho Khu vực công.

Gonzalo Herreros là một Kiến trúc sư Dữ liệu lớn Cấp cao trong nhóm AWS Glue.

tại chỗ_img

Tin tức mới nhất

tại chỗ_img