Lorsque j'exécute simplement le code suivant, j'obtiens toujours cette erreur.
s3 = boto3.resource('s3')
bucket_name = "python-sdk-sample-%s" % uuid.uuid4()
print("Creating new bucket with name:", bucket_name)
s3.create_bucket(Bucket=bucket_name)
J'ai enregistré mon fichier d'identification dans
C:\Users\myname\.aws\credentials
, d'où Boto devrait lire mes informations d'identification.
Mon réglage est-il incorrect?
Voici la sortie de boto3.set_stream_logger('botocore', level='DEBUG')
.
2015-10-24 14:22:28,761 botocore.credentials [DEBUG] Skipping environment variable credential check because profile name was explicitly set.
2015-10-24 14:22:28,761 botocore.credentials [DEBUG] Looking for credentials via: env
2015-10-24 14:22:28,773 botocore.credentials [DEBUG] Looking for credentials via: shared-credentials-file
2015-10-24 14:22:28,774 botocore.credentials [DEBUG] Looking for credentials via: config-file
2015-10-24 14:22:28,774 botocore.credentials [DEBUG] Looking for credentials via: ec2-credentials-file
2015-10-24 14:22:28,774 botocore.credentials [DEBUG] Looking for credentials via: boto-config
2015-10-24 14:22:28,774 botocore.credentials [DEBUG] Looking for credentials via: iam-role
boto3.set_stream_logger('botocore', level='DEBUG')
avant votre code? Il montrera où il recherche les informations d'identification.HOME
pour qu'elle pointeC:\Users\myname
ouAWS_SHARED_CREDENTIALS_FILE
qu'elle pointe directement vers votre fichier d'informations d'identification.botocore.exceptions.NoRegionError: You must specify a region.
* mon fichier de configuration ↓ est situé dans le même dossier que mes identifiants.[default] ap-northeast-1
Réponses:
essayez de spécifier les clés manuellement
Assurez-vous de ne pas inclure votre ACCESS_ID et ACCESS_KEY dans le code directement pour des raisons de sécurité. Envisagez d'utiliser les configurations d'environnement et de les injecter dans le code comme suggéré par @Tiger_Mike.
Pour les environnements Prod, envisagez d'utiliser des clés d'accès rotatives: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html#Using_RotateAccessKey
la source
.env
fichier (non validé) serait idéal et serait mieux que d'avoir à choisir dans un~/.aws/
dossier.J'ai eu le même problème et j'ai découvert que le format de mon
~/.aws/credentials
fichier était incorrect.Cela fonctionnait avec un fichier contenant:
Notez que le nom du profil doit être "
[default]
". Certains documents officiels font référence à un profil nommé "[credentials]
", qui n'a pas fonctionné pour moi.la source
aws configure
fonctionne également si aws-cli est installéSi vous recherchez un autre moyen, essayez d'ajouter vos informations d'identification à l'aide d' AmazonCLI
à partir du type de terminal: -
puis renseignez vos clés et votre région.
la source
Assurez-vous que votre fichier ~ / .aws / credentials sous Unix ressemble à ceci:
Votre script Python devrait ressembler à ceci, et cela fonctionnera:
Source: https://boto3.readthedocs.io/en/latest/guide/configuration.html#interactive-configuration .
la source
output = json
normalement est placé~/.aws/config
dans une[profile MyProfile1]
section. Cela peut ne pas fonctionner si spécifié dans lecredentials
fichier à la place.Ces instructions sont destinées aux machines Windows avec un seul profil utilisateur pour AWS. Assurez-vous que votre
~/.aws/credentials
fichier ressemble à ceciJ'ai dû définir la
AWS_DEFAULT_PROFILE
variable d'environnement pour êtreprofile_name
trouvée dans vos informations d'identification.Ensuite, mon python a pu se connecter. par exemple d' ici
la source
J'ai également eu le même problème, il peut être résolu en créant un fichier de configuration et d'informations d'identification dans le répertoire personnel. Vous trouverez ci-dessous les étapes que j'ai suivies pour résoudre ce problème.
Créez un fichier de configuration:
Et dans ce fichier je suis entré dans la région
Créez ensuite le fichier d'informations d'identification:
Entrez ensuite vos identifiants
Après avoir défini tout cela, puis mon fichier python pour connecter le bucket. Exécutez ce fichier listera tout le contenu.
Vous pouvez également consulter les liens ci-dessous:
la source
à partir du type de terminal: -
puis renseignez vos clés et votre région.
après cela, utilisez n'importe quel environnement à l'étape suivante. Vous pouvez avoir plusieurs clés en fonction de votre compte. Peut gérer plusieurs environnements ou clés
la source
Je travaille pour une grande entreprise et j'ai rencontré la même erreur, mais j'avais besoin d'un travail différent. Mon problème était lié aux paramètres du proxy. J'avais configuré mon proxy, je devais donc définir mon no_proxy sur la liste blanche d'AWS avant de pouvoir tout faire fonctionner. Vous pouvez également le définir dans votre script bash si vous ne voulez pas brouiller votre code Python avec les paramètres du système d'exploitation.
Python:
Frapper:
Edit: Ce qui précède suppose une région US East S3. Pour les autres régions: utilisez s3. [Region] .amazonaws.com où region est quelque chose comme us-east-1 ou us-west-2
la source
no_proxy
pour169.254.169.254
que le client AWS puisse accéder au service de métadonnées pour trouver le profil d'instance.Le boto3 recherche les informations d'identification dans le dossier comme
Vous devez enregistrer deux fichiers dans ce dossier
credentials
etconfig
.Vous voudrez peut-être vérifier l'ordre général dans lequel boto3 recherche les informations d'identification dans ce lien . Regardez sous le sous-titre Configuration des informations d'identification .
la source
Si vous êtes sûr de configurer correctement votre aws, assurez-vous simplement que l'utilisateur du projet peut lire à partir de ./aws ou simplement exécuter votre projet en tant que root
la source
Si vous avez plusieurs profils de SSFE dans
~/.aws/credentials
comme ...Suivez deux étapes:
Créez-en un que vous souhaitez utiliser par défaut en utilisant la
export AWS_DEFAULT_PROFILE=Profile 1
commande dans le terminal.Assurez-vous d'exécuter la commande ci-dessus dans le même terminal à partir duquel vous utilisez boto3 ou vous ouvrez un éditeur. [Comprenez le scénario suivant]
Scénario:
t1
ett2
.t1
et vous ouvrez JupyterLab ou tout autre à partir det2
, vous obtiendrez NoCredentialsError: Impossible de localiser l' erreur d' informations d'identification .Solution:
t1
, puis ouvrez JupyterLab ou tout autre à partir du même terminalt1
.la source
Créez un objet client S3 avec vos informations d'identification
Il est toujours bon d'obtenir les informations d'identification de l'environnement OS
la source