Amazon web services 无法修复提供的执行角色没有在EC2上调用CreateNetworkInterface的权限
我正在尝试使用VPC部署,这是我的serverless.yamlAmazon 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
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”:“*”时,它会起作用。