我正在尝试在AWS beanstalk上部署多个node.js微服务,我希望它们部署在同一个实例上.这是我第一次部署多项服务,所以有些失败我需要有人来帮助我.所以,我首先尝试将它们打包到docker容器中.同时我正在使用docker composer来管理结构.它在我的虚拟机中启动并运行,但是当我将它部署到beanstalk时,我遇到了一些问题.
我知道的:
dockerrun.aws.jsonfor node.js应用程序.哪里有问题:
dockerrun.aws.json和task_definition.json
PHP的模板,所以我无法验证,如果我在这两个JSON文件Node.js的配置都在正确的形状.docker-compose.yml,dockerrun.aws.json并且task_definition.json正在做类似的工作.我必须保持task_definition,但是我还需要dockerrun.aws.json吗?我有:
在环境中找不到ecs任务定义(或空定义文件)
因为我的任务将永远停止.如果我可以查看日志,我会更容易进行故障排除.
这是我的task_definition.json:
{
"requiresAttributes": [],
"taskDefinitionArn": "arn:aws:ecs:us-east-1:231440562752:task-definition/ComposerExample:1",
"status": "ACTIVE",
"revision": 1,
"containerDefinitions": [
{
"volumesFrom": [],
"memory": 100,
"extraHosts": null,
"dnsServers": null,
"disableNetworking": null,
"dnsSearchDomains": null,
"portMappings": [
{
"hostPort": 80,
"containerPort": 80,
"protocol": "tcp"
}
],
"hostname": null,
"essential": true,
"entryPoint": null,
"mountPoints": [
{
"containerPath": "/usr/share/nginx/html",
"sourceVolume": "webdata", …Run Code Online (Sandbox Code Playgroud) amazon-web-services amazon-ecs docker amazon-elastic-beanstalk docker-compose
我在一个简单的flask服务器中包装我的tensorflow模型,我正在gunicorn为flask服务器添加wsgi .当我运行gunicorn并试图发送一个请求来调用我已经导入到烧录服务器的火车功能时,我从命令行参数解析得到一个错误:
absl.flags._exceptions.UnrecognizedFlagError:未知的命令行标志'b'
我知道当gunicorn绑定地址参数时会传递这个标志,因为我没有为tensorflow命名为'b'的标志.所以我的问题是tensorflow如何忽略这些tf.app.run()函数不会抱怨的未定义标志?
仅供参考,这是我的服务器结构:
wsgi.py:
from simple_server import app
if __name__ == "__main__":
app.run()
Run Code Online (Sandbox Code Playgroud)
simple_server.py:
from my_tf_model import my_train
@app.route('/call_train', methods=['POST'])
def call_train():
if request.method == 'POST':
training_data = request.json
my_train(training_data, param2)
return('Trained!')
Run Code Online (Sandbox Code Playgroud)
my_tf_model.py:
tf.app.flags.DEFINE_integer('model_version',1, 'version number of the model.')
tf.app.flags.DEFINE_string('work_dir', '', 'Working directory.')
FLAGS = tf.app.flags.FLAGS
def my_train(param1, param2):
# Train Algorithm
export_path_base = FlAGS.work_dir
# Exporting model code
def main(argv):
my_train(param1, param2)
if __name__ == "__main__":
tf.app.run()
Run Code Online (Sandbox Code Playgroud)
更新:
我使用的是 …
我在我的 react-native 应用程序中定义了嵌套的领域对象:
export const userSchema = {
name: 'User',
primaryKey: 'id',
properties: {
id: 'string',
user_id: 'string',
password: 'string',
demographics: 'Demographics',
notes: 'string'
}
}
export const demographicsSchema = {
name: 'Demographics',
primaryKey: 'id',
properties: {
id: 'int',
age: 'int',
height: 'float',
weight: 'float',
gender: 'int',
}
}
Run Code Online (Sandbox Code Playgroud)
当我User从领域查询时,我想将其转换为 Json 并通过 http 请求发送到后端服务器。但是,在搜索将领域对象转换为 Json 的模块后,我没有找到任何有用的内容来完成这项特定任务。如果有人知道在 react-native 中将嵌套领域对象转换为 Json 的简单方法,我将不胜感激。
我有一个非常类似的方法:使用nodeJs和AWS调整图像大小.当我在Windows 10上本地运行我的服务时,我仍然会遇到同样的错误.它可以在lambda云上完美运行.我发现如何有限的内存或有限超时可能会引发这次讨论stderr中gm:流处理的GM大的图像文件时产生空缓冲区错误.此外,这个讨论还提到了有限的内存如何使你的lambda服务易受攻击而且不健壮:在amazon lambda中,并行异步抛出调整多个缩略图大小错误:Stream产生空缓冲区.但是,我在本地运行这个节点服务并且有足够的空闲内存,我不应该一直遇到这个"有限内存"陷阱.我在想这个问题来自于gm.这是我的代码:
async.forEachOf(_sizesArray, function(value, key, callback) {
async.waterfall([
function download(next) {
s3.getObject({
Bucket: srcBucket,
Key: srcKey
}, next);
},
function convert(response, next) {
console.log(response.Body);
gm(response.Body,srcKey).antialias(true).density(
300).toBuffer('JPG', function(err,
buffer) {
if (err) {
console.log(err + "\n\nfrom convert\n");
next(err);
} else {
next(null, buffer);
}
});
},
function process(response, next) {
gm(response).size(function(err, size) {
var scalingFactor = Math.min(
_sizesArray[key].width /
size.width, _sizesArray[
key].width / size.height
);
var width = …Run Code Online (Sandbox Code Playgroud) 我已经分开styles.js并app.js为一个简单的应用程序.我将图像资源定义为全局常量变量.(对于徽标和配置文件)我也尝试添加这些常量图像资源styles.js.但是使用我当前的方法和语法,我无法导出这些常量图像资源,styles.js因为它们没有在样式变量包装器中定义.
styles.js:
'use strict'
import React, { Component } from 'react';
import {StyleSheet} from 'react-native';
/*
const background_img= require("../../resource/mybackground.png");
I tried to define the resource path here
*/
var styles = StyleSheet.create({
/*Styles Definition*/
});
export default styles
Run Code Online (Sandbox Code Playgroud)
app.js:
'use strict'
import React, { Component } from 'react';
import { AppRegistry, Text, TextInput, View, Image,
TouchableOpacity, Alert} from 'react-native';
import styles from './styles.js';
/*const background= require("../../resource/mybackground.png");*/
// I want to …Run Code Online (Sandbox Code Playgroud) 我正在使用 lambda 函数来缩略图 s3 存储桶中的图像。我在这里找到了一个示例:Image conversion using Amazon Lambda and S3 in Node.js。但是,重构代码后,调用 s3.getObject() 时访问被拒绝。我检查了我的 IAM 策略是否错误地授予了权限,但我拥有对 Lambda、S3 和 CloudFront 的完全访问权限。下面是抛出异常的方式:
async.waterfall([
function download(next) {
console.log(srcBucket+ " "+srcKey);
s3.getObject({
Bucket: srcBucket,
Key: srcKey
}, next);
console.log(srcBucket+ " "+srcKey+ "After");
}
], function(err, result) {
if (err) {
console.error(err);
}
// result now equals 'done'
console.log("End of step " + key);
callback();
});
Run Code Online (Sandbox Code Playgroud)
另外,我的 matchng 正则表达式设置与示例相同:
var srcBucket = event.Records[0].s3.bucket.name;
var typeMatch = srcKey.match(/\.([^.]*)$/);
var fileName = path.basename(srcKey);
if …Run Code Online (Sandbox Code Playgroud) 我想sudo chmod 777 -R <path>在 mac 上授予操作访问权限,我仔细检查了给定的路径,它存在并且没有拼写错误,但我仍然得到chmod: -R: No such file or directory. 关于为什么我收到此错误的任何想法?
amazon-s3 ×2
javascript ×2
node.js ×2
react-native ×2
amazon-ecs ×1
aws-lambda ×1
bash ×1
chmod ×1
docker ×1
flask ×1
gunicorn ×1
lambda ×1
macos ×1
permissions ×1
python ×1
realm ×1
tensorflow ×1