[英]AWS-CDK: Using InitFile to create a file in EC2 instance
我正在嘗試使用 CDK 中的 InitFile 構造在我的 EC2 實例中創建一個文件。 下面是我用來創建我的 EC2 實例的代碼,我試圖在其中創建一個文件textfile.txt
,其中包含一個文本“歡迎”,由https://docs.aws.amazon.com/cdk/ cdk 初始化期間的api/v1/python/aws_cdk.aws_ec2/InitFile.html參考,
init_data = ec2.CloudFormationInit.from_elements(
ec2.InitFile.from_string("/home/ubuntu/textfile.txt", "welcome")
)
self.ec2_instance = ec2.Instance(self,
id='pytenv-instance',
vpc=self.vpc,
instance_type=ec2.InstanceType.of(ec2.InstanceClass.BURSTABLE2, ec2.InstanceSize.NANO),
machine_image=ec2.MachineImage.generic_linux(
{'us-east-1': 'ami-083654bd07b5da81d'}
),
key_name="demokeyyt18",
security_group=self.sg,
vpc_subnets=ec2.SubnetSelection(
subnet_type=ec2.SubnetType.PUBLIC
),
init=init_data,
)
從 EC2 配置可以看出,這里的機器映像是 Ubuntu。 出現此錯誤: Failed to receive 1 resource signal(s) within the specified duration
。 我錯過了什么嗎? 有什么輸入嗎?
更新:同樣的代碼適用於 Amazon_linux 的 EC2 機器映像,但不適用於 Ubuntu。 難道我做錯了什么?
CloudFormation init 要求實例上存在cfn-init
幫助程序腳本。 Ubuntu 不自帶,需要自己設置。
這是 AWS 指南,其中包含指向 Ubuntu 16.04/18.04/20.04 的安裝腳本的鏈接。 您需要將這些添加到實例的user_data
屬性中。 然后 cloudformation-init 將起作用。
但是,如果您只想在實例啟動時創建一個文件,則根本不必使用cfn-init
- 您可以直接將創建文件的命令提供給user_data
屬性:
self.ec2_instance.user_data.add_commands("echo welcome > /home/ubuntu/textfile.txt")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.