1

python3 (kivy) を実行しているスタンドアロン アプリケーションを使用して、AWS シークレット (boto3 構成) を取得しようとしています。

クライアントは boto3 を使用し、ハードコードされた資格情報で正常に動作します。

get_credentials_for_identityboto3で使用して信用を得ようとしています。

フェデレーション ID プールを作成し、Secrets Manager にアクセスするためのポリシーを割り当てました。

{
    "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。これを保持している IAM のアクセス キー/シークレットを求めていると思いますidentityが、アクセスしている IAM ロールのアクセス キー/シークレットが必要なので、secrets managerそれらを boto3 にフィードしてクレド/シークレットを取得できます。

私も同じことが必要ですが、user pool自分がやっている愚かさに気づいたら、それを設定できます。

4

1 に答える 1

0

Cognito は、AWS STS によって提供される新しい認証情報を生成します。これらの資格情報を、IAM によって生成された既存の資格情報と照合することはできません。AWS Secrets Manager API にアクセスするには、Cognito ID プールAuthenticated Roleに適切なアクセス許可があることを確認してください。

于 2019-04-28T15:02:38.023 に答える