@aws-cdk/aws-efs

中文文档
1.204.0发布于 2023/06/20Apache-2.0TypeScriptCommonJS近 30 天下载 31.4万

AWS:EFS 的 CDK 构造库

此软件包已被标记为弃用

AWS CDK v1 has reached End-of-Support on 2023-06-01. This package is no longer being updated, and users should migrate to AWS CDK v2. For more information on how to migrate, see https://docs.aws.amazon.com/cdk/v2/guide/migrating-v2.html

中文使用文档
文档目录7 节
  1. 文件系统
  2. 创建 Amazon EFS 文件系统
  3. 权限
  4. 访问点
  5. 连接中
  6. 使用用户数据挂载文件系统
  7. 删除

亚马逊弹性文件系统构建库


End-of-Support

AWS CDK v1在2023-06-01上达到了支持结束. 此软件包不再更新,用户应该迁移到 AWS CDK v2.

关于如何移徙的更多信息,请参见: 移动到 AWS CDK v2 指南。 。 。 .


亚马逊弹性文件系统 (Amazon EFS)提供了一种简单,可扩展的, 完全管理有弹性的NFS文件系统,用于AWS Cloud服务以及上前提资源. Amazon EFS在AWS Cloud中提供文件存储. 通过Amazon EFS,你可以创建一个文件系统, 在 Amazon EC2 实例上挂载文件系统,然后读取和写入您文件系统的数据.

这个模块是 AWS 云开发套件 项目.

文件系统

Amazon EFS提供弹性,共享文件存储,符合POSIX. 您创建的文件系统 支持从多个 Amazon EC2 实例同时读取和写入访问,并且可从 aWS地区的所有可提供区都是它创建的地方。 学习更多关于 EFS 文件系统

创建 Amazon EFS 文件系统

一个虚拟私人云(VPC)需要创建一个亚马逊EFS文件系统. 以下示例创建一个在休息时加密的文件系统, 运行于 General Purpose 性能模式,以及 Bursting 通量模式且不向不经常文件过渡 访问(IA)存储类.

const fileSystem = new efs.FileSystem(this, 'MyEfsFileSystem', {
  vpc: new ec2.Vpc(this, 'VPC'),
  lifecyclePolicy: efs.LifecyclePolicy.AFTER_14_DAYS, // files are not transitioned to infrequent access (IA) storage by default
  performanceMode: efs.PerformanceMode.GENERAL_PURPOSE, // default
  outOfInfrequentAccessPolicy: efs.OutOfInfrequentAccessPolicy.AFTER_1_ACCESS, // files are not transitioned back from (infrequent access) IA to primary storage by default
});

QQ 亚马逊 EFS 文件系统的性能模式在文件系统创建后无法被更改. 更新此属性将取代文件系统 .

堆栈外创建的任何文件系统都可以被导入到您的 CDK 应用程序中.

使用 fromFileSystemAttributes() API 导入已有的文件系统 . 以下是在文件系统中给出角色写入权限的例子.

import * as iam from '@aws-cdk/aws-iam';

const importedFileSystem = efs.FileSystem.fromFileSystemAttributes(this, 'existingFS', {
  fileSystemId: 'fs-12345678', // You can also use fileSystemArn instead of fileSystemId.
  securityGroup: ec2.SecurityGroup.fromSecurityGroupId(this, 'SG', 'sg-123456789', {
    allowAllOutbound: false,
  }),
});

权限

如果您需要授予其它资源文件系统权限, 您可以使用 .grant() API (英语). 例如,以下代码给出: elasticfilesystem:ClientWrite 允许一个 IAM 角色.

const role = new iam.Role(this, 'Role', {
  assumedBy: new iam.AnyPrincipal(),
});

fileSystem.grant(role, 'elasticfilesystem:ClientWrite');

访问点

访问点是应用操作的 EFS 文件系统中的应用程序特定视图 系统用户和组,以及文件系统路径,到通过访问提出的任何文件系统请求 点。 操作系统用户和组覆盖 NFS 提供的任何身份信息 客户端。 文件系统路径作为访问点的根目录被曝光. 使用 访问点只能访问它自己的目录和下面的数据。 要学更多,看 使用 EFS 访问点挂载文件系统。 。 。 .

使用 addAccessPoint 从文件系统创建访问点的 API .

fileSystem.addAccessPoint('AccessPoint');

默认情况下,当创建访问点时, root (/) 目录被客户端所曝光 连接接入点 。 您可以指定自定义路径 path 属性.

若为 path 不存在,将使用定义在 creationInfo。 。 。 . 见 创建访问点 更多细节.

在堆栈外创建的任何访问点都可以被导入到您的 CDK 应用程序中 .

使用 fromAccessPointAttributes() API 导入已有的访问点 .

efs.AccessPoint.fromAccessPointAttributes(this, 'ap', {
  accessPointId: 'fsap-1293c4d9832fo0912',
  fileSystem: efs.FileSystem.fromFileSystemAttributes(this, 'efs', {
    fileSystemId: 'fs-099d3e2f',
    securityGroup: ec2.SecurityGroup.fromSecurityGroupId(this, 'sg', 'sg-51530134'),
  }),
});

QQ 通知: 当导入使用访问点时 fromAccessPointAttributes()你必须确定 目标已部署,其寿命周期状态 available。否则,你可能会遇到 部署时的下列错误:

EFS 文件系统 < ARN of efs> 通过访问点 < ARN of eFS> 引用 挂载在所有可用区设定的目标,该功能将在但并非全部 处于可用的生命周期状态。 请等他们到场 再次尝试请求.

连接中

要控制谁可以访问 EFS,请使用 .connections 属性。 EFS已经 固定默认端口,所以不需要指定端口 :

fileSystem.connections.allowDefaultPortFrom(instance);

学习更多关于 管理文件系统网络访问

使用用户数据挂载文件系统

在创建文件系统后,可以创建挂载目标. 然后可以挂载文件系统 EC2 实例、容器和 Lambda 在您的虚拟私有云( VPC) 中发挥作用.

以下示例在实例启动时自动挂载文件系统 .

fileSystem.connections.allowDefaultPortFrom(instance);

instance.userData.addCommands("yum check-update -y",    // Ubuntu: apt-get -y update
  "yum upgrade -y",                                 // Ubuntu: apt-get -y upgrade
  "yum install -y amazon-efs-utils",                // Ubuntu: apt-get -y install amazon-efs-utils
  "yum install -y nfs-utils",                       // Ubuntu: apt-get -y install nfs-common
  "file_system_id_1=" + fileSystem.fileSystemId,
  "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(this).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");

学习更多关于 正在安装 EFS 文件系统

删除

由于文件系统是状态资源,因此默认情况下,文件系统不会在您 堆栈已删除.

您可以设置一个 removalPolicy

const fileSystem =  new efs.FileSystem(this, 'EfsFileSystem', {
  vpc: new ec2.Vpc(this, 'VPC'),
  removalPolicy: RemovalPolicy.DESTROY,
});

版本与发布记录

@aws-cdk/aws-efs 共发布 288 个版本,首次发布于 2018/07/31;过去 12 个月发布了 0 个版本。

版本发布日期距今
1.204.0latest2023/06/203 年前
1.203.02023/06/013 年前
1.202.02023/05/223 年前
1.201.02023/05/113 年前
1.200.02023/04/273 年前
1.199.02023/04/213 年前

关于 @aws-cdk/aws-efs 的常见问题

@aws-cdk/aws-efs 是什么?

AWS:EFS 的 CDK 构造库注意:该包已被作者标记为弃用——AWS CDK v1 has reached End-of-Support on 2023-06-01. This package is no longer being updated, and users should migrate to AWS CDK v2. For more information on how to migrate, see https://docs.aws.amazon.com/cdk/v2/guide/migrating-v2.html

如何安装 @aws-cdk/aws-efs?

在项目目录运行 npm install @aws-cdk/aws-efs,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:@aws-cdk/aws-ec2(1.204.0)、@aws-cdk/aws-iam(1.204.0)、@aws-cdk/aws-kms(1.204.0)、@aws-cdk/cloud-assembly-schema(1.204.0)、@aws-cdk/core(1.204.0)、@aws-cdk/cx-api(1.204.0)、constructs(^3.3.69)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@aws-cdk/aws-efs 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@aws-cdk/aws-efs 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@aws-cdk/aws-efs 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >= 14.15.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@aws-cdk/aws-efs 可以商用吗?

@aws-cdk/aws-efs 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@aws-cdk/aws-efs 的下载量有多少?

根据 npm 官方下载统计,@aws-cdk/aws-efs 在 2026/10/07 – 2026/11/05 这 30 天内被下载 314,067 次,日均约 10,469 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@aws-cdk/aws-efs 还在维护吗?

最新版本 1.204.0 发布于 2023/06/20(3 年前);至今共发布 288 个版本,其中过去 12 个月发布了 0 个;首次发布于 2018/07/31。作者已将其标记为弃用,新项目建议寻找替代方案。