AWS开发过程中常用到的2个CLI工具,大概的安装使用,这里备忘一下;

首先SAM,最重要的功能应该就是,结合Docker提供本地开发调试的环境,当然也不止于此,可以说,从代码雏形的获得,到本地调试,到部署,提供一整套的开发辅助功能。

然后是AWS,这个应该是提供所有AWS服务的CLI接口,个人理解,理论上这个命令可以实现从创建某个服务到使用调用的几乎所有AWS功能(比如建表 CRUD表,SQS 建立 发送消息接收消息,复制文件到S3 etc ),配合SAM,进一步实现开发的便利化

一,安装

安装 SAM

从网页下载:https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/install-sam-cli.html 
unzip aws-sam-cli-linux-x86_64.zip -d sam-installation
sudo ./sam-installation/install
sam --version

安装AWS

curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
aws --version

参考站点:

SAM CLI:https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/install-sam-cli.html

AWS CLI:https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html

一般一个完整的开发环境还需要

1,Docker,具体安装方法略

!装完一般需要sudo执行,因为和当前用户不是一个组,加入 Docker组

sudo adduser {USER-NAME-HERE} {GROUP-NAME-HERE}

几个有用的Docker 模拟AWS本地服务

docker run --name alpine-sqs -p 9324:9324 -p 9325:9325 -d roribio16/alpine-sqs:latest   //本地SQS
docker run -p 8000:8000 amazon/dynamodb-local  //本地DynamoDB

2,MSC的AWSToolkit扩展;从插件安装;略

二,SAM命令

参考:https://docs.aws.amazon.com/zh_cn/serverless-application-model/latest/developerguide/

//初期化项目,可以一步一步选择项目雏形下载,应该近似于CodeStar控制台手动创建项目,然后从CodeCommit下载代码
sam init 
// 本地生成Lambda 事件JSON
sam local generate-event apigateway aws-proxy --body "" --path "" --method GET > ./events/my-custom-event.json   
// 单个函数本地单步Debug (配合VSC Launch.json 参考下面附注)
sam local invoke getAllItemsFunction -e ./events/event-get-all-items.json -d 5858
sam local invoke getByIdFunction -e ./events/event-get-by-id.json -d 5858
sam local invoke putItemFunction -e ./events/event-post-item.json -d 5858

sam local invoke getAllItemsFunction -d 5858
sam local start-api     // 启动本地API
sam 本地 start-lambda   // 启动本地Lambda

//编译 
sam build  
//部署
sam deploy 
sam deploy --guided                             //带向导部署
sam deploy --config-file opt/samconfig.toml     //使用配置文件部署
sam deploy -t opt/Template.yml                  //使用部署文件部署(创建资源)
//其他有用命令
sam log
sam package
sam 管道引导
sam 管道 init
sam publish
sam 同步
sam trace
sam validate

附注:VSC的Launch.json

参考站点:https://docs.aws.amazon.com/cloud9/latest/user-guide/sam-debug-config-ref.html

    {
        "version": "0.2.0",
        "configurations": [
            {
                "type": "aws-sam",
                "request": "direct-invoke",
                "name": "Test getAllItemsFunction",
                "invokeTarget": {
                    "target": "template",
                    "templatePath": "./template.yaml",
                    "logicalId": "getAllItemsFunction",
                },
                "lambda":{
                    "payload": {
                        "path": "./events/event-get-all-items.json"
                    }
                }

            }
        ]
    }

三,AWS 有用的命令

参考:https://docs.aws.amazon.com/zh_cn/cli/latest/userguide/

 // 远程多少表
aws dynamodb list-tables   
// 本地节点多少表
aws dynamodb list-tables --endpoint-url http://localhost:8008 
aws dynamodb help           //获取帮助 有关表的其他操作略 

// 创建消息队列 "http://localhost:9324/queue/newqueue"
aws --endpoint-url http://localhost:9324 sqs create-queue --queue-name newqueue

// 发送消息给本地消息队列
aws --endpoint-url http://localhost:9324 sqs send-message --queue-url http://localhost:9324/queue/newqueue --message-body "Hello, queue!"

// 复制资源到S3,并赋权(Angualr vue等编译好部署到S3静态站点很有用)
aws s3 cp --recursive dist/ s3://demo-vue-web-01/ --grants read=uri=http://acs.amazonaws.com/groups/global/AllUsers
    存储桶拥有者(您的 AWS 账户)
    个人识别 uuid
    所有人(公有访问权限)
    http://acs.amazonaws.com/groups/global/AllUsers
    经身份验证的用户组(拥有 AWS 账户的任何人)
    http://acs.amazonaws.com/groups/global/AuthenticatedUsers
最后修改日期: 2022年12月15日

作者