Не удалось выполнить команду Django collectStatic при развертывании в ElasticBeastalk с помощью S3

#django #amazon-web-services #amazon-s3 #amazon-elastic-beanstalk #django-staticfiles

#django #amazon-web-services #amazon-s3 #amazon-elastic-beanstalk #django-staticfiles

Вопрос:

Я пытаюсь изменить свое приложение Django, чтобы использовать S3 для статического и мультимедийного хранения. Он работает без проблем на локальной машине, и я могу запустить «collectstatic» локально.

Когда я развертываюсь в экземпляре Elastic Beanstalk, я получаю эту ошибку:

 ERROR Instance deployment failed. For details, see 'eb-engine.log'. INFO Command execution completed on all instances. Summary: [Successful: 0, Failed: 1]. ERROR Failed to deploy application.  

В eb-engine.log:

 [ERROR] An error occurred during execution of command [app-deploy] - [PostBuildEbExtension]. Stop running the command. Error: container commands build failed. Please refer to /var/log/cfn-init.log for more details.   

В cfn-init.log

 [INFO] -----------------------Starting build----------------------- [INFO] Running configSets: Infra-EmbeddedPostBuild [INFO] Running configSet Infra-EmbeddedPostBuild [INFO] Running config postbuild_0_LocalEyes_WebApp [ERROR] Command 00_collectstatic (source /var/app/venv/*/bin/activate amp;amp; python3 manage.py collectstatic --noinput) failed [ERROR] Error encountered during build of postbuild_0_LocalEyes_WebApp: Command 00_collectstatic failed Traceback (most recent call last):  File "/usr/lib/python3.7/site-packages/cfnbootstrap/construction.py", line 573, in run_config  CloudFormationCarpenter(config, self._auth_config).build(worklog)  File "/usr/lib/python3.7/site-packages/cfnbootstrap/construction.py", line 273, in build  self._config.commands)  File "/usr/lib/python3.7/site-packages/cfnbootstrap/command_tool.py", line 127, in apply  raise ToolError(u"Command %s failed" % name) cfnbootstrap.construction_errors.ToolError: Command 00_collectstatic failed [ERROR] -----------------------BUILD FAILED!------------------------ [ERROR] Unhandled exception during build: Command 00_collectstatic failed Traceback (most recent call last):  File "/opt/aws/bin/cfn-init", line 176, in lt;modulegt;  worklog.build(metadata, configSets)  File "/usr/lib/python3.7/site-packages/cfnbootstrap/construction.py", line 135, in build  Contractor(metadata).build(configSets, self)  File "/usr/lib/python3.7/site-packages/cfnbootstrap/construction.py", line 561, in build  self.run_config(config, worklog)  File "/usr/lib/python3.7/site-packages/cfnbootstrap/construction.py", line 573, in run_config  CloudFormationCarpenter(config, self._auth_config).build(worklog)  File "/usr/lib/python3.7/site-packages/cfnbootstrap/construction.py", line 273, in build  self._config.commands)  File "/usr/lib/python3.7/site-packages/cfnbootstrap/command_tool.py", line 127, in apply  raise ToolError(u"Command %s failed" % name) cfnbootstrap.construction_errors.ToolError: Command 00_collectstatic failed  

Похоже, в моей статической команде collect произошла ошибка. Я пробовал разные способы его написания и путался в своих settings.py файл, но я не могу понять, что вызывает эту ошибку.

Любая помощь или совет будут очень признательны!

Мой файл django.config:

 container_commands:  00_collectstatic:  command: "source /var/app/venv/*/bin/activate amp;amp; python3 manage.py collectstatic --noinput"  01_migrate:  command: "source /var/app/venv/*/bin/activate amp;amp; python3 manage.py migrate"   leader_only: true   option_settings:  aws:elasticbeanstalk:container:python:  WSGIPath: my_project.wsgi:application  aws:elasticbeanstalk:application:environment:  DJANGO_SETTINGS_MODULE: my_project.settings  IS_AWS: true  AWS_ACCESS_KEY_ID: lt;KEYIDgt;  AWS_SECRET_ACCESS_KEY: lt;ACCESSKEYgt;  USE_S3: TRUE  

Relevant settings.py code:

 USE_S3 = os.getenv('USE_S3') == 'TRUE' if USE_S3:  # aws settings  AWS_STORAGE_BUCKET_NAME = "my-djangobucket"  AWS_ACCESS_KEY_ID = os.getenv('AWS_ACCESS_KEY_ID')  AWS_SECRET_ACCESS_KEY = os.getenv('AWS_SECRET_ACCESS_KEY')  AWS_DEFAULT_ACL = None  AWS_S3_CUSTOM_DOMAIN = f'{AWS_STORAGE_BUCKET_NAME}.s3.amazonaws.com'  AWS_S3_OBJECT_PARAMETERS = {'CacheControl': 'max-age=86400'}  AWS_S3_REGION_NAME = 'us-west-2'  # s3 static settings  STATIC_LOCATION = 'static'  STATIC_URL = f'https://{AWS_S3_CUSTOM_DOMAIN}/{STATIC_LOCATION}/'  STATICFILES_STORAGE = 'my_project.storage_backends.StaticStorage'  # s3 public media settings  PUBLIC_MEDIA_LOCATION = 'media'  MEDIA_URL = f'https://{AWS_S3_CUSTOM_DOMAIN}/{PUBLIC_MEDIA_LOCATION}/'  DEFAULT_FILE_STORAGE = 'my_project.storage_backends.PublicMediaStorage' else:  STATIC_URL = '/static/'  STATIC_ROOT = os.path.join(BASE_DIR, 'static')  MEDIA_URL = '/media/'  MEDIA_ROOT = os.path.join(BASE_DIR, 'media') STATICFILES_DIRS = (os.path.join(BASE_DIR, 'static'),)