Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何打印存储在S3存储桶中的文件名?_Python_Python 3.x_Amazon S3_Boto3 - Fatal编程技术网

Python 如何打印存储在S3存储桶中的文件名?

Python 如何打印存储在S3存储桶中的文件名?,python,python-3.x,amazon-s3,boto3,Python,Python 3.x,Amazon S3,Boto3,我试图访问AmazonS3中存储在存储桶中的文件名,但我很难做到这一点 import requests import boto3 from boto3.session import Session session= Session(aws_access_key_id="access_key", aws_secret_access_key="secret_key") s3= session.resource('s3') my_bucket=s3.Bucket("my_bucket") for

我试图访问AmazonS3中存储在存储桶中的文件名,但我很难做到这一点

import requests
import boto3
from boto3.session import Session

session= Session(aws_access_key_id="access_key", aws_secret_access_key="secret_key")
s3= session.resource('s3')
my_bucket=s3.Bucket("my_bucket")

for s3_file in my_bucket.objects.all():
    print(list(s3_file.key))

这并不能解决您的
拒绝访问
错误,但值得一提的是,在代码文件中包含访问密钥和密钥被视为安全性差

相反,您可以运行
aws configure
命令将凭据存储在配置文件中。然后,您的代码将自动查找凭据:

import boto3

s3 = boto3.resource('s3')
my_bucket = s3.Bucket("my-bucket")

for object in my_bucket.objects.all():
    print(object.key)

如果您在AmazonEC2实例上运行代码,那么就更容易了。只需为实例分配一个IAM角色,代码就会自动接收凭据。

你说的“困难时期”是什么意思?我遇到了一个拒绝访问的错误。你认为应该允许你访问存储桶的原因是什么?bucket是否属于提供访问密钥和密钥的同一帐户?您可以使用aws s3 ls s3://my bucket命令列出bucket吗?是的,@JohnRotenstein它属于同一个帐户。为IAM用户分配了哪些权限以允许他们访问bucket?是,我知道这种方法,但是如果我想在我的代码文件中包含访问密钥和私钥来尝试它呢?您当然可以在代码文件中包含您的访问密钥和私钥。建议不要这样做,因为您的代码可能存储在其他人可以看到和使用凭据的地方(例如GitHub)。