有没有办法从 AWS S3 “npm install”?

Posted

技术标签:

【中文标题】有没有办法从 AWS S3 “npm install”?【英文标题】:Is there a way to "npm install" from AWS S3? 【发布时间】:2018-12-27 15:12:14 【问题描述】:

有没有办法在 AWS S3 上存储项目/模块并从客户端项目中执行npm install

我在 npm 文档 [Go] 中找到了一种从 BitBucket 执行 npm install 的方法

我正在尝试寻找不同的方式来存储通用项目项(即方法或其他资源)以跨微服务使用。

【问题讨论】:

我使用了npmjs.org 的私人订阅并使用了私人存储库。您只需要一个用户,然后可以为需要访问的用户(包括 CI)创建私有只读密钥 如果您想在 AWS 中拥有包存储库,您现在可以只使用 AWS CodeArtifact aws.amazon.com/codeartifact。 【参考方案1】:

根据文档,您应该能够从任何解析为 gzip 压缩包的 url 安装包。

因此,如果您使用云端公开您的存储桶内容,它应该可以工作。

一个包是:

a) 包含由 package.json 文件描述的程序的文件夹 b) 包含 (a) 的 gzip 压缩包 c) 解析为 (b) 的 url d) 使用 (c) 在注册表中发布的 @ e) 一个指向 (d) 的 @ f) 具有满足 (e) 的“最新”标签的 a g) 一个 git url,在克隆时会导致 (a)。

文档:https://docs.npmjs.com/about-packages-and-modules#about-packages

【讨论】:

这并不完全正确,因为docs.npmjs.com/cli/install 还指出要使用 URI“参数必须以“http://”或“https://”开头。这意味着没有 s3:// URI 是可接受的。S3 的 https:// 可能会导致授权问题。 @RafałWrzeszcz 见How do I use CloudFront to serve HTTPS requests for my Amazon S3 bucket? 我并不是说这是来自 S3 的服务 HTTPS 内容的问题 - 我是说这是授权的问题。关键是让它成为一个私有存储库,而不是让所有包都公开可用。 您可能可以使用签名 URL 来保护通过 HTTPS 对模块的访问

以上是关于有没有办法从 AWS S3 “npm install”?的主要内容,如果未能解决你的问题,请参考以下文章

在运行 AWS Glue ETL 作业并命名输出文件名时,有没有办法从 S3 存储桶中读取文件名。 pyspark 是不是提供了一种方法来做到这一点?

使用 AWS CLI 从 S3 获取最后修改的对象

AWS Glue,加载到框架之前的数据过滤,命名 s3 对象

有没有办法在 AWS S3 上托管一个静态网站而不提供公共访问权限?

有没有办法真实地建模或估计 AWS 的使用情况?

AWS S3 SDK:如何从多文件上载中的进度回调中获取文件名?