public 存储桶的 S3 凭据?

S3 credentials for a public bucket?

我有这个片段可以在 S3 上上传文件

s3 = boto3.resource('s3')
s3.Object('bucketname', timestamped_filename).put(Body=open(FILE_SAVE_PATH, 'rb'))

我的存储桶对每个人都有 delete/upload 权限,所以它在我的 Windows 机器上工作。 但是,当我尝试 运行 我的 Mac 上的相同代码时,它会抛出

botocore.exeptions.NoCredentialsError: Unable to locate credentials

这种行为正常吗? 如果我正在访问 public 存储桶,我可以提供什么样的凭据?

谢谢。

API 调用 AWS 时,必须提供有效凭证。这些凭证与 IAM 用户关联并授予对 AWS 服务的访问权限。

从 Amazon EC2 实例进行 API 调用(或使用 AWS Command-Line Interface (CLI) 时,可以通过分配将这些凭据授予 EC2 实例启动时实例的 IAM 角色。

从非 EC2 计算机进行调用时,必须通过配置文件或环境变量提供凭据。

您的 Windows 机器似乎是一个具有角色的 EC2 实例,或者它有一个带有有效凭据的本地配置文件;看来你的 Mac 两者都没有。

参见:boto3 Credentials documentation