1

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

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

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

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

{
    "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它提供的那些我什至找不到。我想我正在询问持有此文件的 IAM 的访问密钥/秘密,identity但我需要正在访问的 IAM 角色的访问密钥/秘密,secrets manager因此我可以将它们输入 boto3 并检索凭据/秘密。

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

4

1 回答 1

0

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

于 2019-04-28T15:02:38.023 回答