Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 无法修复提供的执行角色没有在EC2上调用CreateNetworkInterface的权限_Amazon Web Services_Aws Lambda_Serverless Framework_Serverless - Fatal编程技术网

Amazon web services 无法修复提供的执行角色没有在EC2上调用CreateNetworkInterface的权限

Amazon web services 无法修复提供的执行角色没有在EC2上调用CreateNetworkInterface的权限,amazon-web-services,aws-lambda,serverless-framework,serverless,Amazon Web Services,Aws Lambda,Serverless Framework,Serverless,我正在尝试使用VPC部署,这是我的serverless.yaml vpcSettings: &vpcSettings vpc: ${self:custom.allVpcSettings.${self:provider.stage}.vpc} provider: name: aws runtime: nodejs10.x stage: ${opt:stage, 'local'} region: us-west-1 memorySize: 256 timeou

我正在尝试使用VPC部署,这是我的serverless.yaml


vpcSettings: &vpcSettings
  vpc: ${self:custom.allVpcSettings.${self:provider.stage}.vpc}

provider:
  name: aws
  runtime: nodejs10.x
  stage: ${opt:stage, 'local'}
  region: us-west-1
  memorySize: 256
  timeout: 30
  deploymentPrefix: fs-sls-${self:provider.stage}-deploy
  deploymentBucket: fs-serverless-deployment
  variables: ${file(.env.${opt:stage, self:provider.stage}.json)}
  environment:
    NODE_ENV: ${self:provider.variables.NODE_ENV}

functions:
  ping:
    handler: src/handler.ping
    description: Let us know if the service is up and running
    events:
      - http:
          path: ping
          method: get
          cors: true
  graphql:
    handler: src/handler.graphqlHandler
    <<: *vpcSettings
    description: One function where all GQL request comes
    memorySize: 1024
    events:
      - http:
          path: graphql
          method: post
          cors: true
      - http:
          path: graphql
          method: get
          cors: true

plugins:
  - serverless-offline

custom:
  serverless-offline:
    port: 6000
  allVpcSettings:
    local:
      vpc: 'This is a dummy value that should be ignored'
    dev:
      vpc:
        securityGroupIds:
          - sg-xxxxxxxxxxxxxxx
        subnetIds:
          - subnet-xxxxxxxxxxxxxxx
          - subnet-xxxxxxxxxxxxxxx
    prod:
      vpc:
        securityGroupIds:
          - sg-xxxxxxxxxxxxxxx
        subnetIds:
          - subnet-xxxxxxxxxxxxxxx
          - subnet-xxxxxxxxxxxxxxx

我为此目的创建的用户在其权限中具有AdministratorAccess和AWSLambdaVPCAccessExecutionRole。这里还需要什么

尽管为部署此lambda功能而创建的用户具有管理员访问权限,但如果要将lambda功能部署到VPC中,它本身需要网络权限

尝试在
serverless.yml
模板的
provider
块中添加这些权限:

    - Effect: Allow
      Action:
        - ec2:DescribeNetworkInterfaces
        - ec2:CreateNetworkInterface
        - ec2:DeleteNetworkInterface
        - ec2:DescribeInstances
        - ec2:AttachNetworkInterface
      Resource:
        - *

如果可行,您将希望为您的生产环境部署一个更有限的权限结构。

尽管您为部署此lambda功能而创建的用户具有管理员访问权限,但如果要将lambda功能部署到VPC中,它本身需要网络权限

尝试在
serverless.yml
模板的
provider
块中添加这些权限:

    - Effect: Allow
      Action:
        - ec2:DescribeNetworkInterfaces
        - ec2:CreateNetworkInterface
        - ec2:DeleteNetworkInterface
        - ec2:DescribeInstances
        - ec2:AttachNetworkInterface
      Resource:
        - *

如果这样做有效,您将需要为您的生产环境部署一个更有限的权限结构。

因此我修复了它。这意味着部署lambda的角色没有权限。因此,归根结底,这就是赋予它角色的事实。首先,确认您是否拥有该角色。 签入要在其中查找角色的图像

一旦你找不到它。你很可能不会。获取角色名称并转到IAM->Roles,搜索角色名称并将
AWSLambdaVPCAccessExecutionRole
添加到所选角色。 这应该给予它所需的权限

现在尝试部署SLS,它应该可以工作了

拥有角色后,通过添加
所以我把它修好了。这意味着部署lambda的角色没有权限。因此,归根结底,这就是赋予它角色的事实。首先,确认您是否拥有该角色。 签入要在其中查找角色的图像

一旦你找不到它。你很可能不会。获取角色名称并转到IAM->Roles,搜索角色名称并将
AWSLambdaVPCAccessExecutionRole
添加到所选角色。 这应该给予它所需的权限

现在尝试部署SLS,它应该可以工作了

拥有角色后,通过添加

Aaron,很遗憾,这对我不起作用。因此,错误会失败,说明提供的执行角色没有在EC2上调用CreateNetworkInterface的权限,该函数已成功部署。serverless何时开始创建这些角色?因为代码已成功加载,但无法将其连接到VPC,因为该角色未退出。它是否在SLS的更高版本中得到了修复,因为我有1.49.0Serverless创建lambda执行角色已经很长时间了,我不确定确切的版本,但我认为它是v.1之前的版本。此外,您发布的输出显示您正在使用v1.52.0。不管怎样,我不怀疑这是一个框架问题。您能否验证该角色是否已在AWS IAM中为此lambda函数成功创建?我不这样认为该角色是在AWS lambda中创建的。因此,我在“查看角色文档”中查看了我的权限选项卡,但在其中没有看到CreateNetworkInterface。它就在我的另一个lambda部署中,我从来没有专门给出过。所以我想知道它是怎么被删除的。我会在这附近多挖点,我修好了。见上面我的答案。谢谢你的提示。艾伦,很遗憾这对我不起作用。因此,错误会失败,说明提供的执行角色没有在EC2上调用CreateNetworkInterface的权限,该函数已成功部署。serverless何时开始创建这些角色?因为代码已成功加载,但无法将其连接到VPC,因为该角色未退出。它是否在SLS的更高版本中得到了修复,因为我有1.49.0Serverless创建lambda执行角色已经很长时间了,我不确定确切的版本,但我认为它是v.1之前的版本。此外,您发布的输出显示您正在使用v1.52.0。不管怎样,我不怀疑这是一个框架问题。您能否验证该角色是否已在AWS IAM中为此lambda函数成功创建?我不这样认为该角色是在AWS lambda中创建的。因此,我在“查看角色文档”中查看了我的权限选项卡,但在其中没有看到CreateNetworkInterface。它就在我的另一个lambda部署中,我从来没有专门给出过。所以我想知道它是怎么被删除的。我会在这附近多挖点,我修好了。见上面我的答案。谢谢你的提示。当我指定一个自定义资源时,这个解决方案不适用于我,在我的例子中是一个特定的s3存储桶。你知道我该怎么解决这个问题吗?错误消息是相同的,但它在设置“Resource”:“*”时起作用。当我指定自定义资源时,此解决方案不适用于我,在我的示例中是指定的s3 bucket。你知道我该怎么解决这个问题吗?错误消息是相同的,但在设置“Resource”:“*”时,它会起作用。