我想使用 AWS lambda 函数为每个用户扇出并将活动流信息插入到 firebase 端点。
对于这个用例,我应该使用 Kinesis、SQS 还是 SNS 来触发 lambda 函数?可以从服务器触发对活动流的更新,客户端应该几乎实时(60 秒左右)接收更新。
我想我对什么是 SQS 有一个很好的了解,并且过去使用过 Kinesis,但对 SNS 不太确定。
如果我们为每个用户创建一个 SNS 主题,然后每个关注者都使用 AWS lambda 函数订阅这些主题 - 这会起作用吗?
以编程方式为每个用户创建主题和订阅并分别关注关系是否有意义?
我一直在尝试将我们的一个node.js应用程序转换并部署到lambda函数中,并且遇到了node_modules依赖项的一些问题 - 说它无法找到某些模块.我首先创建了一个package.json,然后在本地安装依赖项,然后将节点模块文件夹复制到lambda.
例如,我有一个需要sequelize和convict的项目,并且一直在收到错误,说它无法找到moment模块作为子依赖项.我看到那个时刻包含在我的node_modules的根目录中,但它没有包含在sequelize模块下的子文件夹中.
但是,这个项目在当地运行良好.lambda有什么区别,用它来部署一些有点长的节点模块的最佳实践是什么 - 只是node_modules文件夹的一个副本?在我所拥有的一些其他更简单的项目中,可以复制少量的node_modules而没有任何问题.
{
"errorMessage": "Cannot find module 'moment'",
"errorType": "Error",
"stackTrace": [
"Function.Module._resolveFilename (module.js:338:15)",
"Function.Module._load (module.js:280:25)",
"Module.require (module.js:364:17)",
"require (module.js:380:17)",
"VERSION (/var/task/node_modules/sequelize/node_modules/moment-timezone/moment-timezone.js:14:28)",
"Object. (/var/task/node_modules/sequelize/node_modules/moment-timezone/moment-timezone.js:18:2)",
"Module._compile (module.js:456:26)",
"Object.Module._extensions..js (module.js:474:10)",
"Module.load (module.js:356:32)",
"Function.Module._load (module.js:312:12)"
]
}
在控制台中创建 DynamoDB 表时,如果选择哈希主键(而不是哈希和范围),为什么“本地二级索引”选项不可用?
我的用例是为每个用户存储一个活动提要,所以散列userid是合乎逻辑的。此外,我想保持本地二级索引范围,date_created以便我始终可以查询最近的 n 条记录。
我应该使用的主键uid,并date_created在此情况下(虽然在技术上这在理论上是可能的,两个项目将具有相同date_created。
我正在尝试从 url 获取照片并将其通过管道传输到上传到亚马逊 s3 存储桶的 PUT 链接。这个 PUT 链接是一个预先签名的上传 url,所以所有需要发生的是 PUT 请求的正文需要包含照片数据。
我尝试了以下操作,但似乎不起作用 - 它似乎没有通过 get.get 中的任何数据。
var request = require('request');
request.get('https://SomeUrlThatRedirectsAFewTimes.com').pipe(request.put('https://mys3uploadlink.com'));
Run Code Online (Sandbox Code Playgroud) 查看示例AWS API Gateway以便将查询字符串映射到Lambda函数,它显示了application/json在集成请求中创建模板映射的示例.如何为所有请求创建模板Content-Type?Lambda无论Content-Type请求中的哪个,我希望它用查询字符串params来激活它.
让我感到好奇的一件事是网络游戏如何能够实时处理真正新颖或独特的成就,并立即给你一个徽章.
简单的事情就像获得10次杀戮或者完成一个级别似乎很容易,但是像跳过某人一样,将你的剪辑中的每一颗子弹射杀一个人的东西 - 或类似的东西似乎是非常疯狂的编程.
他们是否只有一个大型处理器,可以读取所有活动的实时日志,并且不断计算每项成就 - 或者是将游戏本身编入的成就计算到游戏逻辑中?似乎后者并非如此,因为游戏的新成就经常出现.
对于这种事情,是否有完善的模式或架构?
由于您可以在突变中顺序运行多个步骤,因此可以在 graphql 中使用条件 if 语句,以便仅在前一步的结果满足条件时才运行后面的步骤吗?
例如
mutation upsertLogin($idToken: String!, $email: String!, $username: String!) {
User(email: $email, username: $username) {
id
}
// only do the next step if no id from from previous step
createUser(email: $email, username: $username) {
id
}
}
Run Code Online (Sandbox Code Playgroud) 为什么在视图中添加另一个第二个元素会导致错误 "React.Children.only expected to receive a single React element child."
我有一个react本机组件,它使用apollo客户端调用graphQL端点来获取数据.如果我只渲染视图,它就可以工作,但是当我添加可触摸的高光时,我会得到错误.我可以在视图中没有多个根元素,还是使用复合元素创建视图?我尝试添加它作为一个Button也引起了不同的错误.然而,添加文本似乎没问题.
class Games extends Component {
constructor(props) {
super(props);
}
render() {
const { loading, allGames } = this.props.data;
if (loading) {
return <Text>Loading</Text>;
} else if (allGames) {
return (
<View style={styles.outer}>
//adding this touchable highlight causes the error
<TouchableHighlight>Get More</TouchableHighlight>
{ allGames.map(game => (
<View key={game.id} style={styles.wrapper}>
<Text style={styles.header}>{game.title}</Text>
</View>
))}
</View>
);
}
return (
<Text>No results</Text>
);
}
}
Games.propTypes = {
data: PropTypes.shape({ …Run Code Online (Sandbox Code Playgroud) 查看 react-starter-kit 中的示例代码,我对语句的require.ensure([], (require) => resolve(require('./Admin').default), 'admin');作用感到困惑。我没有看到 require.ensure 在任何地方定义,所以我假设它是一个 webpack 函数。
这是确保用户具有管理员角色的授权检查吗?如果是这样,用户信息和角色信息在哪里被实例化?
是否只是为了确保管理组件被实例化?什么是.default属性,字符串“admin”的用途是什么?
import React from 'react';
import Layout from '../../components/Layout';
const title = 'Admin Page';
const isAdmin = false;
export default {
path: '/admin',
async action() {
if (!isAdmin) {
return { redirect: '/login' };
}
const Admin = await new Promise((resolve) => {
require.ensure([], (require) => resolve(require('./Admin').default), 'admin');
});
return {
title,
chunk: 'admin',
component: <Layout><Admin title={title} /></Layout>,
};
},
};
Run Code Online (Sandbox Code Playgroud) 我正在从一个项目的npm切换到纱线,刚开始添加一个模块yarn add.
然而,之后我做了一个npm列表,现在它显示了大量错误:无关和遗漏错误.
我错过了什么 - 或者我应该忽略这些npm错误.我可以使用什么命令与纱线确保我的依赖项没有错误/缺失?
npm ERR! peer dep missing: react-dom@0.14.x || 15.* || ^15.0.0, required by react-apollo@0.8.1
npm ERR! invalid: react-native@0.37.0 /Users/user/Projects/foo-app/node_modules/react-native
npm ERR! extraneous: absolute-path@0.0.0 /Users/user/Projects/foo-app/node_modules/absolute-path
npm ERR! extraneous: art@0.10.1 /Users/user/Projects/foo-app/node_modules/art
npm ERR! extraneous: babel-plugin-external-helpers@6.18.0 /Users/user/Projects/foo-app/node_modules/babel-plugin-external-helpers
npm ERR! extraneous: babel-polyfill@6.20.0 /Users/user/Projects/foo-app/node_modules/babel-polyfill
npm ERR! extraneous: babel-preset-es2015-node@6.1.1 /Users/user/Projects/foo-app/node_modules/babel-preset-es2015-node
npm ERR! extraneous: babel-preset-fbjs@2.1.0 /Users/user/Projects/foo-app/node_modules/babel-preset-fbjs
npm ERR! extraneous: connect@2.30.2 /Users/user/Projects/foo-app/node_modules/connect
npm ERR! extraneous: denodeify@1.2.1 /Users/user/Projects/foo-app/node_modules/denodeify
npm ERR! extraneous: event-target-shim@1.1.1 /Users/user/Projects/foo-app/node_modules/event-target-shim
npm ERR! extraneous: fbjs-scripts@0.7.1 /Users/user/Projects/foo-app/node_modules/fbjs-scripts
npm ERR! extraneous: fs-extra@0.26.7 …Run Code Online (Sandbox Code Playgroud) aws-lambda ×3
achievements ×1
amazon-sns ×1
graphql ×1
node-request ×1
node.js ×1
npm ×1
online-game ×1
react-native ×1
reactjs ×1
webpack ×1
yarnpkg ×1