如何使用这个奇怪的纯文本文件访问S3存储桶?

时间:2017-05-16 14:33:23

标签: amazon-web-services amazon-s3

我有文本文件来访问S3存储桶,如下所示:

arn:aws:iam::############:user/aaaaaaaa-aaaaaaaaa-aaa
User
aaaaaaaa-aaaaaaaaa-aaa
Access key ID
AAAAAAAAAAAAAAAAAAAA
Secret access key
AAAAAAAAAAA/AAAAAAAAAAAAAAAAAAAAAAAAAAAA
{
    "Statement": [
        {
            "Effect":"Allow",
            "Action": [ 
                "s3:PutObject",
                "s3:GetObject",
                "s3:DeleteObject",
                "s3:ListAllMyBuckets",
                "s3:GetBucketLocation",
                "s3:ListBucket"
            ],
            "Resource":"arn:aws:s3:::bbbbbbbb-bbbbbbbbb-bbbbbbb/*"
        }
    ]
}

我有AWS账户,可以创建自己的存储桶,但是看不到用于获取此类文件的UI。

更新

我发了

>aws s3 ls
Unable to locate credentials. You can configure credentials by running "aws configure".
然后我做了

>aws configure
AWS Access Key ID [None]: AAAAAAAAAAAAAAAAAAAA
AWS Secret Access Key [None]: AAAAAAAAAAA/AAAAAAAAAAAAAAAAAAAAAAAAAAAA
Default region name [None]:
Default output format [None]:

现在

>aws s3 ls
An error occurred (AccessDenied) when calling the ListBuckets operation: Access Denied

为什么呢?为什么我不在文本文件中使用UserResource值或如何使用此数据?

更新2

我试过

>aws s3 ls

>aws s3 ls s3://bbbbbbbb-bbbbbbbbb-bbbbbbb

>aws s3 ls bbbbbbbb-bbbbbbbbb-bbbbbbb

>aws s3 ls bbbbbbbb-bbbbbbbbb-bbbbbbb/*

>aws s3 ls s3:/bbbbbbbb-bbbbbbbbb-bbbbbbb

并且在所有情况下都获得Access denied

3 个答案:

答案 0 :(得分:1)

您的系统管理员似乎已在AWS中创建了一些配置,他们想让您知道他们做了什么。该文件是来自不同地点的信息转储 - 供您参考,不适合在某处“使用”。

第一行是亚马逊资源名称(ARN),它唯一地标识您为用户。它可以在安全策略中用于授予您对资源的访问权限:

arn:aws:iam::############:user/aaaaaaaa-aaaaaaaaa-aaa

他们也告诉你你的用户名:

User
aaaaaaaa-aaaaaaaaa-aaa

访问密钥和密钥可用于标识您自己,就像您使用AWS Command-Line Interface (CLI)所做的那样:

Access key ID
AAAAAAAAAAAAAAAAAAAA
Secret access key
AAAAAAAAAAA/AAAAAAAAAAAAAAAAAAAAAAAAAAAA

下一部分是IAM政策:

{
    "Statement": [
        {
            "Effect":"Allow",
            "Action": [ 
                "s3:PutObject",
                "s3:GetObject",
                "s3:DeleteObject",
                "s3:ListAllMyBuckets",
                "s3:GetBucketLocation",
                "s3:ListBucket"
            ],
            "Resource":"arn:aws:s3:::bbbbbbbb-bbbbbbbbb-bbbbbbb/*"
        }
    ]
}

此策略声明您可以针对指定的Amazon S3存储桶执行列出的操作。

然而,这不是一个好的策略,因为最后3个动作实际上适用于存储桶(或没有存储桶),因此不应该与指定Resource的{​​{1}}语句一起使用。

如果您尝试访问Amazon S3中的信息但收到bucket/*,请与系统管理员联系以更新策略以授予您访问权限。

答案 1 :(得分:1)

  1. 您已根据更新正确配置了凭据 在问题中。
  2. 但您尚未在配置中指定默认区域。 请与您的管理员联系,了解此S3存储桶的区域。它 可以是us-east-1us-west-2
  3. 一旦拥有了您的存储区域,就可以发出命令 下面: aws s3 ls <name of your bucket> --region us-east-1
  4. 您接收拒绝访问权限的原因是您无法访问其他存储桶,而只能访问S3上的其中一个存储桶。这一行表明了这一点:

    "Resource":"arn:aws:s3:::bbbbbbbb-bbbbbbbbb-bbbbbbb/*"
    

    其中bbbbbbbb-bbbbbbbbb-bbbbbbb是您的名字。

答案 2 :(得分:0)

您需要转到IAM为您的存储桶创建政策。您需要将此策略添加到您的用户帐户,而不是使用您的用户AccessKey和SecretAccessKey访问此存储桶