- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用无服务器框架上传 AWS Lambda 函数,以用作 AppSync 中的数据源。我的 serverless.yml
非常基本:
service: mongoose-lambda-srvrls
provider:
name: aws
runtime: nodejs6.10
region: us-west-2
functions:
mongoose:
handler: index.handler
当我运行 AppSync GraphQL 查询时,出现错误:
{
"data": {
"getPost": null
},
"errors": [
{
"path": [
"getPost"
],
"data": null,
"errorType": "Lambda:AWSLambdaException",
"errorInfo": null,
"locations": [
{
"line": 43,
"column": 2
}
],
"message": "User: arn:aws:sts::433333333335:assumed-role/appsync-datasource-lam-kkzuep-mongoose-lambda-srvr/APPSYNC_ASSUME_ROLE is not authorized to perform: lambda:InvokeFunction on resource: arn:aws:lambda:us-west-2:43333333333335:function:mongoose-lambda-srvrls-dev-mongoose (Service: AWSLambda; Status Code: 403; Error Code: AccessDeniedException; Request ID: 9fa82eb9-3a64-11e8-88a1-09c4e639fc45)"
}
]
}
我非常确定我需要充实我的 YML,以便这个 lambda 堆栈能够与 AppSync 很好地配合,但我不太确定该怎么做。
更多信息。当查看 Lambda 的 CloudFormation 中的资源时,我看到:
IamRoleLambdaExecution mongoose-lambda-srvrls-dev-us-west-2-lambdaRole AWS::IAM::Role
MongooseLambdaFunction mongoose-lambda-srvrls-dev-mongoose AWS::Lambda::Function
MongooseLambdaVersionwCQ1... arn:aws:lambda:us-west-2:4542242445:function:mongoose-lambda-srvrls-dev-mongoose:4 AWS::Lambda::Version
MongooseLogGroup /aws/lambda/mongoose-lambda-srvrls-dev-mongoose AWS::Logs::LogGroup
ServerlessDeploymentBucket mongoose-lambda-srvrls-d-serverlessdeploymentbuck-qwp8sdfgjr AWS::S3::Bucket
而在我使用 AppSync 文档 (AWS CLI) 制作的 Lambda 中,具有以下 CloudFormation 资源:
AppSyncLambdaInvokePolicy Fulls-AppS-15SHASDFSADZ03N AWS::IAM::Policy
AppSyncServiceRole Fullstack-Lamba-AppSyncServiceRole-DK8QHASDFE5R AWS::IAM::Role
LambdaExecutionRole Fullstack-Lamba-LambdaExecutionRole-OJHASDF3AHG1 AWS::IAM::Role
LambdaFunction fullstack-lambda AWS::Lambda::Function
最佳答案
您授予 AppSync 来运行 lambda 函数的角色似乎没有调用该特定 lambda 的权限。
您需要创建或修改角色,使其具有以下权限。
IAM 角色应该有一个策略,允许任何承担该角色的人运行/调用您的 lambda 函数:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"lambda:Invoke"
],
"Resource": "arn:aws:lambda:REGION:ACCOUNTNUMBER:function/LAMBDA_FUNCTION"
}
]
}
该角色还应该有信任策略。此信任策略将允许 AppSync 代表您承担该角色。这就是每当有 graphQL 请求传入时 AppSync 调用 lambda 的方式。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "appsync.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
一旦您拥有具有必要权限的 IAM 角色,您将需要确保它与 AppSync 中的 lambda 数据源关联。您可以在 AppSync 控制台的数据源
部分中选择角色,或使用 AppSync CLI 更新 lambda 数据源并使其使用您的角色。
有关创建与 AppSync 配合良好的 lambda 函数的更多信息,请参阅以下文档:https://docs.aws.amazon.com/appsync/latest/devguide/tutorial-lambda-resolvers.html#configure-data-source-for-aws-lambda
关于aws-lambda - 无服务器框架 Lambda AppSync 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49707752/
谁能告诉我: aws-sdk/clients/appsync , 和 aws-appsync 根据文档,aws-sdk/clients/appsync使用是因为只包括 aws-sdk当我们只需要 ap
input CarInput{ name: String brand: String } type Car{ id: ID name: String
我花了最后一天尝试 AWS AppSync我对订阅可以做什么有点失望。 在我看来 AppSync subscription 的当前状态适用于您有一个项目列表并且您希望它在所有客户端上同步的用例。 与
似乎 AppSync 项目只能配置一种授权类型( API_KEY 、 AWS_IAM 等)。我正在使用 AMAZON_COGNITO_USER_POOLS作为我的主要类型,但我也有一个(Node.js
阅读 AppSync 文档,似乎 AppSync 订阅只能通过将订阅附加到突变来工作。 但是如果我需要一个独立于突变的订阅怎么办?这是在某些内部状态更改时触发的?例如,是否有新资源可用? 这在 App
在我正在使用的 appsync api 的 graphQl 架构中,我想根据他们所属的组来限制我的用户操作。 根据文档,添加行 aws_auth(cognito_groups: ["Admins"])
有没有办法将 GraphQL 类型描述添加到 AppSync 使用的 GraphQL 模式? ApolloServer 和 graphql-js 通过模式文件中的注释支持这一点(参见 here )。
我将 AppSync 与 aurora 无服务器解析器一起使用。我想知道是否可以在 RDS 解析器中运行事务。 我可以使用数据 api 但在 lambda 函数解析器中运行事务。 最佳答案 您可以编写
我想避免在我的 vtl 模板中重复某些声明,并在 vtl 解析器之间共享它们。 假设我在 mapping_templates/shared.vtl 中有一个示例字典 #set($sample_ma
我对 GraphQL 相当陌生,并且一直在为 GraphQL API 使用 AWS AppSync 服务。我使用 AWS Cognito 进行身份验证/授权、一些 Lambda 函数以及连接到我的 A
我要完成的任务: 我在 AppSync Web 控制台上编辑了一个 amplify + AppSync 项目,我想将它拉到我的本地机器上。 我做了什么: 我通过执行三个命令使用 Amplify CLI
目前 AWS AppSync 只能订阅突变,这是获得实时更新的唯一途径。但是,如果对 AppSync 之外的支持数据进行了更改(例如来自 Lambda 函数的 DynamoDB 更新),那么我们如何通
AWS Appsync 文档似乎使用 $util.和 $utils.可互换。它们实际上是不同的,还是同一事物的同义词? 最好的例子是 the resolver transformation helpe
我正在处理一个需要以图像形式上传附件的新项目。我正在使用 DynamoDB 和 AppSync API 从数据库中插入和检索数据。由于我们不熟悉 AppSync 以及我们为应用程序使用的所有亚马逊服务
我正在尝试查询特定日期范围内的所有项目(具有 AWS DateTime 的 CreatedAt 和 UpdatedAt 字段)。例如,过去 48 小时。 例如,使用这个架构: type Note @m
我想让我的 AWS AppSync 应用程序准备好为移动应用程序(Android 和 iOS)推送通知我有一个 GraphQL 模式和 Lambda 作为数据源。问题是我不知道最好的解决方案是什么。
我尝试包括在以下graphql模式中定义的嵌套类型: type User { id: String! posts: [Post] } type Post { id: String! } t
我遇到了 React/Apollo/AppSync 的问题,突变触发了两次(或多次)。我有一个 React 应用程序,它有一个由通常的 UI 按钮 onClick 触发的更新突变。 { that.t
我遇到了 React/Apollo/AppSync 的问题,突变触发了两次(或多次)。我有一个 React 应用程序,它有一个由通常的 UI 按钮 onClick 触发的更新突变。 { that.t
我正在尝试设置 graphql 订阅,但收到错误: Unhandled GraphQL subscription error Error: Error during subscription hand
我是一名优秀的程序员,十分优秀!