#enclave #nitro #aws #web-services

bin+lib nitrogen-lib

氮素是一个用于将网络服务部署到 AWS Nitro Enclaves 的工具

1 个不稳定版本

0.2.1 2022年11月2日

#954硬件支持

Apache-2.0

36KB
849

Nitrogen logo

氮素 CLI

Discord

氮素是一个将网络服务部署到 AWS Nitro Enclaves 的工具。给定一个 Dockerfile 和一个 SSH 密钥,氮素将启动一个 EC2 实例,配置网络,并构建和部署您的网络服务。您将获得一个可用的主机名。氮素是完全开源的,并包含预构建的脚本来部署流行的服务,如 Nginx、Redis 和 MongoDB。

安装

使用以下命令安装氮素

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

注意:需要 AWS 账户。如果您已配置 AWS CLI,可以使用 以下命令 获取您的凭据:cat ~/.aws/credentials。有关 AWS 账户使用 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 delete<stack_name>

功能

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

示例

$ 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
> Listening: ec2-1-234-56-789.compute-1.amazonaws.com:5000
$ curl http://ec2-1-234-56-789.compute-1.amazonaws.com:5000/
> Hello World

故障排除

如果您有权限问题,并且您的 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>

依赖项

~29–42MB
~674K SLoC