簡體   English   中英

AWS-CDK:使用 InitFile 在 EC2 實例中創建文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM