0

我使用https://docs.aws.amazon.com/cdk/api/latest/python/aws_cdk.aws_cognito/CfnUserPool.html aws 文档创建了“ CfnUserPool ”对象。

我想获取 UserPool 的“ Pool Id ”。它的 Id 值为 - “ us-east-1_4kXXXXXXX ”。我尝试了很多选项来使用 python 获取这个值,但没有奏效。

所以我获取了 UserPool 的“ Pool ARN ”值,因为它有 id 值。池 ARN 为 - “ arn:aws:cognito-idp:us-east-1:XXXXXXXXXXXX:userpool/us-east-1_4kXXXXXXX ” 您可以看到池 ARN 中有“us-east-1_4kXXXXXXX”子字符串。

我尝试使用以下代码从 Pool ARN 获取“us-east-1_4kXXXXXXX”值 -

_cognito_user_pool = _cognito.CfnUserPool(stack, id="pool-id", user_pool_name="user-auth-pool")
_user_pool_id = _cognito_user_pool.attr_arn.split('/')[1]

我收到“IndexError:列表索引超出范围”错误。

我试图在控制台上打印这个 ARN 值,我得到了这个值 - ${Token[TOKEN.327]} 我不知道为什么它打印用户池 arn 值是令牌格式。我想每当我试图获取它时,它都是令牌格式,这就是为什么我不能用“/”分割它。当我们将 ARN 值传递给任何资源时,它会采用正确的格式或字符串格式,而不是令牌格式。但是如果我们试图操纵它,它会给出“IndexError: list index out of range”错误。因为它是令牌格式。

4

1 回答 1

0

答案 - 我已经通过使用UserPool而不是CfnUserPool解决了这个问题。 UserPool有“ user_pool_id ”属性,我们可以使用这个属性获取它的 id 值。

于 2019-12-27T09:13:23.237 回答