Как создать файл без содержимого с помощью CloudFormation Init?

Я хочу, чтобы CloudFormation создал пустой файл.

Я попытался указать пустую строку в поле «контент» в моем файле yaml шаблона CloudFormation.

Resources:
  Instance:
    Type: AWS::EC2::Instance
    Metadata:
      AWS::CloudFormation::Init:
        config:
          files:
            /var/log/app.log:
              content: ""
              mode: '000646'

Я получаю следующую ошибку: File specified without source or content

2023-01-10 14:32:55,132 [DEBUG] Writing content to /var/log/app.log
2023-01-10 14:32:55,132 [ERROR] Error encountered during build of config: File specified without source or content
Traceback (most recent call last):
  File "/usr/lib/python3.7/site-packages/cfnbootstrap/construction.py", line 579, in run_config
    CloudFormationCarpenter(config, self._auth_config, self.strict_mode).build(worklog)
  File "/usr/lib/python3.7/site-packages/cfnbootstrap/construction.py", line 267, in build
    self._config.files, self._auth_config)
  File "/usr/lib/python3.7/site-packages/cfnbootstrap/file_tool.py", line 131, in apply
    self._write_file(f, attribs, auth_config)
  File "/usr/lib/python3.7/site-packages/cfnbootstrap/file_tool.py", line 221, in _write_file
    raise ToolError("File specified without source or content")
cfnbootstrap.construction_errors.ToolError: File specified without source or content
2023-01-10 14:32:55,137 [ERROR] -----------------------BUILD FAILED!------------------------
2023-01-10 14:32:55,137 [ERROR] Unhandled exception during build: File specified without source or content
Traceback (most recent call last):
  File "/opt/aws/bin/cfn-init", line 181, in <module>
    worklog.build(metadata, configSets, strict_mode)
  File "/usr/lib/python3.7/site-packages/cfnbootstrap/construction.py", line 137, in build
    Contractor(metadata, strict_mode).build(configSets, self)
  File "/usr/lib/python3.7/site-packages/cfnbootstrap/construction.py", line 567, in build
    self.run_config(config, worklog)
  File "/usr/lib/python3.7/site-packages/cfnbootstrap/construction.py", line 579, in run_config
    CloudFormationCarpenter(config, self._auth_config, self.strict_mode).build(worklog)
  File "/usr/lib/python3.7/site-packages/cfnbootstrap/construction.py", line 267, in build
    self._config.files, self._auth_config)
  File "/usr/lib/python3.7/site-packages/cfnbootstrap/file_tool.py", line 131, in apply
    self._write_file(f, attribs, auth_config)
  File "/usr/lib/python3.7/site-packages/cfnbootstrap/file_tool.py", line 221, in _write_file
    raise ToolError("File specified without source or content")
cfnbootstrap.construction_errors.ToolError: File specified without source or content

Я получаю ту же ошибку, если опускаю поле «контент».

Можете ли вы сказать мне, как правильно указать CloudFormation создать пустой файл?

Похоже, пустой файл не поддерживается

Paolo 10.01.2023 15:56

Не могли бы вы использовать command для создания файла? docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/…

Brian 10.01.2023 17:15
Ускорьте разработку веб-приложений Laravel с помощью этих бесплатных стартовых наборов
Ускорьте разработку веб-приложений Laravel с помощью этих бесплатных стартовых наборов
Laravel - это мощный PHP-фреймворк, используемый для создания масштабируемых и надежных веб-приложений. Одним из преимуществ Laravel является его...
Что такое двойные вопросительные знаки (??) в JavaScript?
Что такое двойные вопросительные знаки (??) в JavaScript?
Как безопасно обрабатывать неопределенные и нулевые значения в коде с помощью Nullish Coalescing
Создание ресурсов API Laravel: Советы по производительности и масштабируемости
Создание ресурсов API Laravel: Советы по производительности и масштабируемости
Создание API-ресурса Laravel может быть непростой задачей. Она требует глубокого понимания возможностей Laravel и лучших практик, чтобы обеспечить...
Как сделать компонент справочного центра с помощью TailwindCSS
Как сделать компонент справочного центра с помощью TailwindCSS
Справочный центр - это веб-сайт, где клиенты могут найти ответы на свои вопросы и решения своих проблем. Созданный для решения многих распространенных...
Асинхронная передача данных с помощью sendBeacon в JavaScript
Асинхронная передача данных с помощью sendBeacon в JavaScript
В современных веб-приложениях отправка данных из JavaScript на стороне клиента на сервер является распространенной задачей. Одним из популярных...
Как подобрать выигрышные акции с помощью анализа и визуализации на Python
Как подобрать выигрышные акции с помощью анализа и визуализации на Python
Отказ от ответственности: Эта статья предназначена только для демонстрации и не должна использоваться в качестве инвестиционного совета.
0
2
55
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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

Ответ принят как подходящий

Как указал brushtakopo, CloudFormation Init не поддерживает создание пустых файлов, поэтому единственным вариантом является использование команды.

Я просто хотел включить соответствующую команду, поскольку он не включил ее в свой ответ.

Resources:
  Instance:
    Type: AWS::EC2::Instance
    Metadata:
      AWS::CloudFormation::Init:
        config:
          commands:
            a_createLogFile:
              command: "touch /var/log/app.log"
              test: "test ! -e /var/log/app.log"
            b_chmodLogFile:
              command: "chmod 646 /var/log/app.log"
              test: "test -e /var/log/app.log"

Примечание. Команда с префиксом a_ создает файл, а команда с префиксом b_ изменяет свои права доступа. Префиксы обеспечивают выполнение первой команды перед второй командой, поскольку CloudFormation выполняет команды в алфавитном порядке.

Https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-init.html

Команды обрабатываются в алфавитном порядке по именам.

Другие вопросы по теме