首页 > 解决方案 > 访问云上的 S3 文件

问题描述

我对 AmazonCloud 很陌生。我设置了一个 EC2 实例,以便能够在云上运行我的 jupyter 笔记本,我现在正在尝试设置我的数据文件,以便能够在任何地方访问它们。

我的目标就像我在本地主机上做的那样,使用 Amazon S3 打开我的笔记本中的数据,例如位于云上的 CSV 或 Json 文件

我打开了一个上传数据的 Amazon S3 存储桶,我将存储桶设置设置为阻止公共访问 > 禁用

但是,当我尝试使用 url 访问我的数据时:https ://bucketname.s3.amazonaws.com/folder/file.json

我得到错误:

<Error>
<Code>AccessDenied</Code>
<Message>Access Denied</Message>
<RequestId>92D39BE8B6594380</RequestId>
<HostId>
C0H9RwlhzCxSdp2nLh5o+G7XWSKn3aES1YWzWgbv3tQL6B18Ky0JDkGE0Psn43c3Wl1jiYr9rng=
</HostId>

知道如何访问它吗?

标签: pythonamazon-web-servicesamazon-s3

解决方案


您必须创建一个 IAM 角色以允许您的 EC2 实例访问 S3。该角色是在 AWS 控制台的 IAM 部分中创建的。受信任的实体是 EC2,附加的策略可能是“AmazonS3ReadOnlyAccess”,如下所示:

{
  "Version": "2012-10-17",
  "Statement": [{
    "Effect": "Allow",
    "Action": [
      "s3:Get*",
      "s3:List*"
    ],
    "Resource": "*"
  }]
}

对于从 Jupiter Notebook 到 S3 的连接,您可以使用 boto3。此处提供更多信息:使用 IAM 角色向在 Amazon EC2 实例上运行的应用程序授予权限 - AWS Identity and Access Management


推荐阅读