2017-12-28 14 views
0

In meinem Projekt erstelle ich eine Lambda-Funktion in Python-Code, die in einer Methode eine andere Lambda-Funktion mit Boto3 aufrufen müssen. In meinem Haupt-Lambda-i schaffen Client wie folgt aus:AWS Lambda AccessDeniedException Aufruf einer anderen Lambda-Funktion

client = boto3.client('lambda') 

dann rufe ich meine Methode in dieser Art und Weise:

response = client.invoke(
      FunctionName='arn:aws:lambda:eu-west-1:1577:function:test', 
      InvocationType='RequestResponse', 
      LogType='None', 
      Payload=json.dumps(d) 
      ) 

aber wenn ich meine Haupt-Lambda-Konsole Rückkehr diesen Fehler testen:

An error occurred (AccessDeniedException) when calling the Invoke operation: User

Ich versuche, in meiner Umgebung die Variablen AWS_ACCESS_KEY_ID und AWS_SECRET_ACCESS_KEY zu setzen, aber wenn ich versuche, zu speichern, geben Sie diesen Fehler zurück:

Lambda was unable to configure your environment variables because the environment variables you have provided contains reserved keys that are currently not supported for modification. Reserved keys used in this request: AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY

Wie kann ich in Lambda einen Anruf mit einem IAM-Benutzer festlegen?

Vielen Dank im Voraus

Antwort

2

Statt eine IAM-Benutzer verwenden, heften sich an die bestehende IAM-Rolle die Lambda invoke die Erlaubnis Ihrer Eltern Lambda-Funktion gebunden.

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Sid": "InvokePermission", 
      "Effect": "Allow", 
      "Action": [ 
       "lambda:InvokeFunction" 
      ], 
      "Resource": "*" 
     } 
    ] 
} 

Hinweis: Sie können den ARN der Lambda-Funktion angeben, die für die Ressource aufgerufen wird.

Verwandte Themen