La lecture d'un fichier JSON à partir de S3 à l'aide de Python boto3
J'ai gardé la suite de JSON dans le compartiment S3 'test'
{
'Details' : "Something"
}
Je suis à l'aide de code suivant pour lire ce format JSON et l'impression de la touche 'Détails'
s3 = boto3.resource('s3',
aws_access_key_id=<access_key>,
aws_secret_access_key=<secret_key>
)
content_object = s3.Object('test', 'sample_json.txt')
file_content = content_object.get()['Body'].read().decode('utf-8')
json_content = json.loads(repr(file_content))
print(json_content['Details'])
Et j'obtiens l'erreur comme chaîne des indices doivent être des entiers'
Je ne veux pas télécharger le fichier à partir de S3 et puis la lecture..
Supprimer la
Au départ, j'ai essayé en enlevant
J'ai résolu le problème.. JSON doit avoir des attributs entre guillemets.. je me change le format json
Qui ligne avez-vous une erreur? Diviser cette ligne.
repr
.Au départ, j'ai essayé en enlevant
repr
, mais il n'a pas de travail, c'est de donner à des ValueError: Attend de propriété de nom entre guillemetsJ'ai résolu le problème.. JSON doit avoir des attributs entre guillemets.. je me change le format json
Qui ligne avez-vous une erreur? Diviser cette ligne.
file_content = content_object...
est de 4 étapes en une seule ligne. Pour l'instant, la diviser en 4 lignes distinctes avec 4 variables intermédiaires. Alors voyez la ligne échoue.OriginalL'auteur Nanju | 2016-12-06
Vous devez vous connecter pour publier un commentaire.
Comme mentionné dans les commentaires ci-dessus,
repr
doit être enlevé et lajson
fichier a utiliser guillemets pour les attributs. L'utilisation de ce fichier sur aws/s3:et suivants du code Python, il fonctionne:
s3.Object('bucketName', 'keyName')
donc un exemple pour récupérer le fichiers3://foobarBucketName/folderA/folderB/myFile.json
seraits3.Object('foobarBucketName', 'folderA/folderB/myFile.json')
OriginalL'auteur bastelflp
La suite travaillé pour moi.
Pour les meilleures pratiques, il n'est pas une bonne idée de coder en dur les AWS Id & Secret des Clés directement. Vous pouvez lire vos informations d'identification AWS à partir d'un fichier json stockées dans votre local de stockage comme indiqué ci-dessous:
OriginalL'auteur Hafizur Rahman
J'ai été coincé pendant un peu comme le décodage n'a pas de travail pour moi (s3 objets sont au format gzip).
Trouvé cette discussion qui m'a aidé:
Python gzip: est-il un moyen pour décompresser d'une chaîne de caractères?
Si youprint jsonData, vous verrez votre choix fichier JSON! Si vous exécutez le test dans AWS elle-même, assurez-vous de vérifier CloudWatch logs que dans lambda il l'habitude de la sortie complète du fichier JSON si c'est trop long.
OriginalL'auteur Cerberussian