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 ecsInstanceRole beginnen. Die Richtlinie hat einen Geltungsbereich von iam:PassRole bis zuarn: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 weglassenRoleName, 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.
Ersetze alles user input durch deine eigenen Informationen.
-
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: -
Verwenden Sie den folgenden AWS CLI Befehl, um eine Rolle zu erstellen, die
ecsInstanceRoleanhand 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 -
Hängen Sie die AWS verwaltete
AmazonECSInstanceRolePolicyForManagedInstancesRichtlinie an dieecsInstanceRoleRolle an.aws iam attach-role-policy \ --role-name ecsInstanceRole \ --policy-arn arn:aws:iam::aws:policy/AmazonECSInstanceRolePolicyForManagedInstancesAnmerkung
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 aufgabenbezogene Probleme mit Amazon ECS Managed Instances zu beheben:
ecs:StartTelemetrySessionecs: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 Instanzprofil mit dem 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 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)
Wenn Sie die Infrastrukturrichtlinie AWS-managed verwenden, müssen Sie explizit einen Wert festlegenRoleName, der mit ecsInstanceRole beginnt. Wenn Sie diesen Wert weglassenRoleName, 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
Wenn Sie es vorziehen, den Rollennamen CloudFormation generieren zu lassen, oder wenn Sie einen benutzerdefinierten Namen verwenden, der nicht mit beginntecsInstanceRole, müssen Sie Ihrer Infrastrukturrolle eine Inline-Richtlinie hinzufügen, die die Instanzrolle gewährtiam: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
Aufgaben schlagen mit iam fehl: PassRole Autorisierungsfehler
Wenn Ihre Aufgaben mit einer ResourceInitializationError Erwähnung fehlschlageniam:PassRole, stellen Sie sicher, dass 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, gilt auch:
-
Fügen
RoleName: ecsInstanceRoleSie IhrerAWS::IAM::RoleRessource hinzu. -
Fügen Sie Ihrer Infrastrukturrolle eine explizite
iam:PassRoleInline-Richtlinie hinzu. Weitere Informationen finden Sie unter Option 2: Verwenden Sie einen benutzerdefinierten Rollennamen.