一种可能的解决方法是使用 AWS CLI 手动创建 Lambda 和 DynamoDB 资源,并将其与 Amplify CLI 中的 API 部署关联。以下是一些参考代码示例:
aws lambda create-function \
--function-name myFunction \
--runtime nodejs12.x \
--role arn:aws:iam::0123456789012:role/lambda-role \
--handler index.handler \
--zip-file fileb://lambda.zip
aws dynamodb create-table \
--table-name myTable \
--attribute-definitions AttributeName=id,AttributeType=S \
--key-schema AttributeName=id,KeyType=HASH \
--provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5
在 Amplify CLI 的 amplify/backend/api/myapi/lambda 目录中创建一个 .env 文件,并添加以下内容:
TableName=myTable
FunctionName=myFunction
更新 amplify/backend/api/myapi/schema.graphql 文件,以便使用 Lambda 和 DynamoDB:
type Todo @model @auth(rules: [{ allow: owner }]) {
id: ID!
name: String!
description: String
createdAt: String
updatedAt: String
}
type Query {
getTodo(id: ID!): Todo
listTodos: [Todo]
}
type Mutation {
createTodo(input: CreateTodoInput!): Todo
updateTodo(input: UpdateTodoInput!): Todo
deleteTodo(input: DeleteTodoInput!): Todo
}
type Subscription {
onCreateTodo: Todo
onUpdateTodo: Todo
onDeleteTodo: Todo
}
最后,在终端中运行 amplify push 命令,将更改部署到 AWS 中。