Boto3: obtenir les informations d'identification de façon dynamique?
J'ai du mal à trouver comment je peux obtenir mes aws_access_key_id et aws_secret_access_key dynamiquement à partir de mon code.
Dans boto2 je pouvais faire ce qui suit: boto.config.get_value('Credentials', 'aws_secret_access_key')
mais je n'arrive pas à trouver une méthode similaire dans boto3. J'ai été en mesure de trouver les clés si je regarde dans boto3.Session()._session._credentials
mais qui semble comme la mère de tous les hacks pour moi et je ne voudrais pas aller dans cette voie.
- Pourriez-vous préciser pourquoi vous avez besoin d'un accès direct aux informations d'identification dans votre code? Aussi, ce n'est pas le lieu pour exprimer des opinions ou de la déception dans une API de changement. Prendre que de l'AWS forums.
- J'en ai besoin parce que j'ai copier les données à partir de S3 à Redshift et j'ai donc besoin de la
aws_access_key_id
etaws_secret_access_key
. Je préfère ne pas avoir à écrire du code qui se passe dans le fichier config/fichiers d'informations d'identification et de trouver quand Boto déjà fait cela. - Ouais, en transmettant ces touches pour Redshift pour S3 accès est une grande douleur. Je souhaite qu'ils nous permettent d'attribuer un rôle IAM de Redshift pour éviter le besoin de le faire. Je serais inquiet que votre solution n'est pas d'aller travailler sur une instance EC2 à l'aide d'un IAM profil d'instance, ou dans une fonction Lambda.
- Je suis d'accord avec MarkB. Ce n'est pas une solution portable. De vérifier ma solution et voir s'il fonctionne.
- Comment mettre la clé à l'intérieur de l'identification de config et lui donner un nouveau nom de profil autre que [par défaut] ? Et l'utilisation profile_name= point explicite à la clé de profil?
- En passant, vous n'avez pas à le faire pour Redshift commandes de COPIE plus. Redshift peut assumer des rôles IAM maintenant: aws.amazon.com/releasenotes/8869404215180370 C'est la meilleure solution.
Vous devez vous connecter pour publier un commentaire.
Il est généralement conseillé de seulement utiliser des informations d'identification. Vous pouvez obtenir des informations d'identification temporaires avec
STS.get_session_token
.EDIT: Comme de cette PR, vous pouvez accéder à la session en cours, les informations d'identification de la sorte:
Je voudrais encore vous recommandons d'utiliser temporaire des informations d'identification de l'étendue est exactement ce redshift besoins.
Utilisation botocore