为什么在使用无服务器-Appsync-Plugin部署时会遇到权限错误?

发布于 2025-01-27 13:38:18 字数 3011 浏览 3 评论 0原文

我正在尝试学习如何使用Serverless.com的AWS AppSync插件。

当我尝试部署时,我会遇到错误:

Error:
CREATE_FAILED: GraphQlApi (AWS::AppSync::GraphQLApi)
User: arn:aws:iam::705076103456:user/cloud_user is not authorized to perform: appsync:TagResource on resource: arn:aws:appsync:us-east-1:705076103456:* with an explicit deny (Service: AWSAppSync; Status Code: 403; Error Code: AccessDeniedException; Request ID: 7695c105-653f-4bff-9b73-05c640d6e2b4; Proxy: null)

插件文档提及需要明确提供部署的权限的任何内容,因此我认为我的无服务器有问题

service: daveh-football-api
provider:
  name: aws
  deploymentBucket:
    name: daveh-mindgym-football-api2
    serverSideEncryption: AES256
  stage: ${opt:stage, 'local'}
  runtime: nodejs14.x
  logs:
    restApi: true
  tracing:
    apiGateway: true
    lambda: true
  region: us-east-1
  profile: acloudguru
  apiGateway:
    shouldStartNameWithService: true

plugins:
  - serverless-deployment-bucket
  - serverless-webpack
#  - serverless-domain-manager
  - serverless-offline
  - serverless-plugin-stage-variables
  - serverless-appsync-plugin

custom:
  appSync:
    authenticationType: API_KEY
    mappingTemplates:
      - type: Query
        request: false
        response: false
        dataSource: query
        field: hello
    dataSources:
      - type: AWS_LAMBDA
        name: query
        config:
          functionName: query
    apiKeys:
      - name: myapikey
        description: 'My api key'
        expiresAfter: 30d

functions:
  ping:
    handler: src/rest-handler.handler
    events:
      - http:
          method: GET
          path: ping

  query:
    handler: src/query-handler.handler

resources:
  Resources:
    GatewayResponseDefault4XX:
      Type: 'AWS::ApiGateway::GatewayResponse'
      Properties:
        ResponseParameters:
          gatewayresponse.header.Access-Control-Allow-Origin: "'*'"
          gatewayresponse.header.Access-Control-Allow-Headers: "'*'"
        ResponseType: DEFAULT_4XX
        RestApiId:
          Ref: 'ApiGatewayRestApi'
    GatewayResponseDefault5XX:
      Type: 'AWS::ApiGateway::GatewayResponse'
      Properties:
        ResponseParameters:
          gatewayresponse.header.Access-Control-Allow-Origin: "'*'"
          gatewayresponse.header.Access-Control-Allow-Headers: "'*'"
        ResponseType: DEFAULT_5XX
        RestApiId:
          Ref: 'ApiGatewayRestApi'

。在添加AppSync的内容之前,它已经很好地部署了。

这是我的软件包中的开发依赖性

    "serverless": "^3.12.0",
    "serverless-appsync-plugin": "^1.13.0",
    "serverless-deployment-bucket": "^1.5.2",
    "serverless-offline": "^8.5.0",
    "serverless-plugin-stage-variables": "^1.10.1",
    "serverless-webpack": "^5.7.0",
    "ts-loader": "^9.2.8"

。我要做的就是立即获取“ Hello World” GraphQl。

I'm trying to learn how to use serverless.com's AWS AppSync plugin.

I get an error when I try to deploy:

Error:
CREATE_FAILED: GraphQlApi (AWS::AppSync::GraphQLApi)
User: arn:aws:iam::705076103456:user/cloud_user is not authorized to perform: appsync:TagResource on resource: arn:aws:appsync:us-east-1:705076103456:* with an explicit deny (Service: AWSAppSync; Status Code: 403; Error Code: AccessDeniedException; Request ID: 7695c105-653f-4bff-9b73-05c640d6e2b4; Proxy: null)

The plugin documentation doesn't mention anything about needing to explicitly provide permissions to deploy, so I assume there is something wrong with my serverless.yml:

service: daveh-football-api
provider:
  name: aws
  deploymentBucket:
    name: daveh-mindgym-football-api2
    serverSideEncryption: AES256
  stage: ${opt:stage, 'local'}
  runtime: nodejs14.x
  logs:
    restApi: true
  tracing:
    apiGateway: true
    lambda: true
  region: us-east-1
  profile: acloudguru
  apiGateway:
    shouldStartNameWithService: true

plugins:
  - serverless-deployment-bucket
  - serverless-webpack
#  - serverless-domain-manager
  - serverless-offline
  - serverless-plugin-stage-variables
  - serverless-appsync-plugin

custom:
  appSync:
    authenticationType: API_KEY
    mappingTemplates:
      - type: Query
        request: false
        response: false
        dataSource: query
        field: hello
    dataSources:
      - type: AWS_LAMBDA
        name: query
        config:
          functionName: query
    apiKeys:
      - name: myapikey
        description: 'My api key'
        expiresAfter: 30d

functions:
  ping:
    handler: src/rest-handler.handler
    events:
      - http:
          method: GET
          path: ping

  query:
    handler: src/query-handler.handler

resources:
  Resources:
    GatewayResponseDefault4XX:
      Type: 'AWS::ApiGateway::GatewayResponse'
      Properties:
        ResponseParameters:
          gatewayresponse.header.Access-Control-Allow-Origin: "'*'"
          gatewayresponse.header.Access-Control-Allow-Headers: "'*'"
        ResponseType: DEFAULT_4XX
        RestApiId:
          Ref: 'ApiGatewayRestApi'
    GatewayResponseDefault5XX:
      Type: 'AWS::ApiGateway::GatewayResponse'
      Properties:
        ResponseParameters:
          gatewayresponse.header.Access-Control-Allow-Origin: "'*'"
          gatewayresponse.header.Access-Control-Allow-Headers: "'*'"
        ResponseType: DEFAULT_5XX
        RestApiId:
          Ref: 'ApiGatewayRestApi'

There's also a rest endpoint defined in this serverless.yml. Before I added the AppSync stuff, it deployed fine.

Here are the dev dependencies from my package.json:

    "serverless": "^3.12.0",
    "serverless-appsync-plugin": "^1.13.0",
    "serverless-deployment-bucket": "^1.5.2",
    "serverless-offline": "^8.5.0",
    "serverless-plugin-stage-variables": "^1.10.1",
    "serverless-webpack": "^5.7.0",
    "ts-loader": "^9.2.8"

Any ideas what I'm missing? All I'm trying to do is get a "hello world" graphql thing deployed right now.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文