如何使用AWS CDK将efs安装并安装到我的EC2实例上

发布于 2025-01-23 15:44:46 字数 1149 浏览 1 评论 0 原文

我想使用AWS CDK自动将 efs 安装到我的 ec2实例

我创建了文件系统:

        self.file_system = efs.FileSystem(
            scope=self,
            id="Efs",
            vpc=self.vpc,
            file_system_name="EFS",
            removal_policy=RemovalPolicy.DESTROY,
        )

EC2实例:

        self.ec2_instance = ec2.Instance(
            scope=self,
            id="ec2Instance",
            instance_name="my_ec2_instance",
            instance_type=ec2.InstanceType.of(
                instance_class=ec2.InstanceClass.BURSTABLE2,
                instance_size=ec2.InstanceSize.MICRO,
            ),
            machine_image=ec2.AmazonLinuxImage(
                generation=ec2.AmazonLinuxGeneration.AMAZON_LINUX_2
            ),
            vpc=self.vpc,
            vpc_subnets=ec2.SubnetSelection(subnet_type=ec2.SubnetType.PUBLIC),
            key_name="ec2-key-pair",
            security_group=ec2_security_group,
        )

现在我需要做什么才能使它们附加?我看到了许多在控制台上这样做的例子,但是到目前为止,我还没有找到AWS CDK中的方法。

I'd like to automatically mount an EFS to my EC2 instance using AWS CDK.

I created the file system:

        self.file_system = efs.FileSystem(
            scope=self,
            id="Efs",
            vpc=self.vpc,
            file_system_name="EFS",
            removal_policy=RemovalPolicy.DESTROY,
        )

and the Ec2 instance:

        self.ec2_instance = ec2.Instance(
            scope=self,
            id="ec2Instance",
            instance_name="my_ec2_instance",
            instance_type=ec2.InstanceType.of(
                instance_class=ec2.InstanceClass.BURSTABLE2,
                instance_size=ec2.InstanceSize.MICRO,
            ),
            machine_image=ec2.AmazonLinuxImage(
                generation=ec2.AmazonLinuxGeneration.AMAZON_LINUX_2
            ),
            vpc=self.vpc,
            vpc_subnets=ec2.SubnetSelection(subnet_type=ec2.SubnetType.PUBLIC),
            key_name="ec2-key-pair",
            security_group=ec2_security_group,
        )

Now what do I need to do to get them attached? I see many examples of doing this on the console, but so far I haven't found a way to do it in AWS CDK.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

自由范儿 2025-01-30 15:44:47

在创建EFS和EC2之后,您可以在创建的EFS上调用Connect:

file_system.connections.allow_default_port_from(instance)

在您的情况下:

self.file_system.connections.allow_default_port_from(self.ec2_instance)

这是文档:

如果您需要在启动过程中安装它,则可以通过EC2:

file_system.connections.allow_default_port_from(instance)

instance.user_data.add_commands("yum check-update -y", "yum upgrade -y", "yum install -y amazon-efs-utils", "yum install -y nfs-utils", "file_system_id_1=" + file_system.file_system_id, "efs_mount_point_1=/mnt/efs/fs1", "mkdir -p "${efs_mount_point_1}"", "test -f "/sbin/mount.efs" && echo "${file_system_id_1}:/ ${efs_mount_point_1} efs defaults,_netdev" >> /etc/fstab || " + "echo "${file_system_id_1}.efs." + Stack.of(self).region + ".amazonaws.com:/ ${efs_mount_point_1} nfs4 nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport,_netdev 0 0" >> /etc/fstab", "mount -a -t efs,nfs4 defaults")

DocumbAion的用户数据执行代码:
https://docs.aws.amazon.com/cdk/api/v1/python/aws_cdk.aws_efs_efs/readme.html#mountwile.html#mounting-the-phile-the-file-system-sy-sy-sy-sy-usis-usis-usis-usis-usis-usis-user-user-data

You can just call connect on your created EFS after you created both EFS and EC2:

file_system.connections.allow_default_port_from(instance)

In your case:

self.file_system.connections.allow_default_port_from(self.ec2_instance)

Here is the documentation:
https://docs.aws.amazon.com/cdk/api/v1/python/aws_cdk.aws_efs/README.html#connecting

If you need to mount it during launch, you can execute code via the user data of ec2:

file_system.connections.allow_default_port_from(instance)

instance.user_data.add_commands("yum check-update -y", "yum upgrade -y", "yum install -y amazon-efs-utils", "yum install -y nfs-utils", "file_system_id_1=" + file_system.file_system_id, "efs_mount_point_1=/mnt/efs/fs1", "mkdir -p "${efs_mount_point_1}"", "test -f "/sbin/mount.efs" && echo "${file_system_id_1}:/ ${efs_mount_point_1} efs defaults,_netdev" >> /etc/fstab || " + "echo "${file_system_id_1}.efs." + Stack.of(self).region + ".amazonaws.com:/ ${efs_mount_point_1} nfs4 nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport,_netdev 0 0" >> /etc/fstab", "mount -a -t efs,nfs4 defaults")

Documentaion pieces here:
https://docs.aws.amazon.com/cdk/api/v1/python/aws_cdk.aws_efs/README.html#mounting-the-file-system-using-user-data

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文