如何使用AWS Cognito - Indentity Pool检索正确的凭据以访问boto3客户端上的AWS SecretsManger

问题描述 投票:1回答:1

我正在尝试使用运行python3(kivy)的独立应用程序检索AWS Secret(这是boto3配置)。

客户端使用boto3并使用硬编码的凭据正常工作。

我正试图在boto3中使用get_credentials_for_identity获得信誉。

我创建了一个联合身份池并为其分配了一个策略来访问秘密管理器:

{
    "Version": "2012-10-17",
    "Statement": {
        "Effect": "Allow",
        "Action": "secretsmanager:GetSecretValue",
        "Resource": "<arn-of-the-secret-the-app-needs-to-access>"
    }
}

我也使用通用的Cognito角色做了同样的事情。 (知道这不是问题,但我确信我们都愚蠢*尝试解决问题)。

client = boto3.client('cognito-identity', region_name='eu-west-1')
response = client.get_credentials_for_identity(
    #identity taken from fedenration/identity pools;app with cognito access
    IdentityId='eu-west-1:6###...',
)
creds_dic = response['Credentials']
awsaccesskey = creds_dic['AccessKeyId']
awsseckey = creds_dic['SecretKey']
print(response)
print(awsseckey)
print(awsaccesskey)

给我错误的AccessKeyIdSecretKey它提供的我甚至找不到。我想我要求持有这个identity的IAM的访问密钥/秘密但是我需要访问secrets manager的IAM角色的访问密钥/秘密所以我可以将它们提供给boto3并检索信用/秘密。

我也需要同样的user pool,但一旦我意识到我正在做的愚蠢可以配置。

python amazon-web-services boto3 amazon-cognito aws-secrets-manager
1个回答
0
投票

Cognito生成由AWS STS提供的新凭据。您将无法将这些凭据与您拥有的现有IAM生成的凭据相匹配。要访问AWS Secrets Manager API,请确保您的Cognito Identity Pool的Authenticated Role具有足够的权限。

© www.soinside.com 2019 - 2024. All rights reserved.