Festlegen von IAM-Berechtigungen und -Rollen für Lambda@Edge - Amazon CloudFront

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.

Festlegen von IAM-Berechtigungen und -Rollen für Lambda@Edge

Um Lambda@Edge zu konfigurieren, müssen Sie bestimmte IAM-Berechtigungen und eine IAM-Ausführungsrolle einrichten. Lambda@Edge erstellt auch serviceverknüpfte Rollen, um Lambda-Funktionen in CloudFront Regionen zu replizieren und die Verwendung von CloudFront Protokolldateien CloudWatch zu ermöglichen.

Erforderliche IAM-Berechtigungen zum Zuordnen von Lambda@Edge-Funktionen zu CloudFront Verteilungen

Zusätzlich zu den IAM-Berechtigungen, die Sie für benötigenAWS Lambda, benötigt der Benutzer die folgenden IAM-Berechtigungen, um Lambda-Funktionen CloudFront Verteilungen zuzuordnen:

  • lambda:GetFunction

    Ermöglicht dem Benutzer, Konfigurationsinformationen für die Lambda-Funktion und eine vorsignierte URL zum Herunterladen einer ZIP-Datei abzurufen, die die Funktion enthält.

    Geben Sie für die Ressource den ARN der Funktionsversion an, die Sie ausführen möchten, wenn ein CloudFront Ereignis eintritt, wie im folgenden Beispiel gezeigt:

    arn:aws:lambda:us-east-1:123456789012:function:TestFunction:2

  • lambda:EnableReplication*

    Fügt der Ressourcenrichtlinie, mit der dem Lambda-Replikationsservice das Recht zum Abrufen von Funktionscode und -konfiguration gewährt wird, eine Berechtigung hinzu.

    Wichtig

    Das Sternchen (*) am Ende der Berechtigung ist erforderlich: lambda:EnableReplication*

    Geben Sie für die Ressource den ARN der Funktionsversion an, die Sie ausführen möchten, wenn ein CloudFront Ereignis eintritt, wie im folgenden Beispiel gezeigt:

    arn:aws:lambda:us-east-1:123456789012:function:TestFunction:2

  • lambda:DisableReplication*

    Fügt der Ressourcenrichtlinie, mit der dem Lambda-Replikationsservice das Recht zum Löschen der Funktion gewährt wird, eine Berechtigung hinzu.

    Wichtig

    Das Sternchen (*) am Ende der Berechtigung ist erforderlich: lambda:DisableReplication*

    Geben Sie für die Ressource den ARN der Funktionsversion an, die Sie ausführen möchten, wenn ein CloudFront Ereignis eintritt, wie im folgenden Beispiel gezeigt:

    arn:aws:lambda:us-east-1:123456789012:function:TestFunction:2

  • iam:CreateServiceLinkedRole

    Ermöglicht dem Benutzer das Erstellen einer serviceverknüpften Rolle, die von Lambda@Edge verwendet wird, um Lambda-Funktionen in zu replizieren CloudFront. Nachdem diese Rolle von der ersten Verteilung erstellt wurde, die Sie mit Lambda@Edge verwenden, müssen Sie anderen Verteilungen, die Sie mit Lambda@Edge nutzen, keine Berechtigung hinzufügen.

  • cloudfront:UpdateDistribution oder cloudfront:CreateDistribution

    Wählen Sie cloudfront:UpdateDistribution, um eine Verteilung zu aktualisieren, oder cloudfront:CreateDistribution, um eine Verteilung zu erstellen.

Weitere Informationen finden Sie in der folgenden Dokumentation:

Funktionsausführungsrolle für Service-Prinzipale

Sie müssen eine IAM-Rolle erstellen, die von den Service-Prinzipalen lambda.amazonaws.com und edgelambda.amazonaws.com übernommen werden kann. Diese Rolle wird von den Service-Prinzipalen übernommen, wenn sie Ihre Funktion ausführen. Weitere Informationen finden Sie unter Erstellen von Rollen und Anhängen von Richtlinien (Konsole) im IAM-Benutzerhandbuch.

Sie fügen diese Rolle auf der Registerkarte Trust Relationship (Vertrauensstellung) in IAM hinzu (fügen Sie sie nicht auf der Registerkarte Permissions (Berechtigungen)) hinzu.

Hier finden Sie eine Beispiel-Vertrauensrichtlinie für eine Rolle:

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

Weitere Informationen zu den Berechtigungen, die Sie der Ausführungsrolle erteilen müssen, finden Sie unter Verwalten von Berechtigungen: Verwenden einer IAM-Rolle (Ausführungsrolle) im AWS Lambda-Entwicklerhandbuch. Beachten Sie Folgendes:

  • Wenn ein CloudFront Ereignis eine Lambda-Funktion auslöst, werden Daten standardmäßig in CloudWatch Protokolle geschrieben. Wenn Sie diese Protokolle verwenden möchten, benötigt die Ausführungsrolle die Berechtigung zum Schreiben von Daten in CloudWatch Protokolle. Sie können das vordefinierte verwendenAWSLambdaBasicExecutionRole , um der Ausführungsrolle die Berechtigung zu erteilen.

    Weitere Informationen zu - CloudWatch Protokollen finden Sie unter Protokolle für Edge-Funktionen.

  • Wenn Ihr Lambda-Funktionscode auf andere AWS-Ressourcen zugreift und etwa ein Objekt aus einem S3-Bucket liest, benötigt die Ausführungsrolle die Berechtigung zum Durchführen dieser Operation.

Serviceverknüpfte Rollen für Lambda@Edge

Lambda@Edge verwendet AWS Identity and Access Management (IAM) serviceverknüpfte Rollen. Eine serviceverknüpfte Rolle ist ein spezieller Typ von IAM-Rolle, der direkt mit einem Service verknüpft ist. Serviceverknüpfte Rollen werden vom Service vorab definiert und beinhalten alle Berechtigungen, die dieser zum Aufrufen anderer AWS-Services in Ihrem Namen benötigt.

Lambda@Edge verwendet die folgende IAM-serviceverknüpfte Rolle:

  • AWSServiceRoleForLambdaReplicator – Lambda@Edge verwendet diese Rolle, um es Lambda@Edge zu ermöglichen, Funktionen in AWS-Regionen zu replizieren.

  • AWSServiceRoleForCloudFrontLogger – CloudFront verwendet diese Rolle, um Protokolldateien in Ihr CloudWatch Konto zu übertragen, um Ihnen beim Debuggen von Lambda@Edge-Validierungsfehlern zu helfen.

Wenn Sie zum ersten Mal einen Lambda@Edge-Auslöser in hinzufügen CloudFront, AWSServiceRoleForLambdaReplicator wird automatisch eine Rolle mit dem Namen erstellt, damit Lambda@Edge Funktionen nach replizieren kannAWS-Regionen. Diese Rolle ist für die Verwendung von Lambda@Edge-Funktionen erforderlich. Der ARN für die AWSServiceRoleForLambdaReplicator-Rolle sieht so aus:

arn:aws:iam::123456789012:role/aws-service-role/replicator.lambda.amazonaws.com/AWSServiceRoleForLambdaReplicator

Die zweite Rolle namens wird automatisch erstelltAWSServiceRoleForCloudFrontLogger, wenn Sie die Lambda@Edge-Funktionszuordnung hinzufügen, damit Lambda@Edge-Fehlerprotokolldateien an CloudFront übertragen kann CloudWatch. Der ARN für die AWSServiceRoleForCloudFrontLogger-Rolle sieht so aus:

arn:aws:iam::account_number:role/aws-service-role/logger.cloudfront.amazonaws.com/AWSServiceRoleForCloudFrontLogger

Eine serviceverknüpfte Rolle vereinfacht das Einrichten und Verwenden von Lambda@Edge, da Sie die erforderlichen Berechtigungen nicht manuell hinzufügen müssen. Lambda@Edge definiert die Berechtigungen seiner servicegebundenen Rollen. Nur Lambda@Edge kann die Rollen übernehmen. Die definierten Berechtigungen umfassen die Vertrauens- und Berechtigungsrichtlinie. Die Berechtigungsrichtlinie kann an keine andere IAM-Entität angefügt werden.

Sie müssen alle zugehörigen - CloudFront oder Lambda@Edge-Ressourcen entfernen, bevor Sie eine serviceverknüpfte Rolle löschen können. Dies trägt zum Schutz Ihrer Lambda@Edge-Ressourcen bei. Es wird sichergestellt wird, dass Sie keine servicegebundene Rolle entfernen, die noch für den Zugriff auf aktive Ressourcen erforderlich ist.

Informationen zu anderen Services, die serviceverknüpfte Rollen unterstützen, finden Sie unter AWS-Services, die mit IAM funktionieren. Suchen Sie nach den Services, für die Ja in der Spalte Serviceverknüpfte Rolle angegeben ist.

Serviceverknüpfte Rollenberechtigungen für Lambda@Edge

Lambda@Edge verwendet zwei servicegebundene Rollen. Diese heißen AWSServiceRoleForLambdaReplicator und AWSServiceRoleForCloudFrontLogger. In den folgenden Abschnitten werden die Berechtigungen für jede dieser Rollen beschrieben.

Serviceverknüpfte Rollenberechtigungen für Lambda Replicator

Diese serviceverknüpfte Rolle ermöglicht Lambda das Replizieren von Lambda@Edge-Funktionen zu AWS-Regionen.

Die serviceverknüpfte Rolle AWSServiceRoleForLambdaReplicator vertraut darauf, dass der folgende Service die Rolle annimmt: replicator.lambda.amazonaws.com

Die Rollenberechtigungsrichtlinie erlaubt Lambda@Edge die Durchführung der folgenden Aktionen für die angegebenen Ressourcen:

  • Aktion: lambda:CreateFunction für arn:aws:lambda:*:*:function:*

  • Aktion: lambda:DeleteFunction für arn:aws:lambda:*:*:function:*

  • Aktion: lambda:DisableReplication für arn:aws:lambda:*:*:function:*

  • Aktion: iam:PassRole für all AWS resources

  • Aktion: cloudfront:ListDistributionsByLambdaFunction für all AWS resources

Serviceverknüpfte Rollenberechtigungen für CloudFront Logger

Diese serviceverknüpfte Rolle ermöglicht CloudFront es , Protokolldateien in Ihr CloudWatch Konto zu übertragen, um Ihnen beim Debuggen von Lambda@Edge-Validierungsfehlern zu helfen.

Die serviceverknüpfte Rolle AWSServiceRoleForCloudFrontLogger vertraut darauf, dass der folgende Service die Rolle annimmt: logger.cloudfront.amazonaws.com

Die Rollenberechtigungsrichtlinie erlaubt Lambda@Edge die Durchführung der folgenden Aktionen für die angegebenen Ressourcen:

  • Aktion: logs:CreateLogGroup für arn:aws:logs:*:*:log-group:/aws/cloudfront/*

  • Aktion: logs:CreateLogStream für arn:aws:logs:*:*:log-group:/aws/cloudfront/*

  • Aktion: logs:PutLogEvents für arn:aws:logs:*:*:log-group:/aws/cloudfront/*

Sie müssen Berechtigungen konfigurieren, damit eine IAM-Entität (z. B. ein Benutzer, eine Gruppe oder eine Rolle) die mit dem Lambda@Edge-Service verknüpften Rollen löschen kann. Weitere Informationen finden Sie unter serviceverknüpfte Rollenberechtigung im IAM-Benutzerhandbuch.

Serviceverknüpfte Rollen für Lambda@Edge erstellen

Servicegebundene Rollen für Lambda@Edge werden in der Regel nicht manuell erstellt. In den folgenden Szenarien legt der Service die Rollen für Sie automatisch an:

  • Wenn Sie zum ersten Mal einen Auslöser erstellen, erstellt der Service eine Rolle (AWSServiceRoleForLambdaReplicator), sofern die Rolle nicht bereits vorhanden ist, die es Lambda ermöglicht, Lambda@Edge-Funktionen in AWS-Regionen zu replizieren.

    Wenn Sie die serviceverknüpfte Rolle löschen, wird die Rolle erneut erstellt, wenn Sie einen neuen Auslöser für Lambda@Edge in einer Verteilung hinzufügen.

  • Wenn Sie eine CloudFront Verteilung aktualisieren oder erstellen, die über eine Lambda@Edge-Zuordnung verfügt, erstellt der Service eine Rolle, AWSServiceRoleForCloudFrontLogger, wenn die Rolle noch nicht vorhanden ist, die es ermöglicht, Ihre Protokolldateien CloudFront an zu übertragen CloudWatch.

    Wenn Sie die serviceverknüpfte Rolle löschen, wird die Rolle erneut erstellt, wenn Sie eine CloudFront Verteilung aktualisieren oder erstellen, die über eine Lambda@Edge-Zuordnung verfügt.

Wenn Sie diese serviceverknüpften Rollen manuell erstellen müssen, führen Sie die folgenden Befehle mit AWS CLI aus:

So erstellen Sie die AWSServiceRoleForLambdaReplicator-Rolle

aws iam create-service-linked-role --aws-service-name replicator.lambda.amazonaws.com

So erstellen Sie die AWSServiceRoleForCloudFrontLogger-Rolle

aws iam create-service-linked-role --aws-service-name logger.cloudfront.amazonaws.com

Bearbeiten von serviceverknüpften Lambda@Edge-Rollen

Lambda@Edge verhindert die Bearbeitung der serviceverknüpften Rollen AWSServiceRoleForLambdaReplicator und AWSServiceRoleForCloudFrontLogger. Da möglicherweise verschiedene Entitäten auf die Rolle verweisen, kann der Rollenname nach der Erstellung einer serviceverknüpften Rolle durch den Service nicht bearbeitet werden. Sie können jedoch die Beschreibung einer Rolle mit IAM bearbeiten. Weitere Informationen finden Sie unter Bearbeiten einer serviceverknüpften Rolle im IAM-Benutzerhandbuch.

Unterstützt AWS-Regionen für CloudFront serviceverknüpfte Rollen

CloudFront unterstützt die Verwendung von serviceverknüpften Rollen für Lambda@Edge in den folgenden AWS-Regionen:

  • US East (N. Virginia) – us-east-1

  • US East (Ohio) – us-east-2

  • US West (N. California) – us-west-1

  • US West (Oregon) – us-west-2

  • Asia Pacific (Mumbai) – ap-south-1

  • Asien-Pazifik (Seoul) – ap-northeast-2

  • Asia Pacific (Singapore) – ap-southeast-1

  • Asien-Pazifik (Sydney) – ap-southeast-2

  • Asien-Pazifik (Tokio) – ap-northeast-1

  • Europe (Frankfurt) – eu-central-1

  • Europe (Ireland) – eu-west-1

  • Europe (London) – eu-west-2

  • South America (São Paulo) – sa-east-1