尝试使用aws sdk

时间:2019-02-11 15:01:49

标签: javascript amazon-s3 aws-sdk

我正在尝试使用AWS开发工具包javascript库将文件直接上传到S3。我正在遵循此处概述的指南:

https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/s3-example-photo-album-full.html

得到

的支持

https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/getting-started-browser.html

我很确定我已经正确设置了一切,但是每当我尝试运行代码时,都会收到403错误。我最初尝试使用最松散的安全性来执行此操作,目的是慢慢将其拧紧。

这是我所做的:

  1. 使用创建向导期间选择的默认设置创建了一个名为Playground的新存储桶。

  2. 使用未经身份验证的身份创建了一个名为“游乐场”的Cognito身份池。未经身份验证的角色名称为Cognito_PlaygroundUnauth_Role

  3. 向IAM未经身份验证的角色添加策略,如下所示

    {
       "Version": "2012-10-17",
       "Statement": [
          {
             "Effect": "Allow",
             "Action": [
                "s3:*"
             ],
             "Resource": [
                "arn:aws:s3:::playground/*"
             ]
          }
       ]
    }
  1. 为新的Playground存储桶添加了CORS权限
    <?xml version="1.0" encoding="UTF-8"?>
    <CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
    <CORSRule>
        <AllowedOrigin>*</AllowedOrigin>
        <AllowedMethod>POST</AllowedMethod>
        <AllowedMethod>GET</AllowedMethod>
        <AllowedMethod>PUT</AllowedMethod>
        <AllowedMethod>DELETE</AllowedMethod>
        <AllowedMethod>HEAD</AllowedMethod>
        <AllowedHeader>*</AllowedHeader>
    </CORSRule>
    </CORSConfiguration>

这时,应该根据上面列出的指南进行配置,但我得到了403。我试图使事情保持简单,仅在上面的参考URL中实现listAlbums方法。

我认为然后向存储区存储桶中添加存储桶策略可能会有所帮助,但没有成功

{
    "Version": "2012-10-17",
    "Id": "Policy1549895523201",
    "Statement": [
        {
            "Sid": "Stmt1549895522186",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::925601331860:role/Cognito_PlaygroundUnauth_Role"
            },
            "Action": "s3:*",
            "Resource": "arn:aws:s3:::playground/*"
        }
    ]
}

更新 如果我更新存储桶上的Public Access ACL,这样每个人都可以列出和写入对象,那么我就可以完成这项工作。但是我不想向所有人开放。只有Cognito匿名角色

有什么想法吗?

0 个答案:

没有答案