【问题标题】:AWS Lambda to use caller identityAWS Lambda 使用调用者身份
【发布时间】:2019-10-04 10:38:13
【问题描述】:

在移动应用程序中,我希望 lambda 函数能够仅访问 DynamoDB 中的行,其中键是调用 Lambda 的 userId。 我设置了以下政策,但我不断收到

User: arn:aws:sts::XXX:assumed-role/FederatedIdentityRole/CognitoIdentityCredentials is not authorized to perform: dynamodb:GetItem on resource: arn:aws:dynamodb:us-east-1:XXX:table/UserData

欢迎任何提示。 谢谢

以下是 Lambda 的政策:

{
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "dynamodb:BatchGetItem",
                "dynamodb:BatchWriteItem",
                "dynamodb:PutItem",
                "dynamodb:GetItem",
                "dynamodb:Query",
                "dynamodb:UpdateItem"
            ],
            "Resource": [
                "arn:aws:dynamodb:us-east-1:XXX:table/UserData"
            ],
            "Condition": {
                "ForAllValues:StringEquals": {
                    "dynamodb:LeadingKeys": "${cognito-identity.amazonaws.com:sub}"
                }
            }
        }

【问题讨论】:

  • 您的问题与您对“cognito-identity.amazonaws.com:sub”的使用有关。见stackoverflow.com/questions/42605419/…
  • 好吧,我刚刚发现 ${cognito-identity.amazonaws.com:sub} 并没有真正引用您从 cognito 用户池获得的身份验证令牌中的“sub”字段,而是您从该用户的身份池中获得的 IdentityId!

标签: amazon-web-services aws-lambda amazon-dynamodb


【解决方案1】:

我刚刚发现 ${cognito-identity.amazonaws.com:sub} 并不是真正指代您从 cognito 用户池获得的身份验证令牌中的 sub 字段,而是指您从 identityPool 获得的 IdentityId那个用户!

【讨论】:

    猜你喜欢
    • 2016-05-30
    • 2019-06-19
    • 2016-09-27
    • 2019-02-11
    • 2022-06-21
    • 2022-07-28
    • 2019-07-08
    • 2021-09-19
    • 1970-01-01
    相关资源
    最近更新 更多