View a markdown version of this page

Instance-Profil von Amazon ECS Managed Instances - Amazon Elastic Container Service

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

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 beginnenecsInstanceRole. Die Richtlinie gilt iam:PassRole bisarn: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 weglassenRoleName, 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.

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" } ] }
  2. 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
  3. 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) 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

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

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)

Wenn Sie die Infrastrukturrichtlinie AWS-managed verwenden, müssen Sie sie explizit RoleName auf einen Wert festlegen, der mit ecsInstanceRole beginnt. Wenn Sie es weglassenRoleName, 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

Wenn Sie es vorziehen, den Rollennamen CloudFormation generieren zu lassen, oder wenn Sie einen benutzerdefinierten Namen verwenden, der nicht mit 1 beginntecsInstanceRole, 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

Aufgaben schlagen mit iam: PassRole authorization error fehl

Wenn Ihre Aufgaben mit einem, ResourceInitializationError das erwähnt wirdiam: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: