在云端访问S3文件

时间:2019-06-15 17:13:00

标签: python amazon-web-services amazon-s3

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

我的目标就像是在localhost上一样,使用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>

任何想法我该如何访问?     

1 个答案:

答案 0 :(得分:2)

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

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

对于从Jupiter Notebook到S3的连接,您可以使用boto3。 这里的更多信息:Using an IAM Role to Grant Permissions to Applications Running on Amazon EC2 Instances - AWS Identity and Access Management