如何在 AWS SAM 或 Cloudformation 中添加身份提供者

Posted

技术标签:

【中文标题】如何在 AWS SAM 或 Cloudformation 中添加身份提供者【英文标题】:How to add Identity Provider in AWS SAM or Cloudformation 【发布时间】:2021-07-26 07:46:18 【问题描述】:

我正在尝试在我的 SAM 应用程序中添加像 here 所述的身份提供者。

当我运行 sam deploy 时,我收到以下错误:

The attribute mapping is missing required attributes [nickname] (Service: AWSCognitoIdentityProviderService; Status Code: 400; Error Code: InvalidParameterException; Request ID: xy; Proxy: null)  

虽然在我的 YAML 定义中,我将属性 nickname 映射如下:

UserPoolIdentityProvider:
    Type: AWS::Cognito::UserPoolIdentityProvider
    Properties: 
      AttributeMapping:
        given_name: "nickname"
        sub: "username"
        email: "email"
      ProviderDetails:
        ...

【问题讨论】:

您的用户池是否需要昵称?当您进行映射时,请检查您的用户池需要什么以及您的提供者字段是什么。 是的,昵称是我的用户池中的必需属性。我检查了提供商的属性。在使用 aws 控制台之前,我实际上测试了整个事情。在那里,我也将 given_name 映射到了昵称并且它起作用了。 【参考方案1】:

检查提供者是否具有“昵称”属性以及池是否支持。

【讨论】:

否,提供者没有“昵称”作为属性。那是我要映射到的 aws 属性。所以我才意识到我混淆了映射中的键和值。我应该反过来。所以这里指定映射的正确方式是:昵称:“given_name”。刚刚试了一下,效果很好。

以上是关于如何在 AWS SAM 或 Cloudformation 中添加身份提供者的主要内容,如果未能解决你的问题,请参考以下文章

如何在不使用 SAM 的情况下使用 AWS 代码部署来部署简单的 AWS lambda 函数?

如何修复漂移的 AWS CloudFormation 堆栈?

如何在 Eclipse 和 Window 10 上配置 AWS SAM

如何销毁 aws SAM Local lambda?

如何从 AWS SAM 本地 docker 实例连接到主机 MySQL?

如何在 AWS SAM Cloud-Formation 中使用 Route53 设置自定义域名