# @aws-cdk/aws-efs 中文文档

规范地址：https://npmcn.com/package/%40aws-cdk/aws-efs/

版本：1\.204\.0
npm 元数据更新时间：2023-11-21T10:15:11.848Z
中文译文更新时间：2026-11-07T10:43:25.897Z
软件包许可：Apache-2\.0

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40aws-cdk/aws-efs
原文对照：https://npmcn.com/package/%40aws-cdk/aws-efs/?lang=original
项目主页：https://github.com/aws/aws-cdk
源码仓库：https://github.com/aws/aws-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

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：656 kB，20 个文件
- 模块格式：CommonJS
- TypeScript 类型：包内自带
- Node.js 要求：\>= 14\.15\.0
- 运行依赖：7 个
- 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
- 首次发布：2018-07-31T13:33:20.223Z
- 最新版本发布：2023-06-19T21:06:51.746Z
- 近 30 天下载量：314067（2026-10-07 至 2026-11-05，npm 官方下载统计）
- 已发布版本数：288（近 12 个月 0 个）

## 中文简介

AWS:EFS 的 CDK 构造库

## 安装

```sh
npm install @aws-cdk/aws-efs
```

也可以使用：`pnpm add @aws-cdk/aws-efs`、`yarn add @aws-cdk/aws-efs`、`bun add @aws-cdk/aws-efs`

## README

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

* * *

![End-of-Support](https://img.shields.io/badge/End--of--Support-critical.svg?style=for-the-badge)

> AWS CDK v1在2023-06-01上达到了支持结束. 此软件包不再更新,用户应该迁移到 AWS CDK v2.
> 
> 关于如何移徙的更多信息,请参见: [_移动到 AWS CDK v2_ 指南](https://docs.aws.amazon.com/cdk/v2/guide/migrating-v2.html)。 。 。 .

* * *

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

这个模块是 [AWS 云开发套件](https://github.com/aws/aws-cdk) 项目.

## 文件系统

Amazon EFS提供弹性,共享文件存储,符合POSIX. 您创建的文件系统 支持从多个 Amazon EC2 实例同时读取和写入访问,并且可从 aWS地区的所有可提供区都是它创建的地方。 学习更多关于 [EFS 文件系统](https://docs.aws.amazon.com/efs/latest/ug/creating-using.html)

### 创建 Amazon EFS 文件系统

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

```ts
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 导入已有的文件系统 . 以下是在文件系统中给出角色写入权限的例子.

```ts
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 角色.

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

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

### 访问点

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

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

```ts
fileSystem.addAccessPoint('AccessPoint');
```

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

若为 `path` 不存在,将使用定义在 `creationInfo`。 。 。 . 见 [创建访问点](https://docs.aws.amazon.com/efs/latest/ug/create-access-point.html) 更多细节.

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

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

```ts
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已经 固定默认端口,所以不需要指定端口 :

```ts
fileSystem.connections.allowDefaultPortFrom(instance);
```

学习更多关于 [管理文件系统网络访问](https://docs.aws.amazon.com/efs/latest/ug/manage-fs-access.html)

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

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

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

```ts
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 文件系统](https://docs.aws.amazon.com/efs/latest/ug/mounting-fs.html)

### 删除

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

您可以设置一个 `removalPolicy`

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

## 常见问题

### @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。作者已将其标记为弃用，新项目建议寻找替代方案。

