无服务器框架lambda执行角色不匹配?

天猫实验室

我正在使用无服务器框架使用node.js和ajv库制作基于lambda的简单模式验证服务。

如此处所述我的本地调用有效,但是当我远程调用时,我得到了S3拒绝的访问。此外,当我使用特定资源在AWS上运行策略模拟时,它表明已授予访问权限,现在我很困惑。

我使用以下方法远程调用我的函数

SLS_DEBUG=* sls invoke -f validate --data '{"schema":"valid", "schema_version":""}'

我得到的相关错误消息是:

platform-sdk fetching: POST https://api.serverless.com/core/tenants/l1nxit/applications/api/profileValue
Serverless: Invoke invoke
Serverless: [AWS lambda 200 1.555s 0 retries] invoke({ FunctionName: 'validate-stage-validate',
  InvocationType: 'RequestResponse',
  LogType: 'None',
  Payload: '***SensitiveInformation***' })
{
    "errorMessage": "Access Denied",
    "errorType": "AccessDenied",
    "stackTrace": [
        "Request.extractError (/var/task/node_modules/aws-sdk/lib/services/s3.js:585:35)",
        "Request.callListeners (/var/task/node_modules/aws-sdk/lib/sequential_executor.js:106:20)",
        "Request.emit (/var/task/node_modules/aws-sdk/lib/sequential_executor.js:78:10)",
        "Request.emit (/var/task/node_modules/aws-sdk/lib/request.js:683:14)",
        "Request.transition (/var/task/node_modules/aws-sdk/lib/request.js:22:10)",
        "AcceptorStateMachine.runTo (/var/task/node_modules/aws-sdk/lib/state_machine.js:14:12)",
        "/var/task/node_modules/aws-sdk/lib/state_machine.js:26:10",
        "Request.<anonymous> (/var/task/node_modules/aws-sdk/lib/request.js:38:9)",
        "Request.<anonymous> (/var/task/node_modules/aws-sdk/lib/request.js:685:12)",
        "Request.callListeners (/var/task/node_modules/aws-sdk/lib/sequential_executor.js:116:18)"
    ]
}

  Error --------------------------------------------------

  Error: Invoked function failed
      at AwsInvoke.log (/Users/myuser/.nvm/versions/node/v10.17.0/lib/node_modules/serverless/lib/plugins/aws/invoke/index.js:105:31)
  From previous event:
      at Object.invoke:invoke [as hook] (/Users/myuser/.nvm/versions/node/v10.17.0/lib/node_modules/serverless/lib/plugins/aws/invoke/index.js:23:12)
      at BbPromise.reduce (/Users/myuser/.nvm/versions/node/v10.17.0/lib/node_modules/serverless/lib/classes/PluginManager.js:489:55)
  From previous event:
      at PluginManager.invoke (/Users/myuser/.nvm/versions/node/v10.17.0/lib/node_modules/serverless/lib/classes/PluginManager.js:489:22)
      at getHooks.reduce.then (/Users/myuser/.nvm/versions/node/v10.17.0/lib/node_modules/serverless/lib/classes/PluginManager.js:524:24)
  From previous event:
      at PluginManager.run (/Users/myuser/.nvm/versions/node/v10.17.0/lib/node_modules/serverless/lib/classes/PluginManager.js:524:8)
      at variables.populateService.then (/Users/myuser/.nvm/versions/node/v10.17.0/lib/node_modules/serverless/lib/Serverless.js:115:33)
      at runCallback (timers.js:705:18)
      at tryOnImmediate (timers.js:676:5)
      at processImmediate (timers.js:658:5)
      at process.topLevelDomainCallback (domain.js:126:23)
  From previous event:
      at Serverless.run (/Users/myuser/.nvm/versions/node/v10.17.0/lib/node_modules/serverless/lib/Serverless.js:102:74)
      at serverless.init.then (/Users/myuser/.nvm/versions/node/v10.17.0/lib/node_modules/serverless/bin/serverless.js:72:30)
      at /Users/myuser/.nvm/versions/node/v10.17.0/lib/node_modules/serverless/node_modules/graceful-fs/graceful-fs.js:111:16
      at /Users/myuser/.nvm/versions/node/v10.17.0/lib/node_modules/serverless/node_modules/graceful-fs/graceful-fs.js:45:10
      at FSReqWrap.args [as oncomplete] (fs.js:140:20)
  From previous event:
      at initializeErrorReporter.then (/Users/myuser/.nvm/versions/node/v10.17.0/lib/node_modules/serverless/bin/serverless.js:72:8)
      at runCallback (timers.js:705:18)
      at tryOnImmediate (timers.js:676:5)
      at processImmediate (timers.js:658:5)
      at process.topLevelDomainCallback (domain.js:126:23)
  From previous event:
      at Object.<anonymous> (/Users/myuser/.nvm/versions/node/v10.17.0/lib/node_modules/serverless/bin/serverless.js:61:4)
      at Module._compile (internal/modules/cjs/loader.js:778:30)
      at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
      at Module.load (internal/modules/cjs/loader.js:653:32)
      at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
      at Function.Module._load (internal/modules/cjs/loader.js:585:3)
      at Function.Module.runMain (internal/modules/cjs/loader.js:831:12)
      at startup (internal/bootstrap/node.js:283:19)
      at bootstrapNodeJSCore (internal/bootstrap/node.js:623:3)

  Get Support --------------------------------------------
     Docs:          docs.serverless.com
     Bugs:          github.com/serverless/serverless/issues
     Issues:        forum.serverless.com

  Your Environment Information ---------------------------
     Operating System:          darwin
     Node Version:              10.17.0
     Framework Version:         1.56.1
     Plugin Version:            3.2.1
     SDK Version:               2.2.0
     Components Core Version:   1.1.2
     Components CLI Version:    1.4.0

我从https://api.serverless.com/core/tenants/[[my profileValue]]收到的消息是我{"errorMessage":"Not Found"}很怀疑的,尽管我回到无服务器的用户配置中却没有发现问题。

我的serverless.yml配置如下:

service: validate
app: api
org: l1nxit

custom:
  test: false
  inputBucket: l1nxit-schemas

provider:
  name: aws
  runtime: nodejs8.10

# defaults
  stage: stage
  region: eu-central-1
  user: serverless

# Lambda IAM Role
  iamRoleStatements:
    - Effect: "Allow"
      Action:
        - s3:GetObject
        - s3:GetObjectAcl
      Resource: "arn:aws:s3:::${self:custom.inputBucket}/*"

# packaging information
package:
  include:
    - node_modules/ajv/**
    - node_modules/fast-deep-equal/**
    - node_modules/fast-json-stable-stringify/**
    - node_modules/json-schema-traverse/**
    - node_modules/uri-js/**
  exclude:
    - S3/**
    - __tests__/**
    - .idea/**
    - coverage/**

functions:
  validate:
    handler: handler.validate
    environment:
      TEST: ${self:custom.test}
      INPUT_BUCKET: ${self:custom.inputBucket}

任何帮助将非常感激。

filipebarretto

要从S3获取对象,必须具有列出要从中获取对象的存储桶的权限,这一点很重要。在您的iamRoleStatement中,添加执行此操作的权限:

- Effect: "Allow"
  Action:
    - "s3:ListBucket"
  Resource: "arn:aws:s3:::${self:custom.inputBucket}"

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

无服务器框架Postgresql版本升级问题

来自分类Dev

使用无服务器框架时如何从AWS Lambda访问DynamoDB?

来自分类Dev

带有节点MySQL的无服务器框架

来自分类Dev

具有DynamoDB的无服务器框架:Lambda函数有效,但数据尚未保存到DynamoDB

来自分类Dev

AWS无服务器框架使用GIT进行协作

来自分类Dev

无服务器框架最佳实践

来自分类Dev

如何使用无服务器框架通过AWS Lambda函数环境变量访问SSM参数存储值?

来自分类Dev

无服务器框架TypeError:e不是函数

来自分类Dev

使用graphql,aws lambda和无服务器框架的多个URL路径选项错误

来自分类Dev

无服务器框架Python lambda直接返回JSON

来自分类Dev

在无服务器框架中使用路径参数

来自分类Dev

使用无服务器框架模拟响应数据

来自分类Dev

如何引用使用无服务器框架创建的Arn和AWS lambda函数的名称

来自分类Dev

使用无服务器框架(AWS Lambda / Gateway),Express,Mongoose / MongoDB Atlas的应用频繁超时

来自分类Dev

如何使用适用于AWS Lambda的无服务器框架获取最新的Layer版本

来自分类Dev

无服务器框架:无服务器错误功能未找到:

来自分类Dev

AWS Lambda:通过无服务器框架部署时,“ ELF加载命令地址/偏移未正确对齐”

来自分类Dev

无服务器框架-用于预定义的Cloud Front分布的Lambda @ Edge部署

来自分类Dev

psycopg2不适用于AWS Lambda上的无服务器框架部署

来自分类Dev

AWS无服务器:基于请求或HTTP API参数强制并行执行lambda

来自分类Dev

无服务器框架-无法识别的属性“参数”

来自分类Dev

无服务器添加假定角色以允许CloudWatch调用Lambda

来自分类Dev

在无服务器框架中从Lambda访问非公共RDS实例

来自分类Dev

微服务与Lambda与无服务器功能之间的差异

来自分类Dev

无服务器框架Postgresql版本升级问题

来自分类Dev

AWS无服务器框架使用GIT进行协作

来自分类Dev

如何在无服务器框架中将托管策略附加到lambda函数

来自分类Dev

在无服务器中手动创建角色而不是无服务器创建角色

来自分类Dev

无服务器框架输出

Related 相关文章

  1. 1

    无服务器框架Postgresql版本升级问题

  2. 2

    使用无服务器框架时如何从AWS Lambda访问DynamoDB?

  3. 3

    带有节点MySQL的无服务器框架

  4. 4

    具有DynamoDB的无服务器框架:Lambda函数有效,但数据尚未保存到DynamoDB

  5. 5

    AWS无服务器框架使用GIT进行协作

  6. 6

    无服务器框架最佳实践

  7. 7

    如何使用无服务器框架通过AWS Lambda函数环境变量访问SSM参数存储值?

  8. 8

    无服务器框架TypeError:e不是函数

  9. 9

    使用graphql,aws lambda和无服务器框架的多个URL路径选项错误

  10. 10

    无服务器框架Python lambda直接返回JSON

  11. 11

    在无服务器框架中使用路径参数

  12. 12

    使用无服务器框架模拟响应数据

  13. 13

    如何引用使用无服务器框架创建的Arn和AWS lambda函数的名称

  14. 14

    使用无服务器框架(AWS Lambda / Gateway),Express,Mongoose / MongoDB Atlas的应用频繁超时

  15. 15

    如何使用适用于AWS Lambda的无服务器框架获取最新的Layer版本

  16. 16

    无服务器框架:无服务器错误功能未找到:

  17. 17

    AWS Lambda:通过无服务器框架部署时,“ ELF加载命令地址/偏移未正确对齐”

  18. 18

    无服务器框架-用于预定义的Cloud Front分布的Lambda @ Edge部署

  19. 19

    psycopg2不适用于AWS Lambda上的无服务器框架部署

  20. 20

    AWS无服务器:基于请求或HTTP API参数强制并行执行lambda

  21. 21

    无服务器框架-无法识别的属性“参数”

  22. 22

    无服务器添加假定角色以允许CloudWatch调用Lambda

  23. 23

    在无服务器框架中从Lambda访问非公共RDS实例

  24. 24

    微服务与Lambda与无服务器功能之间的差异

  25. 25

    无服务器框架Postgresql版本升级问题

  26. 26

    AWS无服务器框架使用GIT进行协作

  27. 27

    如何在无服务器框架中将托管策略附加到lambda函数

  28. 28

    在无服务器中手动创建角色而不是无服务器创建角色

  29. 29

    无服务器框架输出

热门标签

归档