https://d226lax1qjow5r.cloudfront.net/blog/blogposts/how-permissions-work-in-aws-lambda-dr/E_AWS-permissions_1200x600.png

Wie Berechtigungen in AWS Lambda funktionieren

Zuletzt aktualisiert am May 18, 2021

Lesedauer: 2 Minuten

Bei der Arbeit mit AWS Lambda haben viele Benutzer Probleme mit den Zugriffsrechten auf andere AWS-Services. Genauer gesagt, wie man auf Services wie S3, RDS, Transcribe oder andere zugreift.

Vonage API-Konto

Um dieses Tutorial durchzuführen, benötigen Sie ein Vonage API-Konto. Wenn Sie noch keines haben, können Sie sich noch heute anmelden und mit einem kostenlosen Guthaben beginnen. Sobald Sie ein Konto haben, finden Sie Ihren API-Schlüssel und Ihr API-Geheimnis oben auf dem Vonage-API-Dashboard.

In diesem Lernprogramm wird auch eine virtuelle Telefonnummer verwendet. Um eine zu erwerben, gehen Sie zu Rufnummern > Rufnummern kaufen und suchen Sie nach einer Nummer, die Ihren Anforderungen entspricht.

Viele erstellen einen neuen IAM-Benutzerund setzen AWS_ACCESS_KEY_ID und AWS_SECRET_ACCESS_KEY in Umgebungsvariablen. Das AWS SDK verwendet "automatisch" diese Schlüssel oder Werte aus einer AWS-Anmeldeinformationen-Datei. (Siehe die Dokumentation darüber, wie das SDK diese Werte verwendet). Es wäre jedoch ein Fehler, diese Anmeldeinformationen für einen Lambda hinzuzufügen.

Verwechslung der Identität

Der Versuch, die folgende .env Datei verhindert, dass eine Anwendung von Lambda aus auf AWS-Services zugreifen kann. Der Verbindungsfehler tritt unabhängig davon auf, wie Sie den IAM-Benutzer konfiguriert haben.

AWS_ACCESS_KEY_ID={{YOUR-ACCESS-KEY-HERE}} AWS_SECRET_ACCESS_KEY={{YOUR-SECRET-HERE}}

Wenn die Lambda-Funktion ausgeführt wird, werden die oben gezeigten Umgebungsvariablen von Lambda generiert. Das bedeutet, dass die Werte der Datei .env werden nicht wie erwartet gesetzt.

Wenn Sie mehr über die Bereitstellung mit Serverless lesen möchten, lesen Sie AWS Lambda mit PHP unter Verwendung von Bref und Serverless Framework oder Serverloses Python mit AWS Lambda.

Einstellung von Berechtigungen

Mit Umgebungsvariablen AWS_ACCESS_KEY_ID und AWS_SECRET_ACCESS_KEY die von Lambda festgelegt werden, müssen auch die Rollenberechtigungen während der Bereitstellung festgelegt werden. Alle AWS-Services werden auch direkt in der Lambda-Funktion anstelle eines IAM-Benutzers behandelt.

Nachfolgend finden Sie ein partielles yaml-Beispiel für die Verwendung des Serverless-Frameworks zur Bereitstellung einer AWS Lambda-Funktion.

provider:
    name: aws
    region: us-east-1
    runtime: provided
    iamRoleStatements:
        - Effect: Allow
          Action:
              - s3:PutObject
              - s3:GetObject
              - s3:DeleteObject
          Resource: 'arn:aws:s3:::bucket-name/*'
        - Effect: Allow
          Action: transcribe:*
          Resource: '*'

Beachten Sie den iamRoleStatements Block im obigen Beispiel. Darin wird das Lambda gewährt s3:PutObject, s3:GetObject, und s3:DeleteObject Berechtigungen für die Ressource bucket-name und alles darin. Außerdem hat die Funktion Zugriff auf transcribe:* Dienste.

Das obige Beispiel ähnelt sehr der Festlegung von IAM-Berechtigungen in den folgenden Beispielen:

aws_iam_s3_policyAWS IAM S3 Policy Example

amazon_iam_transcribe_policyAWS IAM Transcribe Policy Example

Prüfung von Berechtigungen

Nach erfolgreicher Bereitstellung in AWS Lambda können die aktiven Berechtigungen der Funktion in der AWS-Konsole angezeigt werden. Navigieren Sie dazu zur Registerkarte "Permissions" in der Funktionskonsole.

lambda_function_permissionsAWS Lambda Function Permissions

Von dort aus können Sie auf die Berechtigungen der einzelnen Dienste klicken, um eine detailliertere Aufschlüsselung der Einstellungen zu erhalten.

Was nun?

Dokumentation über mögliche Berechtigungen für verschiedene AWS-Services finden Sie in der AWS-Dokumentation zur Identitäts- und Zugriffsverwaltung. Achten Sie auch auf zukünftige Beiträge mit Beispielen für die Verwendung dieser Berechtigungen in der Praxis.

Teilen Sie:

https://a.storyblok.com/f/270183/384x384/b3c7ffaf85/adamculp.png
Adam CulpVonage Ehemalige

Adam ist ein Entwickler und Berater, der gerne Ultraläufe absolviert, bloggt und anderen dabei hilft, Technologien zu zähmen, um erstaunliche Dinge zu erreichen, und der ein unstillbares Verlangen hat, Mentoren zu sein und zu helfen.