【发布时间】:2022-09-27 17:24:02
【问题描述】:
我正在使用 Boto3 尝试通过 AWS Lambda Python 脚本从 S3 存储桶中获取密钥列表。无论我尝试什么,存储桶都不会返回任何对象。
import json, boto3, os
def getConfig():
cfg = {
\"aws_key_id\": os.getenv(\"AWS_KEY_ID\", \"\"),
\"aws_secret\": os.getenv(\"AWS_SECRET\", \"\"),
}
return cfg
def lambda_handler(event, context):
cfg = getConfig()
bucket_name = \"zachs-taxi\"
session = boto3.Session(
aws_access_key_id=cfg.get(\'aws_key_id\'),
aws_secret_access_key=cfg.get(\'aws_secret\')
)
s3 = session.client(\'s3\')
我尝试了以下两种方法,但都返回空:
response = s3.list_objects_v2(
Bucket=bucket_name)
for content in response.get(\'Contents\', []):
print(content[\'Key\'])
和
paginator = s3.get_paginator(\"list_objects_v2\")
for page in paginator.paginate(Bucket=bucket_name):
for content in page.get(\'Contents\', ()):
print(content[\'Key\'])
S3 存储桶是公开的,我可以访问它。里面有一个名为 content 的文件夹,该文件夹中有一个 .png 文件。
任何帮助,将不胜感激。谢谢!
-
什么是实际的桶?如果它是公开的,你能分享它吗?
-
边注:以防万一您不知道,通常不需要将凭证传递给 AWS Lambda 函数。只需将 IAM 角色分配给 Lambda 函数,boto3 就会自动获得访问 AWS 的凭据。不必创建
session对象。
标签: python amazon-web-services amazon-s3 boto3