python - 访问云上的 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>
知道如何访问它吗?
解决方案
您必须创建一个 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
推荐阅读
- node.js - TypeError:无法读取 null 的属性“长度”。res.send文件
- php - 远程调试不会在 Docker、VScode 的断点处停止
- c# - .NET UWP MediaFrameReference 帧的大小(以字节为单位)是多少
- java - 如何使创建的班级打印?
- azure - 为 Azure SQL DB 创建 AD 用户时出现语法错误
- c++ - 如何在 Visual Studio Code 中重命名我的 a.exe 文件?
- nginx - nginx - 使用绝对文件路径提供单个 URL
- c# - log4net:使用 ILog 与 ILogger 有什么区别/优势?
- c# - TFS -“分配给”字段的工作项验证错误
- python - 比较列表并获取计数