python3 (kivy) を実行しているスタンドアロン アプリケーションを使用して、AWS シークレット (boto3 構成) を取得しようとしています。
クライアントは boto3 を使用し、ハードコードされた資格情報で正常に動作します。
get_credentials_for_identity
boto3で使用して信用を得ようとしています。
フェデレーション 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
自分がやっている愚かさに気づいたら、それを設定できます。