Где я должен сохранить учетные данные gcloud с помощью django

#django #api #django-rest-framework #google-cloud-storage #credentials

#django #API #django-rest-framework #google-облачное хранилище #учетные данные

Вопрос:

Я хочу создать простой API, который предоставляет уникальную конечную точку для запроса POST, который принимает json в качестве параметра и загружает этот json в корзину в хранилище Google.

Для выполнения этой работы я использую Django framework.

Я хотел бы понять лучшие практики и шаблоны о том, как я должен структурировать свое приложение api для этого, и где я должен хранить учетные данные gcloud. (Кстати, я открыт для предложений по другим (лучшим) способам / технологиям / фреймворкам / шаблонам для создания такого API)

На данный момент я использую пакет google.cloud и размещаю все данные наapps.py файл ;

 class ApiConfig(AppConfig):

    storage_client = storage.Client.from_service_account_json('credentials.json')
    bucket = storage_client.get_bucket('bucket_name')
  

затем в views.py файл, я выполняю определение функции post, используя корзину, определенную в apps.py файл.

 class upload_to_bucket(APIView):
    def post(self, request):
        if request.method == 'POST':
            json_file = json.loads(request.body)
            blob = ApiConfig.bucket.blob(json_file['name'])
            blob.upload_from_string(
              data=json.dumps(json_file['json_file_to_upload']),
              content_type='application/json'
            )

            return Response(json_file['json_file_to_upload'])
  

Спасибо, что помогли мне

Комментарии:

1. Где вы размещаете свой API?

2. На облачном сервере Google

Ответ №1:

Вы могли бы использовать Secrets Manager для хранения учетных данных, но в остальном я не вижу проблемы.

Ответ №2:

Если вы размещаете свое приложение, вам не нужен файл ключа учетной записи службы. Вы можете использовать ADC (учетные данные приложения по умолчанию).

В python и для storage API вы можете использовать это, как описано в документации

 storage_client = storage.Client()
  

Таким образом, вам не нужна учетная запись службы. В local выполните gcloud auth application-default login , чтобы загрузить свои собственные учетные данные в качестве учетных данных по умолчанию и использовать тот же конструктор по умолчанию в своем коде.