AWS后端部署

时间:2020-05-22 11:19:55

标签: reactjs amazon-web-services express aws-amplify

我在Amplify上部署了一个React App。现在,我开发了一个与React前端进行通信的快速后端。

现在,我想知道是否有一种方法可以使用amplify将后端与AWS上的react应用程序托管在同一项目中。因此,可以托管整个Fullstack App。 我已经阅读了很多有关使用amplify托管后端的内容。但是从文档看来,我只能使用aws通过Amplify CLI提供的后端服务,而不能使用我自己的快速后端。

有人有使用Amplify托管自己的快速后端的经验吗?

由于我对云托管根本没有太多经验,因此我非常感谢您的帮助:)

德国最诚挚的问候 扬

1 个答案:

答案 0 :(得分:0)

通常,在Amplify上,您将AppSync用作后端。 这样一来,您就可以在Amplify上获得全部筹码

使用API​​,您可以轻松添加API的基本操作,并使用lambda来自定义更具体的操作。

但是,如果您仍然需要托管自己的主机,则可以为后端添加一个lambda函数,请检查this article有关在lambda上运行ExpressJS的信息。

如果通过Amplify-CLIamplify function add)添加它,则可以在Amplify Console上看到它,包括日志和有关它的其他详细信息。

我将在下面详细介绍这两种情况:

通过AppSync自定义操作

如果您决定将DynamoDB / AppSync与GraphQL接口一起使用,则可以在GraphQL架构上定义自定义操作。

即:

  • 创建lambda函数MyCustomOperation
  • 定义所需的操作,输入和返回操作(可以使用Javascript)
  • 在您的GraphQL模式上,使用@function指令将函数与所需查询关联
type Query {
   myCustomQuery(input: String): String @function(name: "MyCustomOperation-${env}")
}

查看更多详细信息here

Express Backend

如果您需要完整的后端

要将其添加到您的Amplify项目中,您可以创建一个lambda函数 amplify function add并选择模板Serverless express function (Integration with Amazon API Gateway)documentation具有更多详细信息。 它将提供您的API端点,您将在下一步中提供它。

您现在可以根据提示here

在配置上手动进行设置
Amplify.configure({
    // OPTIONAL - if your API requires authentication 
    Auth: {
        // REQUIRED - Amazon Cognito Identity Pool ID
        identityPoolId: 'XX-XXXX-X:XXXXXXXX-XXXX-1234-abcd-1234567890ab',
        // REQUIRED - Amazon Cognito Region
        region: 'XX-XXXX-X', 
        // OPTIONAL - Amazon Cognito User Pool ID
        userPoolId: 'XX-XXXX-X_abcd1234', 
        // OPTIONAL - Amazon Cognito Web Client ID (26-char alphanumeric string)
        userPoolWebClientId: 'a1b2c3d4e5f6g7h8i9j0k1l2m3',
    },
    API: {
        endpoints: [
            {
                name: "MyAPIGatewayAPI",
                endpoint: "https://1234567890-abcdefgh.amazonaws.com"
            },
            {
                name: "MyCustomCloudFrontApi",
                endpoint: "https://api.my-custom-cloudfront-domain.com",

            }
        ]
    }
});

然后,您只需要使用后端已有的代码来调整lambda函数。