fis*_*eep 70 policy role amazon-web-services amazon-iam aws-lambda
今天我有一个新的 AWS Lambda 问题,在谷歌找不到任何地方。
我新建了一个 Lambda 函数,毫无疑问。但是当我在这个函数中输入任何代码时[例如。console.log();] 并单击“保存”,出现错误:“提供的执行角色无权调用 EC2 上的 DescribeNetworkInterfaces”
exports.handler = (event, context, callback) => {
callback(null, 'Hello from Lambda');
console.log(); // here is my code
};
Run Code Online (Sandbox Code Playgroud)
我将函数与 Role 绑定: lambda_excute_execution(Policy:AmazonElasticTranscoderFullAccess) 并且此函数现在未与任何触发器绑定。
然后,我给角色“AdministratorAccess”策略,我可以正确保存我的源代码。
此角色可以在今天之前成功运行 Functions。
有人知道这个错误吗?
非常感谢!
Phi*_*ßen 142
如果您尝试部署在VPC拉姆达没有给它所需的网络接口相关的权限此错误是常见的ec2:DescribeNetworkInterfaces
,ec2:CreateNetworkInterface
和ec2:DeleteNetworkInterface
(见AWS论坛)。
例如,这是一个允许将 Lambda 部署到 VPC 的策略:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ec2:DescribeNetworkInterfaces",
"ec2:CreateNetworkInterface",
"ec2:DeleteNetworkInterface",
"ec2:DescribeInstances",
"ec2:AttachNetworkInterface"
],
"Resource": "*"
}
]
}
Run Code Online (Sandbox Code Playgroud)
And*_*aal 47
这实际上是一个很常见的问题。
您可以通过将自定义内联策略添加到“权限”选项卡下的 Lambda 执行角色来解决此问题。
只需添加以下内容:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ec2:DescribeNetworkInterfaces",
"ec2:CreateNetworkInterface",
"ec2:DeleteNetworkInterface",
"ec2:DescribeInstances",
"ec2:AttachNetworkInterface"
],
"Resource": "*"
}
]
}
Run Code Online (Sandbox Code Playgroud)
如果您需要更多信息( Terraform、CloudFormation 和 AWS 控制台)或感到困惑,这里有一个带图片的完整教程: https ://ataiva.com/the-provided-execution-role-does-not-have-permissions-to -call-createnetworkinterface-on-ec2/
此外,最近的一系列步骤如下:
Sté*_*ert 40
如果您使用 terraform,只需添加:
resource "aws_iam_role_policy_attachment" "AWSLambdaVPCAccessExecutionRole" {
role = aws_iam_role.lambda.name
policy_arn = "arn:aws:iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole"
}
Run Code Online (Sandbox Code Playgroud)
Cul*_*n D 22
似乎已经有很多不同的方式回答了这个问题,但截至本文发布时,AWS 已经有了托管策略。如果您只搜索AWSLambdaVPCAccessExecutionRole,您将能够附加它,并且此方法对我有用。
这是阿恩:
arn:aws:iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole
Run Code Online (Sandbox Code Playgroud)
fus*_*n27 14
AWSLambdaVPCAccessExecutionRole
托管策略非常适合(我们都知道使用 IAM 托管策略是 AWS 推荐的最佳实践)。aws lambda get-function-configuration \
--function-name <<your function name or ARN here>> \
--query Role \
--output text
Run Code Online (Sandbox Code Playgroud)
your-service-role-name
前往#2
your-service-role-name
Run Code Online (Sandbox Code Playgroud)
AWSLambdaVPCAccessExecutionRole
到服务角色aws iam attach-role-policy \
--role-name your-service-role-name \
--policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole
Run Code Online (Sandbox Code Playgroud)
Jan*_*ola 10
Cloudformation 和 AWS SAM 用户的示例。
此示例 lambda 角色定义添加了托管角色AWSLambdaVPCAccessExecutionRole
并解决了问题:
Type: "AWS::IAM::Role"
Properties:
RoleName: "lambda-with-vpc-access"
ManagedPolicyArns:
- "arn:aws:iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole"
AssumeRolePolicyDocument:
Version: "2012-10-17"
Statement:
- Effect: Allow
Action:
- sts:AssumeRole
Principal:
Service:
- lambda.amazonaws.com
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
62181 次 |
最近记录: |