

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 `ecsInstanceRole` beginnen. Die Richtlinie gilt für `iam:PassRole` bis zu`arn:aws:iam::*:role/ecsInstanceRole*`, sodass ein nicht übereinstimmender Name beim Start der Aufgabe zu einem Autorisierungsfehler führt. Dies ist häufig der Fall, CloudFormation wenn Sie den Text weglassen`RoleName`, da Namen wie CloudFormation automatisch generiert werden. `MyStack-InstanceRole-ABC123`  
Wenn Sie stattdessen eine benutzerdefinierte Infrastrukturrollenrichtlinie verwenden, kann die Instanzrolle einen beliebigen Namen haben, sofern Ihre Richtlinie einen `iam:PassRole` Zuschuss vorsieht, 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` anhand der Vertrauensrichtlinie benannt ist, 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 Berechtigungen mit geringsten Rechten anwenden und stattdessen Ihre eigenen Berechtigungen angeben, können Sie die folgenden Berechtigungen hinzufügen, um aufgabenbezogene Probleme mit Amazon ECS Managed Instances zu beheben:   
`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 Instanzprofil mit dem 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 AWS CloudFormation es verwenden, um die Instanzrolle und das Instanzprofil zu erstellen. Wählen Sie eine der folgenden Optionen aus, je nachdem, ob Sie die AWS-managed Infrastructure-Richtlinie oder eine benutzerdefinierte Richtlinie verwenden.

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

Wenn Sie die Infrastrukturrichtlinie AWS-managed verwenden, müssen Sie explizit einen Wert festlegen`RoleName`, der mit `ecsInstanceRole` beginnt. Wenn Sie diesen Wert weglassen`RoleName`, wird CloudFormation automatisch ein Name generiert, der nicht der `iam:PassRole` Bedingung der verwalteten Richtlinie entspricht, und die 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 beginnt`ecsInstanceRole`, müssen Sie Ihrer Infrastrukturrolle eine Inline-Richtlinie hinzufügen, die die Instanzrolle gewährt`iam:PassRole`.

```
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 fehl: PassRole Autorisierungsfehler
<a name="managed-instances-instance-profile-ts-passrole"></a>

Wenn Ihre Aufgaben mit einer `ResourceInitializationError` Erwähnung fehlschlagen`iam:PassRole`, überprüfen Sie, ob der Name Ihrer Instanzrolle mit `ecsInstanceRole` beginnt. Sie können den automatisch generierten Namen in der CloudFormation Konsole unter dem ** Reiter ** Ressourcen Ihres Stacks überprüfen. Wenn der Name nicht übereinstimmt, gehen Sie entweder wie folgt vor:
+ Fügen `RoleName: ecsInstanceRole` Sie Ihrer `AWS::IAM::Role` Ressource hinzu.
+ 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).