我有一个main.go
package main
import (
"context"
"fmt"
"log"
model "model"
"github.com/aws/aws-lambda-go/events"
"github.com/aws/aws-lambda-go/lambda"
)
func handler(...){
}
Run Code Online (Sandbox Code Playgroud)
我尝试导入目录中的模型model,该文件被称为model.go
它只包含:
package model
type xxx struct {
xxx
}
Run Code Online (Sandbox Code Playgroud)
我尝试在 main 中导入它,但出现错误:
build: cannot load model: cannot find module providing package model
Run Code Online (Sandbox Code Playgroud) 我正在使用 SAM。以下设置有效:
Function:
Type: AWS::Serverless::Function
Properties:
CodeUri: ./code/
Runtime: go1.x
MemorySize: 64
Handler: main
Events:
TesstApi:
Type: Api
Properties:
Path: /{proxy+}
Method: any
Run Code Online (Sandbox Code Playgroud)
现在我有一个主要方法(在go中)
它看起来像这样:
package main
import (
"context"
"log"
"github.com/aws/aws-lambda-go/events"
"github.com/aws/aws-lambda-go/lambda"
ginadapter "github.com/awslabs/aws-lambda-go-api-proxy/gin"
"github.com/gin-gonic/gin"
)
var ginLambda *ginadapter.GinLambda
func Handler(ctx context.Context, req events.APIGatewayProxyRequest) (events.APIGatewayProxyResponse, error) {
if ginLambda == nil {
// stdout and stderr are sent to AWS CloudWatch Logs
log.Printf("Gin cold start")
r := gin.Default()
r.GET("/", Index)
r.GET("/test/hello", xxx)
r.GET("/test/hi", xxx)
ginLambda = ginadapter.New(r)
}
return …Run Code Online (Sandbox Code Playgroud) 我有以下两项需要存储在 dynamodb 中
艺术家有一个 ID(艺术家唯一)、姓名和性别。歌曲有 ID(歌曲唯一)、标题、流派、艺术家和评级。
我应该如何在 DynamoDB 中对此进行建模?
我在想:ID 作为主键,并有一个包含艺术家或歌曲的排序键,以便区分它们。这是一个好的选择吗?在示例中,我发现排序键有更多变化。
歌曲项目中的现场艺术家怎么样?我应该只指出艺术家的 ID 吗?
更新:我有很多常见的访问模式。我可能可以通过创建一些索引来解决它,但我仍然必须选择一个好的 PK/SK:
get songs based on title
get songs based on rating
get songs based on genre
get songs based on artist
get artist based on rating
get artist based on gender
get artist based on name
Run Code Online (Sandbox Code Playgroud)
谢谢
我编写了一个 SAM 堆栈,我可以在 AWS 上构建、打包和部署它。我也可以使用 start-local 或 invoke 来测试。现在我需要测试其他 AWS 资源。我已将这些资源添加到我的 SAM 模板中。它在 AWS 上运行良好,但我正在寻找一种在 localstack(例如本地 dynamodb)中部署我的 SAM 堆栈的方法。现在我必须使用 CLI 创建资源,然后我可以部署我的 SAM 堆栈(在这种情况下只有 lambda,API GW)。我怎样才能做到这一点?
我启动容器注册表:
docker run --name artifactory -d -p 8081:8081 -p 8082:8082 docker.bintray.io/jfrog/artifactory-jcr:latest
Run Code Online (Sandbox Code Playgroud)
我能够使用 UI 登录并创建存储库等。
现在我想使用 CLI 登录:
docker login localhost:8082
Username: admin
Password:
Run Code Online (Sandbox Code Playgroud)
来自守护程序的错误响应:获取 http://localhost:8082/v2/:收到意外的 HTTP 状态:503 服务不可用
我究竟做错了什么?当我使用本地 192.168.xx 地址(并将其添加到不安全的注册表后)时,我遇到了同样的错误。
我可以在 SAM 中生成这样的事件
sam local generate-event apigateway aws-proxy --method GET --path document --body "{"test": "1", "tests2": "2"}" > local-event.json
Run Code Online (Sandbox Code Playgroud)
但这并没有真正帮助我,因为我没有将正文发送到我的端点,而是发送如下查询参数:
localhost:3000/path?test=1&test2=2
Run Code Online (Sandbox Code Playgroud)
如何在 SAM 中生成带有查询字符串参数的事件以进行本地测试,而不是对本地 api 网关使用 curl/testing。
api amazon-web-services aws-lambda aws-api-gateway aws-sam-cli
我有一个堆栈,该堆栈取决于在另一个堆栈中导出的值(值为supertest)
我尝试如下使用
OriginAccessIdentity: !Join [ "", [ "origin-access-identity/cloudfront/", !ImportValue: !Sub "supertest-${Environment}" ] ]
Run Code Online (Sandbox Code Playgroud)
但是我在工作时遇到了语法错误(硬编码超级测试值)
OriginAccessIdentity: !Join [ "", [ "origin-access-identity/cloudfront/", "lol-dev" ] ]
Run Code Online (Sandbox Code Playgroud) 我有一个Kubernetes集群正在运行。我用了:
kubeadm init --apiserver-advertise-address=192.168.20.101 --pod-network-cidr=10.244.0.0/16
Run Code Online (Sandbox Code Playgroud)
这样很好 现在,我将其放入脚本中,并且如果集群运行不正常,我只想再次执行kubeadm init。如何检查Kubernetes集群是否运行正常?因此,如果没有,我可以重新创建集群。
aws-lambda ×2
go ×2
api ×1
artifactory ×1
aws-sam ×1
aws-sam-cli ×1
database ×1
docker ×1
go-gin ×1
kubernetes ×1
localstack ×1
modeling ×1
sam ×1
serverless ×1