Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services AWS-无法从EC2窗口访问S3存储桶_Amazon Web Services_Amazon S3_Amazon Ec2_Amazon Iam - Fatal编程技术网

Amazon web services AWS-无法从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

我已经启动了EC2-Windows实例 创建了一个S3 bucket,创建了一个角色S3 FullAccess并分配给EC2实例

通过EC2实例浏览器,我可以访问我角色的元数据:

如果我试图从S3存储桶访问文件:

获取以下错误:

<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