我有这个片段在S3
上传文件s3 = boto3.resource('s3')
s3.Object('bucketname', timestamped_filename).put(Body=open(FILE_SAVE_PATH, 'rb'))
我的存储桶拥有每个人的删除/上传权限,因此它可以在我的Windows计算机上运行。 但是,当我尝试在我的Mac上运行相同的代码时,它会抛出
botocore.exeptions.NoCredentialsError: Unable to locate credentials
这种行为是正常的吗? 如果我正在访问公共存储桶,我可以提供什么样的凭据?
谢谢。
答案 0 :(得分:0)
在对AWS进行API调用时,必须提供有效凭据。这些凭证与IAM用户关联,并授予对AWS服务的访问权限。
在从Amazon EC2实例进行API调用(或使用AWS Command-Line Interface (CLI))时,可以通过在启动时为实例分配IAM角色,将这些凭据授予EC2实例
从非EC2计算机拨打电话时,必须通过配置文件或环境变量提供凭证。
您的Windows计算机似乎是具有角色的EC2实例,或者它具有带有效凭据的本地配置文件;看起来你的Mac没有这些。