Zugriff Verweigert mit boto3 durch aws Lambda

Ich benutze die Daten-Verarbeitung-pipeline konstruiert, die

S3 + SNS + Lambda -

becasue S3 kann nicht senden notificaiton aus seinem Speicher region, so machte ich Gebrauch von SNS zum senden von S3-Benachrichtigung, um die Lambda in einer anderen region.

Die lambda-Funktion codiert mit

from __future__ import print_function
import boto3


def lambda_handler (event, context):
    input_file_bucket = event["Records"][0]["s3"]["bucket"]["name"]
    input_file_key = event["Records"][0]["s3"]["object"]["key"]

    input_file_name = input_file_bucket+"/"+input_file_key

    s3=boto3.resource("s3")
    obj = s3.Object(bucket_name=input_file_bucket, key=input_file_key)
    response = obj.get()

    return event #echo first key valuesdf

wenn ich lief, speichern und testen, bekam ich die folgende Fehlermeldung

    {
  "stackTrace": [
    [
      "/var/task/lambda_function.py",
      20,
      "lambda_handler",
      "response = obj.get()"
    ],
    [
      "/var/runtime/boto3/resources/factory.py",
      394,
      "do_action",
      "response = action(self, *args, **kwargs)"
    ],
    [
      "/var/runtime/boto3/resources/action.py",
      77,
      "__call__",
      "response = getattr(parent.meta.client, operation_name)(**params)"
    ],
    [
      "/var/runtime/botocore/client.py",
      310,
      "_api_call",
      "return self._make_api_call(operation_name, kwargs)"
    ],
    [
      "/var/runtime/botocore/client.py",
      395,
      "_make_api_call",
      "raise ClientError(parsed_response, operation_name)"
    ]
  ],
  "errorType": "ClientError",
  "errorMessage": "An error occurred (AccessDenied) when calling the GetObject operation: Access Denied"
}

Konfigurierte ich die lambda-Rolle mit

full S3 access

- und set-Eimer-Richtlinie auf mein Ziel-Eimer

everyone can do anything(list, delete, etc.)

Scheint es, dass ich noch nicht die Richtlinie festlegen.

InformationsquelleAutor Hello lad | 2015-11-06

Schreibe einen Kommentar