

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Schnellstartanleitung für Amazon Managed Workflows für Apache Airflow
<a name="quick-start"></a>

Dieses Schnellstart-Tutorial verwendet eine AWS CloudFormation Vorlage, mit der die Amazon VPC-Infrastruktur, ein Amazon S3 S3-Bucket mit einem `dags` Ordner und eine Amazon Managed Workflows for Apache Airflow Airflow-Umgebung zusammen erstellt werden.

**Topics**
+ [In diesem Tutorial](#quick-start-overview)
+ [Voraussetzungen](#quick-start-before)
+ [Schritt eins: Speichern Sie die CloudFormation Vorlage lokal](#quick-start-template)
+ [Schritt zwei: Erstellen Sie den Stack mit AWS CLI](#quick-start-createstack)
+ [Schritt drei: Laden Sie eine DAG auf Amazon S3 hoch und führen Sie sie in der Apache Airflow Airflow-Benutzeroberfläche aus](#quick-start-upload-dag)
+ [Schritt vier: Greifen Sie in Logs auf CloudWatch Logs zu](#quick-start-logs)
+ [Als nächstes](#quick-start-next-up)

## In diesem Tutorial
<a name="quick-start-overview"></a>

Verwenden Sie dieses Tutorial, um eine DAG auf Amazon S3 hochzuladen, die DAG in Apache Airflow auszuführen und CloudWatch mithilfe von drei AWS Command Line Interface (AWS CLI) Befehlen auf Logs zuzugreifen. Schließlich lernen Sie, eine IAM-Richtlinie für ein Apache Airflow Airflow-Entwicklungsteam zu erstellen.

**Anmerkung**  
Die CloudFormation Vorlage auf dieser Seite erstellt eine Amazon Managed Workflows for Apache Airflow-Umgebung für die neueste Version von Apache Airflow, verfügbar in. CloudFormation Die neueste verfügbare Version ist Apache Airflow v3.0.6.

Die CloudFormation Vorlage erstellt Folgendes:
+ **VPC-Infrastruktur**. Die Vorlage verwendet[Öffentliches Routing über das Internet](networking-about.md#networking-about-overview-public). Es verwendet den [Öffentlicher Netzwerkzugriffsmodus](configuring-networking.md#access-overview-public) für den Apache Airflow Webserver in. `WebserverAccessMode: PUBLIC_ONLY`
+ **Amazon S3 S3-Bucket**. Die Vorlage erstellt einen Amazon S3 S3-Bucket mit einem `dags` Ordner. Es ist so konfiguriert, dass der **gesamte öffentliche Zugriff blockiert** wird, wobei die **Bucket-Versionierung** aktiviert ist, wie unter definiert. [Erstellen Sie einen Amazon S3 S3-Bucket für Amazon MWAA](mwaa-s3-bucket.md)
+ **Amazon MWAA-Umgebung**. Die Vorlage erstellt eine Amazon MWAA-Umgebung, die dem `dags` Ordner im Amazon S3 S3-Bucket zugeordnet ist, eine Ausführungsrolle mit Berechtigungen für von Amazon MWAA verwendete AWS Dienste und die Standardeinstellung für die Verschlüsselung mit einem [AWS eigenen Schlüssel, wie unter definiert](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk). [Erstellen Sie eine Amazon MWAA-Umgebung](create-environment.md)
+ **CloudWatch Protokolle.** **Die Vorlage aktiviert Apache Airflow meldet sich für die *Airflow-Scheduler-Protokollgruppe, die Airflow-Webserver-Protokollgruppe, die Airflow-Worker-Protokollgruppe**, die Airflow-Worker-Protokollgruppe**, die Airflow-DAG-Verarbeitungsprotokollgruppe* *und die *Airflow-Aufgabenprotokollgruppe** an, wie CloudWatch unter definiert.** [Zugreifen auf Airflow-Protokolle in Amazon CloudWatch](monitoring-airflow.md)

In diesem Tutorial werden Sie die folgenden Aufgaben erledigen:
+ **Laden Sie eine DAG hoch und führen Sie** sie aus. Laden Sie das Tutorial-DAG von Apache Airflow für die neueste von Amazon MWAA unterstützte Apache Airflow Airflow-Version auf Amazon S3 hoch und führen Sie es dann in der Apache Airflow-Benutzeroberfläche aus, wie unter definiert. [Hinzufügen oder Aktualisieren DAGs](configuring-dag-folder.md)
+ **Zugriffs-Logs.** Greifen Sie unter CloudWatch Logs auf die *Airflow-Webserver-Protokollgruppe* zu, wie unter definiert. [Zugreifen auf Airflow-Protokolle in Amazon CloudWatch](monitoring-airflow.md)
+ **Erstellen Sie eine Zugriffskontrollrichtlinie**. Erstellen Sie in IAM eine Zugriffskontrollrichtlinie für Ihr Apache Airflow Airflow-Entwicklungsteam, wie unter definiert. [Zugreifen auf eine Amazon MWAA-Umgebung](access-policies.md)

**Anmerkung**  
Stellen Sie in der VPC, die die Amazon MWAA-Umgebung hostet, `assignIpv6AddressOnCreation` auf `true` für alle verbundenen Subnetze ein. Diese Einstellung gewährleistet die automatische Adresszuweisung des Internetprotokolls Version 6 (IPv6) zu den Ressourcen in diesen Subnetzen.

## Voraussetzungen
<a name="quick-start-before"></a>

Das AWS Command Line Interface (AWS CLI) ist ein Open-Source-Tool, mit dem Sie mithilfe von Befehlen in Ihrer Befehlszeilen-Shell mit AWS Diensten interagieren können. Um die Schritte auf dieser Seite abzuschließen, benötigen Sie Folgendes:
+ [AWS CLI — Installieren Sie Version 2.](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html)
+ [AWS CLI — Schnelle Konfiguration mit `aws configure`](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html).

## Schritt eins: Speichern Sie die CloudFormation Vorlage lokal
<a name="quick-start-template"></a>
+ Kopieren Sie den Inhalt der folgenden Vorlage und speichern Sie ihn lokal unter`mwaa-public-network.yml`. Sie können [die Vorlage auch herunterladen](./samples/mwaa-public-network.zip).

  ```
  AWSTemplateFormatVersion: "2010-09-09"
  
  Parameters:
  
    EnvironmentName:
      Description: An environment name that is prefixed to resource names
      Type: String
      Default: MWAAEnvironment
  
    VpcCIDR:
      Description: The IP range (CIDR notation) for this VPC
      Type: String
      Default: 10.192.0.0/16
  
    PublicSubnet1CIDR:
      Description: The IP range (CIDR notation) for the public subnet in the first Availability Zone
      Type: String
      Default: 10.192.10.0/24
  
    PublicSubnet2CIDR:
      Description: The IP range (CIDR notation) for the public subnet in the second Availability Zone
      Type: String
      Default: 10.192.11.0/24
  
    PrivateSubnet1CIDR:
      Description: The IP range (CIDR notation) for the private subnet in the first Availability Zone
      Type: String
      Default: 10.192.20.0/24
    PrivateSubnet2CIDR:
      Description: The IP range (CIDR notation) for the private subnet in the second Availability Zone
      Type: String
      Default: 10.192.21.0/24
    MaxWorkerNodes:
      Description: The maximum number of workers that can run in the environment
      Type: Number
      Default: 2
    DagProcessingLogs:
      Description: Log level for DagProcessing
      Type: String
      Default: INFO
    SchedulerLogsLevel:
      Description: Log level for SchedulerLogs
      Type: String
      Default: INFO
    TaskLogsLevel:
      Description: Log level for TaskLogs
      Type: String
      Default: INFO
    WorkerLogsLevel:
      Description: Log level for WorkerLogs
      Type: String
      Default: INFO
    WebserverLogsLevel:
      Description: Log level for WebserverLogs
      Type: String
      Default: INFO
  
  Resources:
    #####################################################################################################################
    # CREATE VPC
    #####################################################################################################################
  
    VPC:
      Type: AWS::EC2::VPC
      Properties:
        CidrBlock: !Ref VpcCIDR
        EnableDnsSupport: true
        EnableDnsHostnames: true
        Tags:
          - Key: Name
            Value: MWAAEnvironment
  
    InternetGateway:
      Type: AWS::EC2::InternetGateway
      Properties:
        Tags:
          - Key: Name
            Value: MWAAEnvironment
  
    InternetGatewayAttachment:
      Type: AWS::EC2::VPCGatewayAttachment
      Properties:
        InternetGatewayId: !Ref InternetGateway
        VpcId: !Ref VPC
  
    PublicSubnet1:
      Type: AWS::EC2::Subnet
      Properties:
        VpcId: !Ref VPC
        AvailabilityZone: !Select [ 0, !GetAZs '' ]
        CidrBlock: !Ref PublicSubnet1CIDR
        MapPublicIpOnLaunch: true
        Tags:
          - Key: Name
            Value: !Sub ${EnvironmentName} Public Subnet (AZ1)
  
    PublicSubnet2:
      Type: AWS::EC2::Subnet
      Properties:
        VpcId: !Ref VPC
        AvailabilityZone: !Select [ 1, !GetAZs  '' ]
        CidrBlock: !Ref PublicSubnet2CIDR
        MapPublicIpOnLaunch: true
        Tags:
          - Key: Name
            Value: !Sub ${EnvironmentName} Public Subnet (AZ2)
  
    PrivateSubnet1:
      Type: AWS::EC2::Subnet
      Properties:
        VpcId: !Ref VPC
        AvailabilityZone: !Select [ 0, !GetAZs  '' ]
        CidrBlock: !Ref PrivateSubnet1CIDR
        MapPublicIpOnLaunch: false
        Tags:
          - Key: Name
            Value: !Sub ${EnvironmentName} Private Subnet (AZ1)
  
    PrivateSubnet2:
      Type: AWS::EC2::Subnet
      Properties:
        VpcId: !Ref VPC
        AvailabilityZone: !Select [ 1, !GetAZs  '' ]
        CidrBlock: !Ref PrivateSubnet2CIDR
        MapPublicIpOnLaunch: false
        Tags:
          - Key: Name
            Value: !Sub ${EnvironmentName} Private Subnet (AZ2)
  
    NatGateway1EIP:
      Type: AWS::EC2::EIP
      DependsOn: InternetGatewayAttachment
      Properties:
        Domain: vpc
  
    NatGateway2EIP:
      Type: AWS::EC2::EIP
      DependsOn: InternetGatewayAttachment
      Properties:
        Domain: vpc
  
    NatGateway1:
      Type: AWS::EC2::NatGateway
      Properties:
        AllocationId: !GetAtt NatGateway1EIP.AllocationId
        SubnetId: !Ref PublicSubnet1
  
    NatGateway2:
      Type: AWS::EC2::NatGateway
      Properties:
        AllocationId: !GetAtt NatGateway2EIP.AllocationId
        SubnetId: !Ref PublicSubnet2
  
    PublicRouteTable:
      Type: AWS::EC2::RouteTable
      Properties:
        VpcId: !Ref VPC
        Tags:
          - Key: Name
            Value: !Sub ${EnvironmentName} Public Routes
  
    DefaultPublicRoute:
      Type: AWS::EC2::Route
      DependsOn: InternetGatewayAttachment
      Properties:
        RouteTableId: !Ref PublicRouteTable
        DestinationCidrBlock: 0.0.0.0/0
        GatewayId: !Ref InternetGateway
  
    PublicSubnet1RouteTableAssociation:
      Type: AWS::EC2::SubnetRouteTableAssociation
      Properties:
        RouteTableId: !Ref PublicRouteTable
        SubnetId: !Ref PublicSubnet1
  
    PublicSubnet2RouteTableAssociation:
      Type: AWS::EC2::SubnetRouteTableAssociation
      Properties:
        RouteTableId: !Ref PublicRouteTable
        SubnetId: !Ref PublicSubnet2
  
  
    PrivateRouteTable1:
      Type: AWS::EC2::RouteTable
      Properties:
        VpcId: !Ref VPC
        Tags:
          - Key: Name
            Value: !Sub ${EnvironmentName} Private Routes (AZ1)
  
    DefaultPrivateRoute1:
      Type: AWS::EC2::Route
      Properties:
        RouteTableId: !Ref PrivateRouteTable1
        DestinationCidrBlock: 0.0.0.0/0
        NatGatewayId: !Ref NatGateway1
  
    PrivateSubnet1RouteTableAssociation:
      Type: AWS::EC2::SubnetRouteTableAssociation
      Properties:
        RouteTableId: !Ref PrivateRouteTable1
        SubnetId: !Ref PrivateSubnet1
  
    PrivateRouteTable2:
      Type: AWS::EC2::RouteTable
      Properties:
        VpcId: !Ref VPC
        Tags:
          - Key: Name
            Value: !Sub ${EnvironmentName} Private Routes (AZ2)
  
    DefaultPrivateRoute2:
      Type: AWS::EC2::Route
      Properties:
        RouteTableId: !Ref PrivateRouteTable2
        DestinationCidrBlock: 0.0.0.0/0
        NatGatewayId: !Ref NatGateway2
  
    PrivateSubnet2RouteTableAssociation:
      Type: AWS::EC2::SubnetRouteTableAssociation
      Properties:
        RouteTableId: !Ref PrivateRouteTable2
        SubnetId: !Ref PrivateSubnet2
  
    SecurityGroup:
      Type: AWS::EC2::SecurityGroup
      Properties:
        GroupName: "mwaa-security-group"
        GroupDescription: "Security group with a self-referencing inbound rule."
        VpcId: !Ref VPC
  
    SecurityGroupIngress:
      Type: AWS::EC2::SecurityGroupIngress
      Properties:
        GroupId: !Ref SecurityGroup
        IpProtocol: "-1"
        SourceSecurityGroupId: !Ref SecurityGroup
  
    EnvironmentBucket:
      Type: AWS::S3::Bucket
      Properties:
        VersioningConfiguration:
          Status: Enabled
        PublicAccessBlockConfiguration: 
          BlockPublicAcls: true
          BlockPublicPolicy: true
          IgnorePublicAcls: true
          RestrictPublicBuckets: true
  
    #####################################################################################################################
    # CREATE MWAA
    #####################################################################################################################
  
    MwaaEnvironment:
      Type: AWS::MWAA::Environment
      DependsOn: MwaaExecutionPolicy
      Properties:
        Name: !Sub "${AWS::StackName}-MwaaEnvironment"
        SourceBucketArn: !GetAtt EnvironmentBucket.Arn
        ExecutionRoleArn: !GetAtt MwaaExecutionRole.Arn
        DagS3Path: dags/  
        NetworkConfiguration:
          SecurityGroupIds:
            - !GetAtt SecurityGroup.GroupId
          SubnetIds:
            - !Ref PrivateSubnet1
            - !Ref PrivateSubnet2
        WebserverAccessMode: PUBLIC_ONLY
        MaxWorkers: !Ref MaxWorkerNodes
        LoggingConfiguration:
          DagProcessingLogs:
            LogLevel: !Ref DagProcessingLogs
            Enabled: true
          SchedulerLogs:
            LogLevel: !Ref SchedulerLogsLevel
            Enabled: true
          TaskLogs:
            LogLevel: !Ref TaskLogsLevel
            Enabled: true
          WorkerLogs:
            LogLevel: !Ref WorkerLogsLevel
            Enabled: true
          WebserverLogs:
            LogLevel: !Ref WebserverLogsLevel
            Enabled: true
  
    MwaaExecutionRole:
      Type: AWS::IAM::Role
      Properties:
        AssumeRolePolicyDocument:
          Version: 2012-10-17&TCX5-2025-waiver;
          Statement:
            - Effect: Allow
              Principal:
                Service:
                  - airflow-env.amazonaws.com
                  - airflow.amazonaws.com
              Action:
               - "sts:AssumeRole"
        Path: "/service-role/"
  
    MwaaExecutionPolicy:
      DependsOn: EnvironmentBucket
      Type: AWS::IAM::ManagedPolicy
      Properties:
        Roles:
          - !Ref MwaaExecutionRole
        PolicyDocument:
          Version: 2012-10-17&TCX5-2025-waiver;
          Statement:
            - Effect: Allow
              Action: airflow:PublishMetrics
              Resource:
                - !Sub "arn:aws:airflow:${AWS::Region}:${AWS::AccountId}:environment/${EnvironmentName}"
            - Effect: Deny
              Action: s3:ListAllMyBuckets
              Resource:
                - !Sub "${EnvironmentBucket.Arn}"
                - !Sub "${EnvironmentBucket.Arn}/*"
  
            - Effect: Allow
              Action:
                - "s3:GetObject*"
                - "s3:GetBucket*"
                - "s3:List*"
              Resource:
                - !Sub "${EnvironmentBucket.Arn}"
                - !Sub "${EnvironmentBucket.Arn}/*"
            - Effect: Allow
              Action:
                - logs:DescribeLogGroups
              Resource: "*"
  
            - Effect: Allow
              Action:
                - logs:CreateLogStream
                - logs:CreateLogGroup
                - logs:PutLogEvents
                - logs:GetLogEvents
                - logs:GetLogRecord
                - logs:GetLogGroupFields
                - logs:GetQueryResults
                - logs:DescribeLogGroups
              Resource:
                - !Sub "arn:aws:logs:${AWS::Region}:${AWS::AccountId}:log-group:airflow-${AWS::StackName}*"
            - Effect: Allow
              Action: cloudwatch:PutMetricData
              Resource: "*"
            - Effect: Allow
              Action:
                - sqs:ChangeMessageVisibility
                - sqs:DeleteMessage
                - sqs:GetQueueAttributes
                - sqs:GetQueueUrl
                - sqs:ReceiveMessage
                - sqs:SendMessage
              Resource:
                - !Sub "arn:aws:sqs:${AWS::Region}:*:airflow-celery-*"
            - Effect: Allow
              Action:
                - kms:Decrypt
                - kms:DescribeKey
                - "kms:GenerateDataKey*"
                - kms:Encrypt
              NotResource: !Sub "arn:aws:kms:*:${AWS::AccountId}:key/*"
              Condition:
                StringLike:
                  "kms:ViaService":
                    - !Sub "sqs.${AWS::Region}.amazonaws.com"
  Outputs:
    VPC:
      Description: A reference to the created VPC
      Value: !Ref VPC
  
    PublicSubnets:
      Description: A list of the public subnets
      Value: !Join [ ",", [ !Ref PublicSubnet1, !Ref PublicSubnet2 ]]
  
    PrivateSubnets:
      Description: A list of the private subnets
      Value: !Join [ ",", [ !Ref PrivateSubnet1, !Ref PrivateSubnet2 ]]
  
    PublicSubnet1:
      Description: A reference to the public subnet in the 1st Availability Zone
      Value: !Ref PublicSubnet1
  
    PublicSubnet2:
      Description: A reference to the public subnet in the 2nd Availability Zone
      Value: !Ref PublicSubnet2
  
    PrivateSubnet1:
      Description: A reference to the private subnet in the 1st Availability Zone
      Value: !Ref PrivateSubnet1
  
    PrivateSubnet2:
      Description: A reference to the private subnet in the 2nd Availability Zone
      Value: !Ref PrivateSubnet2
  
    SecurityGroupIngress:
      Description: Security group with self-referencing inbound rule
      Value: !Ref SecurityGroupIngress
  
    MwaaApacheAirflowUI:
      Description: MWAA Environment
      Value: !Sub  "https://${MwaaEnvironment.WebserverUrl}"
  ```

## Schritt zwei: Erstellen Sie den Stack mit AWS CLI
<a name="quick-start-createstack"></a>

1. Navigieren Sie in der Befehlszeile zu dem Verzeichnis, in dem `mwaa-public-network.yml` es gespeichert ist. Zum Beispiel:

   ```
   cd mwaaproject
   ```

1. Verwenden Sie den [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/create-stack.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/create-stack.html)Befehl, um den Stack mit dem zu erstellen AWS CLI.

   ```
   aws cloudformation create-stack --stack-name mwaa-environment-public-network --template-body file://mwaa-public-network.yml --capabilities CAPABILITY_IAM
   ```
**Anmerkung**  
Die Erstellung der Amazon VPC-Infrastruktur, des Amazon S3-Buckets und der Amazon MWAA-Umgebung dauert mehr als 30 Minuten.

## Schritt drei: Laden Sie eine DAG auf Amazon S3 hoch und führen Sie sie in der Apache Airflow Airflow-Benutzeroberfläche aus
<a name="quick-start-upload-dag"></a>

1. Kopieren Sie den Inhalt der `tutorial.py` Datei für die [neueste unterstützte Apache Airflow Airflow-Version](https://airflow.apache.org/docs/apache-airflow/2.2.2/tutorial.html) und speichern Sie sie `tutorial.py` lokal unter.

1. Navigieren Sie in der Befehlszeile zu dem Verzeichnis, in dem `tutorial.py` es gespeichert ist. Zum Beispiel:

   ```
   cd mwaaproject
   ```

1. Verwenden Sie den folgenden Befehl, um alle Ihre Amazon S3 S3-Buckets aufzulisten.

   ```
   aws s3 ls
   ```

1. Verwenden Sie den folgenden Befehl, um die Dateien und Ordner im Amazon S3 S3-Bucket für Ihre Umgebung aufzulisten.

   ```
   aws s3 ls s3://YOUR_S3_BUCKET_NAME
   ```

1. Verwenden Sie das folgende Skript, um die `tutorial.py` Datei in Ihren `dags` Ordner hochzuladen. Ersetzen Sie den Beispielwert durch*amzn-s3-demo-bucket*.

   ```
   aws s3 cp tutorial.py s3://amzn-s3-demo-bucket/dags/
   ```

1. Öffnen Sie die Seite [Umgebungen](https://console.aws.amazon.com/mwaa/home#/environments) auf der Amazon MWAA-Konsole.

1. Wählen Sie eine Umgebung aus.

1. Wählen Sie „**Airflow-Benutzeroberfläche öffnen**“.

1. Wählen Sie auf der Apache Airflow Airflow-Benutzeroberfläche aus der Liste der verfügbaren DAGs Optionen das **Tutorial** DAG aus.

1. Wählen Sie auf der Seite mit den DAG-Details neben Ihrem DAG-Namen die Option **DAG pausieren/Pause aufheben**, um die DAG aufzuheben.

1. **Wählen Sie „DAG auslösen“.**

## Schritt vier: Greifen Sie in Logs auf CloudWatch Logs zu
<a name="quick-start-logs"></a>

Sie können in der CloudWatch Konsole auf Apache Airflow Airflow-Protokolle für alle Apache Airflow Airflow-Protokolle zugreifen, die CloudFormation vom Stack aktiviert wurden. Im folgenden Abschnitt wird erklärt, wie Sie auf Protokolle für die *Airflow-Webserver-Protokollgruppe* zugreifen können.

1. Öffnen Sie die Seite [Umgebungen](https://console.aws.amazon.com/mwaa/home#/environments) auf der Amazon MWAA-Konsole.

1. Wählen Sie eine Umgebung aus.

1. Wählen Sie im **Bereich **Überwachung** die Airflow-Webserver-Protokollgruppe** aus.

1. **Wählen Sie unter `webserver_console_ip` Log-Streams die Option Log Streams aus.**

## Als nächstes
<a name="quick-start-next-up"></a>
+ Erfahren Sie mehr darüber DAGs, wie Sie Python-Abhängigkeiten in a hochladen, angeben `requirements.txt` und benutzerdefinierte Plugins `plugins.zip` in a angeben[Arbeiten mit DAGs auf Amazon MWAA](working-dags.md).
+ Erfahren Sie mehr über die bewährten Methoden, die wir empfehlen, um die Leistung Ihrer Umgebung zu optimieren[Leistungsoptimierung für Apache Airflow auf Amazon MWAA](best-practices-tuning.md).
+ Erstellen Sie ein Monitoring-Dashboard für Ihre Umgebung unter[Überwachen von Dashboards und Alarmen auf Amazon MWAA](monitoring-dashboard.md).
+ Führen Sie einige der DAG-Codebeispiele in aus[Codebeispiele für Amazon Managed Workflows für Apache Airflow](sample-code.md).