Partage
  • Partager sur Facebook
  • Partager sur Twitter

Upload un fichier avec boto3 sur AWS S3 (DRF)

Sujet résolu
    14 septembre 2017 à 16:42:51

    Hello !

    (oui encore moi :ange:)

    J'ai un petit soucis, j'aimerais bien pouvoir upload une image dans mon bucket aws S3.

    Quand j'essaye d'upload un fichier, j'ai ça comme erreur: (je test avec postman, ex: POST /games/1/assets (file_path=(le fichier))

    S3ResponseError: S3ResponseError: 400 Bad Request

    models.py
    class Asset(models.Model):
        game = models.ForeignKey(Game, related_name='assets', on_delete=models.CASCADE)
        file_path = models.FileField(upload_to='test', default='')
        created_at = models.DateTimeField(auto_now_add=True, blank=True, null=True)
    
        def __str__(self):
            return str(self.created_at)
    
        class Meta:
            db_table = 'Asset'

    serializers.py
    class AssetSerializer(serializers.ModelSerializer):
        class Meta:
            model = Asset
            fields = ('id', 'file_path', 'created_at')

    views.py
    class AssetList(generics.ListCreateAPIView):
        """
        API endpoint that allows users to list/create an asset of one game.
        """
    
        queryset = Asset.objects.all()
        serializer_class = AssetSerializer
        permission_classes = (IsAuthenticated,)
        parser_classes = (MultiPartParser,)
    
        def perform_create(self, serializer):
            serializer.save(game_id=self.kwargs['game_id'])
    
        def get_queryset(self):
            game = self.kwargs['game_id']
            try:
                Game.objects.get(id=game)
            except Game.DoesNotExist:
                raise Http404()
            return Asset.objects.filter(game_id=game)
    J'ai aussi bien mis dans INSTALLED_APPS storages
    Et dans un fichier local_settings.py (il est bien include dans dans mon fichier settings.py)
    AWS_ACCESS_KEY_ID = "key-id"
    AWS_SECRET_ACCESS_KEY = "secret-access-key"
    AWS_STORAGE_BUCKET_NAME = "bucket-name"
    Donc si vous avez une solution pour moi :) je vous remercie d'avance !
    EDIT:
    Il fallait rajouter la ligne:
    AWS_S3_HOST = 's3.eu-central-1.amazonaws.com'

    -
    Edité par rafikikiki 14 septembre 2017 à 17:44:07

    • Partager sur Facebook
    • Partager sur Twitter

    Upload un fichier avec boto3 sur AWS S3 (DRF)

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown