

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.

# Instance-Profil von Amazon ECS Managed Instances
<a name="managed-instances-instance-profile"></a>

Ein Instance-Profil ist ein IAM-Container, der genau eine IAM-Rolle enthält und es Amazon ECS Managed Instances ermöglicht, diese Rolle sicher anzunehmen. Das Instance-Profil enthält eine Instance-Rolle, die der ECS-Agent übernimmt, um Instances bei Clustern zu registrieren und mit dem ECS-Service zu kommunizieren.

**Wichtig**  
Wenn Sie Amazon ECS Managed Instances mit der `AmazonECSInfrastructureRolePolicyForManagedInstances` verwalteten Richtlinie verwenden, muss der Name der Instance-Rolle mit beginnen`ecsInstanceRole`. Die Richtlinie gilt `iam:PassRole` bis`arn:aws:iam::*:role/ecsInstanceRole*`, sodass ein nicht übereinstimmender Name beim Start der Aufgabe zu einem Autorisierungsfehler führt. Dies ist üblich, CloudFormation wenn Sie es weglassen`RoleName`, da CloudFormation automatisch Namen wie generiert werden. `MyStack-InstanceRole-ABC123`  
Wenn Sie stattdessen eine benutzerdefinierte Infrastruktur-Rollenrichtlinie verwenden, kann die Instanzrolle einen beliebigen Namen haben, sofern Ihre Richtlinie einen `iam:PassRole` Zuschuss beinhaltet, der auf den ARN der Instanzrolle abzielt.

## Erstellen Sie die Rolle mit der Vertrauensrichtlinie.
<a name="create-instance-role"></a>

Ersetze alles *user input* durch deine eigenen Informationen.

1. Erstellen Sie eine Datei namens `ecsInstanceRole-trust-policy.json`, die die Vertrauensrichtlinie enthält, die für die IAM-Rolle verwendet werden soll. Die Datei sollte Folgendes enthalten:

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": { "Service": "ec2.amazonaws.com"},
         "Action": "sts:AssumeRole"
       }
     ]
   }
   ```

------

1. Verwenden Sie den folgenden AWS CLI Befehl, um eine Rolle zu erstellen, die `ecsInstanceRole` mithilfe der Vertrauensrichtlinie benannt wird, die Sie im vorherigen Schritt erstellt haben.

   ```
   aws iam create-role \
         --role-name ecsInstanceRole \
         --assume-role-policy-document file://ecsInstanceRole-trust-policy.json
   ```

1. Hängen Sie die AWS verwaltete `AmazonECSInstanceRolePolicyForManagedInstances` Richtlinie an die `ecsInstanceRole` Rolle an.

   ```
   aws iam attach-role-policy \
         --role-name ecsInstanceRole \
         --policy-arn arn:aws:iam::aws:policy/AmazonECSInstanceRolePolicyForManagedInstances
   ```
**Anmerkung**  
Wenn Sie sich dafür entscheiden, Berechtigungen mit den geringsten Rechten anzuwenden und stattdessen Ihre eigenen Berechtigungen anzugeben, können Sie die folgenden Berechtigungen hinzufügen, um bei der Behebung aufgabenbezogener Probleme mit Amazon ECS Managed Instances zu helfen:   
`ecs:StartTelemetrySession`
`ecs:PutSystemLogEvents`

Sie können die Rolle auch mithilfe des Workflows für **benutzerdefinierte Vertrauensrichtlinien** der IAM-Konsole erstellen. Weitere Informationen finden Sie unter [Erstellen einer Rolle mit benutzerdefinierten Vertrauensrichtlinien (Konsole)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-custom.html) im *IAM-Benutzerhandbuch*.

Wenn Sie die Datei erstellt haben, müssen Sie Ihrem Benutzer die Berechtigung erteilen, die Rolle an Amazon ECS zu übergeben.

## Erstellen Sie das Instance-Profil mithilfe der AWS CLI
<a name="create-instance-profile"></a>

Nachdem Sie die Rolle erstellt haben, erstellen Sie das Instance-Profil mit der AWS CLI.

```
aws iam create-instance-profile --instance-profile-name ecsInstanceRole 
```

Fügen Sie dem Instance-Profil die IAM-Rolle hinzu.

```
aws iam add-role-to-instance-profile \
   --instance-profile-name ecsInstanceRole \
   --role-name ecsInstanceRole
```

Überprüfen Sie, ob das Projekt erfolgreich erstellt wurde.

```
aws iam get-instance-profile --instance-profile-name ecsInstanceRole 
```

## Erstellen Sie das Instanzprofil mit CloudFormation
<a name="create-instance-profile-cfn"></a>

Sie können verwenden AWS CloudFormation , um die Instanzrolle und das Instanzprofil zu erstellen. Wählen Sie je nachdem, ob Sie die Richtlinie für die AWS verwaltete Infrastruktur oder eine benutzerdefinierte Richtlinie verwenden, eine der folgenden Optionen.

### Option 1: Verwenden Sie die ecsInstanceRole Benennungskonvention (empfohlen)
<a name="create-instance-profile-cfn-managed"></a>

Wenn Sie die Infrastrukturrichtlinie AWS-managed verwenden, müssen Sie sie explizit `RoleName` auf einen Wert festlegen, der mit `ecsInstanceRole` beginnt. Wenn Sie es weglassen`RoleName`, CloudFormation wird automatisch ein Name generiert, der nicht der `iam:PassRole` Bedingung der verwalteten Richtlinie entspricht, und Aufgaben können nicht gestartet werden.

```
Resources:
  EcsInstanceRole:
    Type: AWS::IAM::Role
    Properties:
      RoleName: ecsInstanceRole
      AssumeRolePolicyDocument:
        Version: "2012-10-17"
        Statement:
          - Effect: Allow
            Principal:
              Service: ec2.amazonaws.com
            Action: sts:AssumeRole
      ManagedPolicyArns:
        - arn:aws:iam::aws:policy/AmazonECSInstanceRolePolicyForManagedInstances

  EcsInstanceProfile:
    Type: AWS::IAM::InstanceProfile
    Properties:
      InstanceProfileName: ecsInstanceRole
      Roles:
        - !Ref EcsInstanceRole
```

### Option 2: Verwenden Sie einen benutzerdefinierten Rollennamen
<a name="create-instance-profile-cfn-custom"></a>

Wenn Sie es vorziehen, den Rollennamen CloudFormation generieren zu lassen, oder wenn Sie einen benutzerdefinierten Namen verwenden, der nicht mit 1 beginnt`ecsInstanceRole`, müssen Sie Ihrer Infrastrukturrolle eine Inline-Richtlinie hinzufügen, die Berechtigungen `iam:PassRole` für die Instanzrolle gewährt.

```
Resources:
  EcsInstanceRole:
    Type: AWS::IAM::Role
    Properties:
      # No RoleName — CFN auto-generates
      AssumeRolePolicyDocument:
        Version: "2012-10-17"
        Statement:
          - Effect: Allow
            Principal:
              Service: ec2.amazonaws.com
            Action: sts:AssumeRole
      ManagedPolicyArns:
        - arn:aws:iam::aws:policy/AmazonECSInstanceRolePolicyForManagedInstances

  EcsInstanceProfile:
    Type: AWS::IAM::InstanceProfile
    Properties:
      Roles:
        - !Ref EcsInstanceRole

  EcsInfrastructureRole:
    Type: AWS::IAM::Role
    Properties:
      AssumeRolePolicyDocument:
        Version: "2012-10-17"
        Statement:
          - Effect: Allow
            Principal:
              Service: ecs.amazonaws.com
            Action: sts:AssumeRole
      ManagedPolicyArns:
        - arn:aws:iam::aws:policy/AmazonECSInfrastructureRolePolicyForManagedInstances
      Policies:
        - PolicyName: PassInstanceRoleToEC2
          PolicyDocument:
            Version: "2012-10-17"
            Statement:
              - Effect: Allow
                Action: iam:PassRole
                Resource: !GetAtt EcsInstanceRole.Arn
                Condition:
                  StringLike:
                    iam:PassedToService: "ec2.*"
```

## Fehlerbehebung
<a name="managed-instances-instance-profile-troubleshooting"></a>

### Aufgaben schlagen mit iam: PassRole authorization error fehl
<a name="managed-instances-instance-profile-ts-passrole"></a>

Wenn Ihre Aufgaben mit einem, `ResourceInitializationError` das erwähnt wird`iam:PassRole`, fehlschlagen, stellen Sie sicher, dass Ihr Instanzrollenname mit `ecsInstanceRole` beginnt. Sie können den automatisch generierten Namen in der CloudFormation Konsole unter dem Tab **Ressourcen** Ihres Stacks überprüfen. Wenn der Name nicht übereinstimmt, gehen Sie entweder wie folgt vor:
+ Zu `RoleName: ecsInstanceRole` Ihrer `AWS::IAM::Role` Ressource hinzufügen.
+ Fügen Sie Ihrer Infrastrukturrolle eine explizite `iam:PassRole` Inline-Richtlinie hinzu. Weitere Informationen finden Sie unter [Option 2: Verwenden Sie einen benutzerdefinierten Rollennamen](#create-instance-profile-cfn-custom).