Сбой чтения содержимого файла S3 с помощью Chalice Framework AWS - PullRequest
0 голосов
/ 28 сентября 2018

Я пытаюсь прочитать содержимое файла S3, который я написал ранее.Когда я читаю из локального скрипта boto3, я вижу содержимое файла, но когда я запускаю код на Lambda с помощью Chalice, я получаю «NotFoundError»

Вот код для приложения Chalice

from chalice import Chalice
import boto3
import json
from botocore.exceptions import ClientError
from chalice import NotFoundError

app = Chalice(app_name='scraper-one')
app.debug = True

s3 = boto3.resource('s3')
bucket = 'scraper-one'
key = 'csv'


@app.route("/")
def index():
    return {"hello": "world"}


@app.route('/{content}', methods=['GET', 'PUT'])
def to_s3(content):
    request = app.current_request
    if request.method == 'PUT':
        s3.put_object(bucket=bucket, Key=key, Body=content)
        return {"content": content}

    elif request.method == 'GET':
        try:
            obj = s3.Object(bucket, key)
            return json.loads(obj.get()['Body'].read().decode('utf-8'))
        except ClientError as e:
            raise NotFoundError(key)

Вот локальный скрипт, который работает нормально.

import boto3

s3 = boto3.resource('s3')
bucket = 'scraper-one'
key = 'csv'
obj = s3.Object(bucket, key)
print(obj.get()['Body'].read().decode('utf-8'))

Есть идеи о том, что мне не хватает?

1 Ответ

0 голосов
/ 24 января 2019

После проверки уровней доступа для лямбда-функций. Я столкнулся с той же проблемой, но решение лямбда-функции s3 разрешило проблему, а также проверил, находятся ли и лямбда-файл, и файл s3 в одной и той же области s3.

...