我已经看到DynamoDB作为AWS AppSync的数据源的示例,但是我想知道是否可以使用Aurora(特别是PostgreSQL)?如果是,那么基本示例的解析器将是什么样?是否有任何资源可以证明可用于Aurora PostgreSQL甚至MySQL?
我正在尝试创建一个简单的IAM角色,让我的AppSync服务连接到我的DynamoDb数据库,但由于AppSync处于预览状态,因此IAM无法将AppSync识别为服务.如何创建IAM角色以使AppSync具有对DynamoDb的完全访问权限?
有什么简单的方法可以记录或调试来自请求映射模板和响应映射模板的VTL,而不是发送查询和突变来调试和记录?
另外,是否有任何Playground可以像使用Web Console中的JavaScript一样检查和播放VTL?
我们可以脱机使用AWS AppSync并检查以VTL编写的所有内容是否按预期工作吗?
我已经建立了一个AWS AppSync,其中包括一个GraphQL架构,相应的数据源(如Dynamo DB表)以及S3存储桶,我从这些数据源中使用lambda函数将数据读取到这些表中。
我想通过VCS(最好是GitHub)对安装程序进行版本控制,以便可以设置暂存和生产环境。除了简单地“复制粘贴”从一个env到另一个env的所有内容之外,我还没有遇到过这样做的简单方法。有人有更好的主意吗?
当使用 amplify 订阅 appsync 时,使用API.graphql(graphqlOperation(subscription));订阅可以工作一段时间,但我收到套接字关闭错误。
CONSOLE LOG [native code]: {
"[INFO] 24:12.893 MqttOverWSProvider": {
"errorCode": 8,
"errorMessage": "AMQJS0008I Socket closed.",
"uri": "wss://<uri>
Run Code Online (Sandbox Code Playgroud)
相同的订阅在 appsync 控制台中运行没有任何问题,只要订阅正在运行,我就会收到事件,但在设备上大约 2 分钟后停止。
涉及代码
let cs = await this.subscriptionService.appSubscriptions();
this.sbscriptions = this.cs.subscribe({
next: data => {
console.dir(data);
},
error: error => console.dir(JSON.stringify(error)),
close: () => console.log("closed")
});
Run Code Online (Sandbox Code Playgroud)
这部分代码不会抛出任何错误,上面显示的错误仅在设置时可见LOG_LEVEL = DEBUG
注意:在出现此错误之前,订阅确实会工作一段时间,在那段时间我可以看到从控制台触发的所有事件。
我尝试使用具有自定义身份验证角色的联合身份来使用 AWS AppSync API,但没有成功。
首先,我按照本教程创建了我的客户端。然后我打开 Federated Identities 控制台 -> 编辑身份池 -> 自定义并创建一个Developer provider name:login.mycompany.myapp并选中Enable access to unauthenticated identities。
之后,我按照此了解如何创建自定义身份验证。
从后端获取身份 ID 和会话令牌后,您将把它们传递到 AWS.CognitoIdentityCredentials 提供商。这是一个例子:
Run Code Online (Sandbox Code Playgroud)AWS.config.credentials = new AWS.CognitoIdentityCredentials({ IdentityPoolId: 'IDENTITY_POOL_ID', IdentityId: 'IDENTITY_ID_RETURNED_FROM_YOUR_PROVIDER', Logins: { 'cognito-identity.amazonaws.com': 'TOKEN_RETURNED_FROM_YOUR_PROVIDER' } });
我怎样才能得到IDENTITY_ID_RETURNED_FROM_YOUR_PROVIDER,cognito-identity.amazonaws.com和IDENTITY_ID_RETURNED_FROM_YOUR_PROVIDER? 我看到了如何做到这一点:
您可以通过调用 GetOpenIdTokenForDeveloperIdentity 来获取令牌。必须使用 AWS 开发人员凭证从后端调用此 API。
我检查了GetOpenIdTokenForDeveloperIdentity 文档并创建了这段代码:
const AWS = require('aws-sdk');
AWS.config.region = 'us-east-1'; // Region
const cognitoidentity = new AWS.CognitoIdentity(); …Run Code Online (Sandbox Code Playgroud) 这是从 App Sync AWS 返回的错误数据: { "data": { "getContentById": null }, "errors": [ { "path": [ "getContentById" ], "data": null, "errorType": " Lambda:Handled", "errorInfo": null, "locations": [ { "line": 1, "column": 2, "sourceName": null } ], "message": "未找到 ID" } ] }如何更改 lambda 函数中的 200 状态代码? 邮递员的屏幕截图
javascript amazon-web-services facebook-graph-api aws-appsync
我正在尝试创建一种结构,该结构列出具有降序postId排列的帖子评论lastChangeTime。
模式中的模型在下面共享。
type Comment {
id: ID!
postId: String!
user: String!
lastChangeTime: String
commentBody: String
}
Run Code Online (Sandbox Code Playgroud)
它已经具有支持DynamoDB表和通用CRUD解析器。而id字段是表的主键。
我计划建立一个查询,如下所示:
{
"version": "2017-02-28",
"operation" : "Query",
"index" : "postId-index",
"query" : {
"expression": "post = :postId",
"expressionValues" : {
":postId" : {
"S" : "${ctx.args.postId}"
}
}
},
"limit": $util.defaultIfNull($ctx.args.first, 20),
"nextToken": $util.toJson($util.defaultIfNullOrEmpty($ctx.args.after, null)),
"scanIndexForward": false
}
Run Code Online (Sandbox Code Playgroud)
为了使其正常工作,我该如何在(即)上添加全球二级索引(GSI)?postIdpostId-index
我应该在定义时在其上添加排序键lastChangeTime吗?还是lastChangeTime字段需要对自己的单独索引进行排序?
我正在尝试开始使用AWS AppSync和AWS Amplify。
到目前为止,我设法遵循了AWS文档(特别是在此处和此处)成功创建了示例TODO应用(第三代码段)并启用了AppSync GraphQL API,如下所示:
$ amplify add api
? Please select from one of the below mentioned services GraphQL
? Provide API name: MySampleTodoAPI
? Choose an authorization type for the API API key
? Do you have an annotated GraphQL schema? No
? Do you want a guided schema creation? true
? What best describes your project: Single object with fields (e.g., “Todo” with ID, name, description) …Run Code Online (Sandbox Code Playgroud) 我有以下查询:
query xxx {
getSomething(id: "id") {
field1
field2
}
}
Run Code Online (Sandbox Code Playgroud)
在lambda中,我有什么办法得到field1和得到field2吗?例如,仅查询mysql中的那些字段,而不是获取所有字段以供稍后AppSync丢弃。
我尝试将所有日志记录$context在请求映射器VTL文件中,但它们不存在。有任何想法吗?无法做到这一点似乎很愚蠢。我在lambda中唯一遇到的就是id参数。
谢谢Mihai
aws-appsync ×10
aws-amplify ×2
graphql ×2
amazon-iam ×1
aws-lambda ×1
javascript ×1
nativescript ×1
reactjs ×1
versioning ×1