#typescript #amazon-web-services #aws-cdk
#typescript #amazon-web-services #aws-cdk
Вопрос:
Я знаю, как использовать Here docs для запуска сценариев на недавно запущенном экземпляре, таком как
instance.addUserData(
bash << EOF
#!/usr/bin/bash
...
EOF,
);
но я не хочу делать это для файлов конфигурации, поскольку они управляются git.
Итак, как мне включить текстовые файлы во вновь запущенный экземпляр? Amazon, похоже, хочет, чтобы вы использовали S3 в соответствии с приведенной здесь документацией по ресурсамhttps://docs.aws.amazon.com/cdk/latest/guide/assets.html но я думаю, что в родном CDK должен быть способ сделать это, я просто не могу найти его в документах API.
Ответ №1:
Конструкция Ec2 имеет параметр инициализации, который вы можете использовать, как описано здесь
Для этого вам необходимо использовать как класс CloudFormationInit, так и класс InitFile.
Это позволит вам предоставлять файлы во время запуска вашего экземпляра из нескольких источников. Для того, чтобы вместить размер вашего шаблона, рекомендуется хранить ресурсы в корзине S3, если файл слишком большой.
Собрав все это вместе, вы должны записать что-то вроде этого:
// prepare the file as an s3 asset
const s3Asset = new Asset(this, 'SampleSingleFileAsset', {
path: './local/path/tofile/file.extension',
});
// prepare the file as an asset and put it in the cfinit
const initData = CloudFormationInit.fromElements(
InitFile.fromExistingAsset('/destination/path/filename.extension', s3Asset, {})
);
// create the EC2 Instance with the initData parameter
const ec2Instance = new Instance(this, 'ec2-instance', {
//other parameters...
init: initData
});