我正在尝试使用运行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)
给我错误的AccessKeyId
和SecretKey
它提供的我甚至找不到。我想我要求持有这个identity
的IAM的访问密钥/秘密但是我需要访问secrets manager
的IAM角色的访问密钥/秘密所以我可以将它们提供给boto3并检索信用/秘密。
我也需要同样的user pool
,但一旦我意识到我正在做的愚蠢可以配置。
Cognito生成由AWS STS提供的新凭据。您将无法将这些凭据与您拥有的现有IAM生成的凭据相匹配。要访问AWS Secrets Manager API,请确保您的Cognito Identity Pool的Authenticated Role
具有足够的权限。