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 两者都没有。
我有这个片段可以在 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 两者都没有。