AWS CLI、.NET 和 Lambda 函数
欢迎来到雲闪世界。在 Windows 上使用 Visual Studio 和 AWS Explorer 绝对会让你变得懒惰。我的意思是,能够通过右键单击项目来构建和部署 Lambda 函数之类的东西真是太棒了,但有时最好了解幕后发生了什么。
尽管如此,既然我能够以类似的方式构建所有内容,我现在非常致力于切换到 Visual Studio Code。此时我主要关心的是确保在 Windows 上工作时(这仍然会发生)构建/测试/部署顺序几乎与 Debian 上完全相同。我想也许我不得不用古怪的混合脚本来做一堆像这样的愚蠢特技,但后来我想起了 WSL2!
Windows Subsystem for Linux(版本 2)是与 Windows 系统一起运行的正确 Linux 内核。在处理我们使用的某些硬件Cassia Networks X1000 蓝牙网关时,我经常使用它。在 SmartShepherd,我们经常需要在短时间内连接 500 个或更多的蓝牙 LE 设备,而使用 Android 上的蓝牙堆栈(或几乎任何东西)根本无法实现。我有一个在 Cassia 上运行的小型服务器应用程序(它们使用 Ubuntu 容器),环境托管 SSH 会话和安全副本以测试其新版本。因此,WSL2 的 Debian 安装正在发挥作用。
但是,因为它已经安装好了,所以我最好全力以赴,尝试在 BUSTER3(Acer Nitro)上复制我在 Chungus Proliant 上的 .NET 环境。
文档和安装
不分先后顺序:
.NET 3.1 说明请点击此处
AWS CLI此处
此处为AWS Lambda 模板
在本地目录中安装 .NET 3.1。我使用 wget,您可以使用 curl 或直接通过浏览器下载并将其复制到某处。
wget https://dot.net/v1/dotnet-install.sh
chmod 755 dotnet-install.sh
./dotnet-install.sh -c 3.1
一旦安装了 .NET(它将位于.dotnet主目录中的隐藏目录中,然后您可以编辑 .bashrc 以包含以下最后三行:
export PATH="
P
A
T
H
:
PATH:
PATH:HOME/.dotnet:
H
O
M
E
/
.
d
o
t
n
e
t
/
t
o
o
l
s
"
e
x
p
o
r
t
D
O
T
N
E
T
R
O
O
T
=
HOME/.dotnet/tools" export DOTNET_ROOT=
HOME/.dotnet/tools"exportDOTNETROOT=HOME/.dotnet
export DOTNET_MULTILEVEL_LOOKUP=0
不太清楚最后一个是干什么的,但是如果你在用户目录中安装了 .NET,而不是全局安装,工具似乎会要求你这样做。我更喜欢只为我自己安装它,并不是因为我的机器上有 100 个其他用户,更多的是出于习惯,因为我在大型多用户机器上做 Unix 系统管理的时候,我们总是默认在本地安装未知的东西,直到我们信任它。我当时的导师坚持要求 root 用户保持原封不动、原封不动,就像出厂时一样,这样你就不会被锁在价值数十万美元的机器之外。在像 Proliant 这样欠我 150 美元的东西上似乎有点傻,但有时候旧习难改。
安装 Amazon CLI 很简单,尽管您可能必须这样做sudo apt-get install zip unzip,但我在 Chungus 上没有这样做,但我必须在 Buster3 上这样做。
wget https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip
unzip awscliv2.zip
sudo ./aws/install
aws --version
最后,适用于 dotnet 的 AWS 工具和 dotnet lambda 模板。所有这些基本上允许您访问通常在 Visual Studio 中右键单击的内容。
dotnet new --install Amazon.Lambda.Templates::5.4.0
dotnet tool install -g Amazon.Lambda.Tools
嗯,是的,但是它有效吗?
Amazon.Lambda.Templates 用于创建新的 Lambda 函数,它们在您的 .NET 项目根目录中创建一个文件 aws-lambda-tools.defaults.json,您可以使用该文件填写 lambda 函数所在的区域、安全内容等。这里就不多说了,因为AWS 有更好的文档。
可以说它确实有效,因此(例如)如果您想将 .NET 3.1 Lambda 函数打包为准备部署的 zip 文件,您可以转到项目的根目录并执行以下操作:
dotnet lambda package
果然,它创建了 zip 文件。 dotnet lambda deploy将替换现有的 Lambda。由于我在 Chungus 和 Buster3 上同时执行了上述所有操作,因此环境尽可能接近相同,我现在可以构建和部署我的 Lambda 函数。下一站:将 Docker 部署到 ECS。
脚注
Buster3 得名的原因并不十分有趣,但我想记录下来以备后人参考。当我辞职创办 SmartShepherd 时,我回到家才意识到我实际上没有一台笔记本电脑可用来工作。工作单位提供了一台不错的 HP Spectre,但当我估算出它的价格时,我大吃一惊。它们是漂亮的机器,但对于一家苦苦挣扎的初创公司来说太贵了。我的一个孩子有一台他们用来写东西的废弃笔记本电脑,那是一台相对古老的东芝 C650,铰链坏了。它坏了,所以我叫它 BUSTER。它的规格并不令人印象深刻,但足以运行 Ti 的 Code Composer Studio,直到我们拥有 MVP。我一有几美元,就把它换成了一台新的 Acer Aspire E5-553,叫做 BUSTER2,因为为什么不呢。由于我太傻,又想买便宜货,所以没仔细看规格,它很便宜,有一块独立显卡,内存有 16GB。后来,当我需要为 Docker 做虚拟化时,才发现这个蠢东西在 BIOS 和固件中禁用了所有虚拟化!我费了好大劲才弄好固件设置,才让它正常工作。从那以后,我发誓不再使用宏碁的机器,尽管 BUSTER2 赢得了它的名字。Buster2 陪我们去了深圳,成为 HAX10 的一部分,并且大部分工作都完成了。他仍然带着那次旅行的贴纸。
BUSTER3 有点意外。我们在旅行(当然是在疫情之前),BUSTER2 让我很头疼,键盘玩起来很卡,Windows 10 Pro 几乎停滞不前。我在一家知名技术回收连锁店的橱窗里看到了一台二手 Acer Nitro 5,价格合适。尽管我已经公开宣布不再使用 Acer 机器,但配置还是很不错的,不容错过。这款电脑非常棒,如果你需要一台价格实惠但性能高的设备来进行开发工作,强烈推荐。
(从左到右)Buster、Buster3、Buster2
感谢关注雲闪世界。(Aws解决方案架构师vs开发人员&GCP解决方案架构师vs开发人员)