#web-services #nitro #enclave #aws #aws-cli #networking

bin+lib nitrogen

Nitrogen 是一款用于将 Web 服务部署到 AWS Nitro Enclaves 的工具

6 个版本

0.2.5 2022年12月8日
0.2.4 2022年11月15日
0.1.0 2019年8月12日

#231硬件支持

Apache-2.0

43KB
1K SLoC

Nitrogen logo

Nitrogen CLI

Discord

Nitrogen 是一款用于将 Web 服务部署到 AWS Nitro Enclaves 的工具。给定一个 dockerfile 和一个 ssh 密钥,Nitrogen 将启动一个 EC2,配置网络,并构建和部署您的 Web 服务。您将获得一个可用的主机名。Nitrogen 是完全开源的,并且包含用于部署 Nginx、Redis 和 MongoDB 等流行服务的预构建脚本。

安装

以下是如何安装 Nitrogen

对于 Linux 或 Mac

$ curl -fsSL https://raw.githubusercontent.com/capeprivacy/nitrogen/main/install.sh | sh

对于 Windows PowerShell

$ iex (irm https://raw.githubusercontent.com/capeprivacy/nitrogen/main/install.ps1)

注意:需要 AWS 账户。如果您已配置 AWS cli,则可以使用 cat ~/.aws/credentials 获取凭证。如果您使用 MFA,请参阅 故障排除

export AWS_ACCESS_KEY_ID=<YOUR ACCESS KEY>
export AWS_SECRET_ACCESS_KEY=<YOUR SECRET>

命令

  • nitrogen setup<stack_name> <ssh_public_key>
  • nitrogen build<dockerfile_directory>
  • nitrogen deploy<stack_name> <ssh_private_key>
  • nitrogen logs<stack_name> <ssh_private_key>
  • nitrogen delete<stack_name>

功能

  • 启动任何受支持的 Enclave EC2 实例类型(启用 Nitro Enclaves)
  • 为指定端口创建安全组。
  • 设置 SSH。
  • 从公共互联网(TCP)运行一个 socat 代理到 nitro enclaves(VSOCK)。
  • 将任何 Dockerfile 构建为 Enclave Image File(EIF)。
  • 部署任何 EIF 并启动 nitro enclaves。

示例

Nginx 示例

$ nitrogen setup nitrogen-test ~/.ssh/id_rsa.pub --instance-type m5n.16xlarge
>  INFO nitrogen: Spinning up enclave instance 'nitrogen-test'.
>  INFO nitrogen::commands::setup: Successfully created enclave instance. stack_id="arn:aws:cloudformation:us-east-1:657861442343:stack/nitrogen-test/c93c7c80-5581-11ed-8a2b-0e2f3ffeccf1"
>  INFO nitrogen: User enclave information: name="nitrogen-test" instance_id="i-07daa284594ff02bc" public_ip="44.197.181.14" availability_zone="us-east-1b" public_dns="ec2-44-197-181-14.compute-1.amazonaws.com"
$ nitrogen build examples/nginx/
> Filename: nitrogen.eif
$ nitrogen deploy nitrogen-test ~/.ssh/id_rsa
> EIF is now running public_dns="ec2-1-234-56-789.compute-1.amazonaws.com:5000"
$ curl http://ec2-1-234-56-789.compute-1.amazonaws.com:5000/
> <!DOCTYPE html>
<html>
    <head>
        <title>Hello Nitrogen!</title>
    </head>
</html>

Nginx TLS 示例

请参阅 此处

故障排除

如果您有权限问题,并且您的 aws 账户已启用 MFA,则在运行 setup 之前尝试使用会话令牌。

aws sts get-session-token --serial-number arn:aws:iam::<AWS ACCOUNT NUMBER>:mfa/<USER NAME> --token-code <CODE>

导出上述命令打印的值

export AWS_ACCESS_KEY_ID=
export AWS_SECRET_ACCESS_KEY=
export AWS_SESSION_TOKEN=

您还可以在这个库中使用名为 sts.sh 的辅助脚本。警告:这将取消您在 shell 中已设置的任何与认证相关的 AWS 环境变量。

. sts.sh <ACCOUNT> <USER NAME> <CODE>

如果您希望以调试模式部署 enclave,请在部署时使用 “--debug-mode” 标志。然后您可以登录到实例并查看 enclave 控制台,或者使用 nitrogen logs 命令。

贡献者

感谢 @kalebpacenitrogen crate 贡献了名称。

依赖项

~29–42MB
~689K SLoC