amazon-s3 - 使用Chalice Framework AWS读取S3文件内容失败

标签 amazon-s3 aws-lambda boto3 chalice

我正在尝试读取我先前写的S3文件的内容。当我从本地boto3脚本中读取时,我可以看到文件的内容,但是当我使用Chalice在Lambda上运行代码时,出现“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'))

关于我缺少什么的任何想法?

最佳答案

一次验证了lambda功能的访问级别。我也遇到了同样的问题,但是赋予了lambda函数s3访问权限解决了该问题,并验证了lambda和s3文件是否都在同一s3区域中。

关于amazon-s3 - 使用Chalice Framework AWS读取S3文件内容失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52554871/

相关文章:

perl - PERL Net::Amazon::S3 BucketAlreadyExists:请求的存储桶名称不可用

amazon-web-services - AWS CFT 模板 IAM 策略

c# - 使用 .net async 将对象放入 Amazon S3

amazon-web-services - 如果记录是由 AWS cognito 中的确认后触发器创建的,那么谁是 DynamoDB 中记录的所有者

python - 使用 Boto3 查找属于特定目标组的 EC2 实例

java - 如何在不下载文件的情况下搜索 amazon S3 存储桶中的文件内容

amazon-s3 - 如何在 CloudFormation 模板中为 lambda .zip 代码指定 S3 存储桶区域

amazon-web-services - 如何从 AWS lambda 执行 exe 文件

python-3.x - boto3 和 dynamodb-local 的 batch_write 操作极其缓慢

python - 使用Boto3启动具有IAM角色的EC2实例出现未授权操作错误