s3 url - get seau nom et le chemin d'accès
J'ai une variable qui a le aws s3 url
s3://bucket_name/folder1/folder2/file1.json
Je veux obtenir le bucket_name dans une variables et le reste je.e /dossier1/dossier2/fichier1.json dans une autre variable. J'ai essayé les expressions régulières et pourrait obtenir la bucket_name comme ci-dessous, vous ne savez pas si il ya une meilleure façon.
m = re.search('(?<=s3:\/\/)[^\/]+', 's3://bucket_name/folder1/folder2/file1.json')
print(m.group(0))
Comment puis-je obtenir le reste je.e - dossier1/dossier2/fichier1.json ?
J'ai vérifié si il y a un boto3 fonction d'extraire l'bucket_name et de la clé à partir de l'url, mais je ne pouvais pas le trouver.
OriginalL'auteur Lijju Mathew | 2017-03-07
Vous devez vous connecter pour publier un commentaire.
Depuis qu'il est dans l'URL, vous pouvez utiliser
urlparse
obtenir de toutes les parties de l'URL.Vous pouvez avoir à supprimer le début de slash de la clé comme la réponse suivante suggère.
Avec Python 3
urlparse
déménagé àurllib.parse
donc de l'utiliser:Mais attention si votre nom de fichier contient un
#
, dans ce cas,o.path
ne contiennent pas la totalité de la clé.urlparse('s3://bucket_name/file #2.json').path == '/file '
OriginalL'auteur kichik
Pour ceux qui comme moi a été d'essayer d'utiliser urlparse pour extraire la clé et un seau afin de créer l'objet avec boto3. Il y a un détail important: supprimer la barre oblique depuis le début de la clé
Il a fallu un certain temps pour réaliser que parce que boto3 ne lance pas d'exception.
lstrip
deux fois si, une fois lors de l'affectation àkey
et de nouveau lors du passage dekey
à laput_object
méthode. Il n'a probablement pas d'importance, à moins que vos clés ont consécutive de deux barres obliques. C'est sans doute possible avec s3 noms d'objet.merci @Davos! retiré supplémentaire lstrip
la clé est de l'o.chemin d'accès, il n'est pas inclus dans la réponse d'origine.
Merci @RicardoMayerhofer! Fixe.
OriginalL'auteur Mikhail Sirotenko
Une solution qui fonctionne sans urllib ou re (également des poignées de barre oblique):
À exécuter:
Retourne:
OriginalL'auteur mikeviescas
Si vous voulez le faire avec des expressions régulières, vous pouvez effectuer les opérations suivantes:
Ceci a l'avantage que vous pouvez vérifier pour la
s3
système plutôt que de laisser quoi que ce soit là.OriginalL'auteur Alec Hewitt