AWS - 无法从EC2窗口

时间:2018-04-17 15:16:53

标签: amazon-web-services amazon-s3 amazon-ec2 amazon-iam

我已经推出了EC2 - Windows实例 创建了一个S3存储桶,创建了一个角色S3-FullAccess并分配给EC2实例。

从EC2实例浏览器,我可以访问我的角色的元数据: http://169.254.169.254/latest/meta-data/iam/security-credentials/EC2-S3-access

{
  "Code" : "Success",
  "LastUpdated" : "2018-04-10T04:47:11Z",
  "Type" : "AWS-HMAC",
  "AccessKeyId" : "myaccess"
  "SecretAccessKey" : "mysecretkey",
  "Token" : "mytoken",
  "Expiration" : "2018-04-10T11:10:43Z"
}

如果我尝试从S3存储桶访问文件: https://s3.ap-south-1.amazonaws.com/mybucket/test.jar

获得以下错误:

<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新手

修改

建议我使用CLI命令,获得以下错误: 提到https://docs.aws.amazon.com/cli/latest/reference/s3/cp.html

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

2 个答案:

答案 0 :(得分:1)

通过浏览器中的网址访问对象时,您没有传递任何用户凭据。因此,Amazon S3不知道您是谁,并且拒绝访问对象。

更好的方法是通过API调用访问对象,可以是编程语言SDK,也可以是使用AWS Command-Line Interface (CLI)aws s3 cp具有{{1}}命令可以将文件复制到Amazon S3或从Amazon S3复制文件。

如果必须可以通过网络浏览器访问,同时保持对象的私密性,那么您的应用程序需要生成一个有时间限制的pre-signed URL,以便在指定的时间范围内授予对象的访问权限。< / p>

答案 1 :(得分:0)

您创建的EC2角色将允许在EC2上运行的任何SDK访问S3存储桶,而不是从浏览器访问。

如果您想使用浏览器访问S3文件(无论是从您的笔记本电脑的EC2(或)),并限制存储桶内容的可见性,最好的方法是使用presigned urls

  

为对象创建预签名URL时,必须提供安全凭据,指定存储桶名称,对象密钥,指定HTTP方法(下载对象的GET)以及到期日期和时间。预签名URL仅在指定的持续时间内有效。

     

任何收到预签名网址的人都可以访问该对象。对于   例如,如果您的存储桶中有视频,而且存储桶和存储桶都有   该对象是私有的,您可以与他人分享视频   生成预签名网址。