首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用IAM角色的AWS认知S3访问

使用IAM角色的AWS认知S3访问
EN

Stack Overflow用户
提问于 2019-02-14 11:45:49
回答 1查看 561关注 0票数 0

目前,我正在研究一个用例,在该用例中,我需要使用application对web应用程序用户进行身份验证,并提供对S3桶中用户特定文件夹的访问。为此,我在浏览器端使用JavaScript,能够对用户进行身份验证。

我已经创建了一个IAM策略,其中我试图将S3访问限制为用户特定文件夹的身份验证用户。不知怎么的,这个政策是行不通的。

我在此尝试的政策如下:

代码语言:javascript
复制
{
"Version": "2012-10-17",
"Statement": [
    {
        "Sid": "VisualEditor0",
        "Effect": "Allow",
        "Action": [
            "cognito-identity:*",
            "mobileanalytics:PutEvents",
            "cognito-sync:*"
        ],
        "Resource": "*"
    },
    {
        "Sid": "VisualEditor1",
        "Effect": "Allow",
        "Action": "s3:ListBucket",
        "Resource": "arn:aws:s3:::mycognitobuckettest",
        "Condition": {
            "StringLike": {
                "s3:prefix": [
                    "cognito/mycognitobuckettest/${cognito-identity.amazonaws.com:sub}/",
                    "cognito/mycognitobuckettest/${cognito-identity.amazonaws.com:sub}/*"
                ],
                "s3:delimiter": [
                    "/"
                ]
            }
        }
    },
    {
        "Sid": "VisualEditor2",
        "Effect": "Allow",
        "Action": "s3:*",
        "Resource": "arn:aws:s3:::mycognitobuckettest/cognito/mycognitobuckettest/${cognito-identity.amazonaws.com:sub}/*"
    }
]}`

如果从资源路径中删除${cognito-identity.amazonaws.com:sub},则可以访问S3桶。但是,如果我将其放入资源路径中,并且处于状态键中,则会导致访问拒绝错误。

根据我的理解,${cognito-identity.amazonaws.com:sub}的值是区域ID和uuid,您可以得到这样的var identityID = AWS.config.credentials.identityId

我试图在资源路径中列出对象,下面是我用来列出对象的JavaScript代码

代码语言:javascript
复制
var listObjectParms = {Bucket: bucketName, Delimiter: '/', Prefix: bucketPrefix};

    s3.listObjects(listObjectParms, function(err, data) {
        if(err) {
            console.log("Error", err);
        } else {
            console.log("LIST OBJECT successful", data);
        }
    });

${cognito-identity.amazonaws.com:sub}的确切值是多少?

我已经根据接收到的标识ID在S3桶中创建了文件夹。

我现在被困在这点上了。欢迎您为解决这一问题提供任何帮助。

谢谢,

阿维纳什

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-15 14:25:10

我最近遇到了这个问题。这个${genito-Idfity.amazonaws.com:sub}值不是任何来自您的认知用户池的内容。这是你从认知到身份的身份证明。

美国东部-1:aaaaaaa bbbb-1111-ccccccccc11f

您可以使用id方法在javascript中获取此id。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54689660

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档