[英]Which AWS service to use to deploy Backend?
我有一個網站(靜態坐在S3中),內容是從S3提供的。 我打算寫一個rest api(節點或開放建議)。 當前端進行有角度的$ http調用時(例如,如果我的網站名為example.com),則該調用將類似於相對URL(/ Update)之類的問題。
我不確定究竟應該使用哪種類型的AWS服務來部署后端代碼。
更新
我正在使用Codestar,正在使用Express Web服務。 這是我的template.yml。 和路線。 代碼星級構建可以正常進行,但是部署失敗。
template.yml
AWSTemplateFormatVersion: 2010-09-09
Transform:
- AWS::Serverless-2016-10-31
- AWS::CodeStar
Parameters:
ProjectId:
Type: String
Description: AWS CodeStar projectID used to associate new resources to team members
Resources:
HelloWorld:
Type: AWS::Serverless::Function
Properties:
Handler: index.handler
Runtime: nodejs4.3
Role:
Fn::ImportValue:
!Join ['-', [!Ref 'ProjectId', !Ref 'AWS::Region', 'LambdaTrustRole']]
Events:
GetEvent:
Type: Api
Properties:
Path: /
Method: get
PostEvent:
Type: Api
Properties:
Path: /
Method: post
GetItemsBylId:
Type: AWS::Serverless::Function
Properties:
Handler: index.handler
Runtime: nodejs4.3
Role:
Fn::ImportValue:
!Join ['-', [!Ref 'ProjectId', !Ref 'AWS::Region', 'LambdaTrustRole']]
Events:
GetEvent:
Type: Api
Properties:
Path: /api/getItemsBylId/:id
Method: get
這是我的app.js
var express = require('express');
var app = express();
app.get('/', function (req, res) {
res.send({
"Output": "Hello World!"
});
});
app.get('/api/GetItemsBylId/:id', function (req, res) {
res.send({
"Output": "I am up!"
});
});
這是來自GetItemsBylId的部署錯誤
Failed to set tags on AWS::Lambda::Function. IAM permissions lambda:ListTags, lambda:TagResource and lambda:UntagResource are required to tag AWS::Lambda::Function resources and to propagate stack level tags.
我很確定這是因為id參數。
更新資料
使用查詢參數解決了標簽問題。 我現在使用的是?id =“”,而不是使用resouce:id。
這里有幾件事情要考慮:
Lambda是通常認為的無服務器解決方案。 無需擔心基礎架構,您只需編寫代碼,基礎AWS托管資源即可為您運行代碼。 API網關與Lambda集成在一起,允許您將各種REST樣式的URL映射到Lambda函數。
好處
缺點
利用EC2實例將其刻入容器的一種有趣方式。 如果您習慣處理docker映像,尤其好。
好處
缺點
我建議針對更多以IO為中心的工作負載進行研究。 有許多可用選項,包括預配置的IOPS,實例存儲,高IO實例類型等。
好處
缺點
這是EC2方面的一個很好的接口。 如果您只有要運行的代碼,而寧願其他事情來決定運行代碼的位置/方式,則可能很有用。
好處
缺點
現在,關於數據庫,您可能需要存儲東西:
NoSQL數據存儲。 如果您可以將數據存儲為鍵值對而又無需大量相互關聯數據,那么這價格是合理的。 免費套餐的限制也不錯。
好處
缺點
顧名思義,這是一個相當簡單的數據庫。 這對於處理較小的工作負載或臨時存儲數據的位置非常有用。
好處
缺點
您對大多數人熟悉的數據庫的期望。 包括MySQL,Aurora(亞馬遜自定義的MySQL),PostgreSQL,Oracle,SQL Server。
好處
缺點
我認為我已經談到了基本的優點和缺點,但是很可能缺少一些在評論之后讓我想起的項目。 我也強烈建議您查看所有鏈接的站點,以更好地了解服務以及滿足您需求的內容,因為我可以提供的答案太多了。
確實沒有足夠的信息可以給您一個好的答案。 這取決於您的后端需要做什么以及如何擴展。 如果您只需要提供簡單的功能,則無需進行整個EC2實例操作,AWS Lambda函數是一種很好,簡單且非常便宜的方法。 Lambda函數支持Node.js(以及Python,C#和Java)。
這是一種無需過多承諾即可嘗試的好方法。 如果您確定需要更合適的服務器環境或需要執行諸如寫入文件系統之類的代碼,則代碼應易於移至運行Node的EC2實例。
將API托管在子域(即api.example.com)上而不是與S3存儲桶位於同一域下可能更容易,但是如果您需要它們全部位於同一域下,則可以通過設置S3來實現網關中的代理。 ( http://docs.aws.amazon.com/apigateway/latest/developerguide/integrating-api-with-aws-services-s3.html )
您應該簽出AWS Codestar 。
只需按一下按鈕,您將擁有一個完全運行的CI / CD管道和可用於開發的公開端點。
我建議使用無服務器。 我也嘗試了Codestar,但遇到了限制錯誤
AWS CodeStar在處理您的請求時遇到錯誤:無法在IAM中創建或更新一個或多個策略。 項目中的資源數量已超出IAM策略大小限制。.使用其他參數重試,或聯系AWS支持。
支持人員說,我的template.yml中沒有大約19個函數的解決方法,但是當我添加更多函數時,會出現此錯誤,我不知道如何解決此問題,沒有項目可以最多包含19個函數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.