Python 3.x 管理员用户禁止使用Boto3 ListObject
我一直在尝试编写一个小脚本,将S3文件夹的所有内容下载到lambda/tmp。为此,我需要列出特定bucket中的所有对象。不幸的是,我一直得到以下错误 调用HeadObject操作时发生错误(403):禁止 以下是我如何尝试从文件夹下载所有文件:Python 3.x 管理员用户禁止使用Boto3 ListObject,python-3.x,amazon-web-services,amazon-s3,permissions,Python 3.x,Amazon Web Services,Amazon S3,Permissions,我一直在尝试编写一个小脚本,将S3文件夹的所有内容下载到lambda/tmp。为此,我需要列出特定bucket中的所有对象。不幸的是,我一直得到以下错误 调用HeadObject操作时发生错误(403):禁止 以下是我如何尝试从文件夹下载所有文件: #initialize S3 try: s3 = boto3.resource('s3', aws_access_key_id=os.getenv('S3USERACCESSKEY'), aws_sec
#initialize S3
try:
s3 = boto3.resource('s3',
aws_access_key_id=os.getenv('S3USERACCESSKEY'),
aws_secret_access_key=os.getenv('S3USERSECRETKEY')
)
s3_client = boto3.client('s3',
aws_access_key_id=os.getenv('S3USERACCESSKEY'),
aws_secret_access_key=os.getenv('S3USERSECRETKEY')
)
except Exception as e:
logger.error("Could not connect to s3 bucket: " + str(e))
#Function to download whole folders from s3
for s3_key in s3_client.list_objects(Bucket=os.getenv('S3BUCKETNAME'))['Contents']:
s3_object = s3_key['Key']
if not s3_object.endswith("/"):
s3_client.download_file('bucket', s3_object, s3_object)
else:
import os
if not os.path.exists(s3_object):
os.makedirs(s3_object)
上述访问密钥具有完全的管理员权限:
编辑
移除手动钥匙后仍然没有成功,以下是我连接到Lambda的右侧:
以下是cloudwatch的实际错误:
代码现在看起来是这样的:
#initialize S3
try:
s3 = boto3.resource('s3')
s3_client = boto3.client('s3')
except Exception as e:
[....]
似乎“禁止”可能是权限的另一个问题,但我在上面找不到任何文档。确保访问密钥属于具有访问s3存储桶权限的IAM角色的用户。 如果从lambda运行,则无需使用访问密钥,只需将IAM角色附加到lambda即可 你进口博托了吗? 尝试运行仅执行以下操作: 更新
import boto3
s3 = boto3.resource('s3')
for bucket in s3.buckets.all():
print(bucket.name)
这不是lambda,对吗?@Spiff它确实在lambdai中运行如果你看一下我在图片上附加的权限方案,我对aws上的所有内容都有完全的管理权限,并且我添加了对S3的完全访问权限。因为它在lambda中执行,所以不需要使用访问密钥,只需将IAM角色附加到lambdaSe我的更新应答。我已检查。我已将角色添加到lambda未成功,请参阅上面的编辑。如果未导入boto3,我将收到不同的错误消息,类似于“boto3未定义”的内容