我第一次尝试使用亚马逊网络服务,并且无法理解凭据流程。
来自awsblog.com的tutorial,我知道我可以将文件上传到我的一个AWS"桶"如下:
s3 = Aws::S3::Resource.new
s3.bucket('bucket-name').object('key').upload_file('/source/file/path')
在上述情况下,我假设他使用默认凭据(如文档中所述here),他使用特定的环境变量来存储访问权限关键和秘密或类似的东西。 (如果这不是正确的想法,请随意让我直截了当。)
我很难理解的是.object('key')
背后的含义。这是什么?我已经足够轻松地生成了一个桶,但是它应该有一个特定的密钥吗?如果是这样,我该如何创建呢?如果没有,那么应该进入.object()
?
我认为这必须在某处,但我还没有能够得到它(也许我误读了文档)。感谢任何给我一些指导的人。
答案 0 :(得分:0)
因为S3没有传统目录,所以您会考虑客户端计算机中的整个“文件路径”,即\ some \ directory \ test.xls成为“密钥”。对象是文件中的数据。
存储桶在S3中是唯一的,并且存储桶中的密钥必须是唯一的。
就凭据而言,有多种方式提供它们 - 一种是在代码中实际提供id和秘密访问密钥,另一种是将它们存储在机器某处的配置文件中(这取决于操作系统类型),然后当您在生产中运行代码时,即在EC2实例上运行时,最佳做法是在分配了IAM角色的情况下启动实例,然后在该机器上运行的任何内容都自动拥有所有权限。那个角色。对于在EC2中运行的代码,这是最好/最安全的选项。