Amazon web services AWS-无法从EC2窗口访问S3存储桶
我已经启动了EC2-Windows实例 创建了一个S3 bucket,创建了一个角色S3 FullAccess并分配给EC2实例 通过EC2实例浏览器,我可以访问我角色的元数据: 如果我试图从S3存储桶访问文件: 获取以下错误:Amazon web services AWS-无法从EC2窗口访问S3存储桶,amazon-web-services,amazon-s3,amazon-ec2,amazon-iam,Amazon Web Services,Amazon S3,Amazon Ec2,Amazon Iam,我已经启动了EC2-Windows实例 创建了一个S3 bucket,创建了一个角色S3 FullAccess并分配给EC2实例 通过EC2实例浏览器,我可以访问我角色的元数据: 如果我试图从S3存储桶访问文件: 获取以下错误: <Error> <Code>AccessDenied</Code> <Message>Access Denied</Message> <RequestId>5EDB0A4
<Error>
<Code>AccessDenied</Code>
<Message>Access Denied</Message>
<RequestId>5EDB0A49E36E0E50</RequestId>
<HostId>cPFNEbsfwXA=</HostId>
</Error>
角色JSON:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:*",
"Resource": "*"
}
]
}
我是AWS的新手
编辑:
C:\Users\Administrator>aws s3 cp s3://mybucket/test.jar C:\downloads
shouldn't use https://, used s3://, it's working
根据建议,我使用了CLI命令,出现以下错误:
提及
您创建的EC2角色将允许在EC2上运行的任何SDK访问S3存储桶,而不是从浏览器访问 如果您想使用浏览器访问S3文件(无论是从EC2还是从笔记本电脑),并限制bucket内容的可见性,最好的方法是使用 为对象创建预签名URL时,必须提供安全凭据,指定bucket名称、对象密钥,指定HTTP方法(获取下载对象)以及过期日期和时间。预签名URL仅在指定的持续时间内有效 任何收到预签名URL的人都可以访问该对象。对于 例如,如果您的存储桶中有视频,并且存储桶和 对象是私有的,您可以通过以下方式与他人共享视频: 生成预签名的URL
通过浏览器中的URL访问对象时,您没有传递任何用户凭据。因此,AmazonS3不知道您是谁,并且拒绝访问对象 更好的方法是通过API调用访问对象,可以从编程语言SDK访问,也可以使用访问,后者有一个
aws s3 cp
命令,可以将文件复制到Amazon s3或从Amazon s3复制文件
如果必须通过web浏览器访问对象,同时保持对象的私密性,则应用程序将需要生成一个时间限制,以在指定的时间范围内授予对对象的访问权限。能否澄清您打算如何使用正在访问的文件?你真的需要在浏览器中使用它们,还是只是想下载它们?
C:\Users\Administrator>aws s3 cp https://s3.ap-south-1.amazonaws.com/mybucket/test.jar C:\downloads
usage: aws s3 cp <LocalPath> <S3Uri> or <S3Uri> <LocalPath> or <S3Uri> <S3Uri>
Error: Invalid argument type
C:\Users\Administrator>aws s3 cp https://mybucket/test.jar C:\downloads
usage: aws s3 cp <LocalPath> <S3Uri> or <S3Uri> <LocalPath> or <S3Uri> <S3Uri>
Error: Invalid argument type
C:\Users\Administrator>aws s3 cp https://mybucket/test.jar . --recursive
usage: aws s3 cp <LocalPath> <S3Uri> or <S3Uri> <LocalPath> or <S3Uri> <S3Uri>
Error: Invalid argument type
C:\Users\Administrator>aws s3 cp s3://mybucket/test.jar C:\downloads
shouldn't use https://, used s3://, it's working