无法将触发器添加到 AWS Lambda
Unable to add trigger to AWS Lambda
我正在尝试将 SQS 作为触发器添加到我在 AWS-VPC 中的 Lambda 函数 运行 但它抛出错误为:
An error occurred when creating the trigger: The provided execution role does not have permissions to call ReceiveMessage on SQS (Service: AWSLambda; Status Code: 400; Error Code: InvalidParameterValueException; Request ID: d34b7525-5c69-4434-a015-112e8e74f447; Proxy: null)
Tried via adding AWSLambdaVPCAccessExecutionRole
to the policy for
the role as well via IAM. But no luck!
我想不通我哪里出错了?请帮助我,如果有人过去有类似的经验或知道如何解决它。提前谢谢你!
请在您的 lambda 执行角色中附加托管策略 AWSLambdaSQSQueueExecutionRole
。
如果您的 lambda 函数与任何其他 aws 服务一起使用,您可以尝试创建自定义角色并添加特定权限。
在 aws 中,如果任何服务想要访问任何其他服务,您需要角色中的那些特定权限。
有关 lambda 权限的更多信息,请查看 Managed lambda permissions
您需要将以下操作添加到附加到您的 lambda 的 IAM 角色中:
- sqs:ReceiveMessage
- sqs:删除消息
- sqs:GetQueueAttributes
否则您的 lambda 将无法从队列中接收任何消息。 DeleteMessage 操作允许在消息成功处理后从队列中删除消息。作为资源设置 SQS 队列的 ARN。政策应如下所示:
{
"Action": [
"sqs:DeleteMessage",
"sqs:ReceiveMessage",
"sqs:GetQueueAttributes"
],
"Resource": "arn:aws:sqs:region:accountid:queuename",
"Effect": "Allow"
}
如果您正在寻找托管策略,请查看 AWSLambdaSQSQueueExecutionRole。
附加一个 lambda 角色的策略,如果您需要从这个 lambda 调用另一个 lambda,您可能需要更改 account_number 到您的帐户否
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Action": "lambda:InvokeFunction",
"Resource": "arn:aws:lambda:**eu-west-1**:**account_number:function**:*"
},
{
"Sid": "",
"Effect": "Allow",
"Action": [
"logs:PutLogEvents",
"logs:CreateLogStream",
"logs:CreateLogGroup"
],
"Resource": "*"
},
{
"Sid": "",
"Effect": "Allow",
"Action": [
"sqs:*"
],
"Resource": "*"
}
]
}
我正在尝试将 SQS 作为触发器添加到我在 AWS-VPC 中的 Lambda 函数 运行 但它抛出错误为:
An error occurred when creating the trigger: The provided execution role does not have permissions to call ReceiveMessage on SQS (Service: AWSLambda; Status Code: 400; Error Code: InvalidParameterValueException; Request ID: d34b7525-5c69-4434-a015-112e8e74f447; Proxy: null)
Tried via adding
AWSLambdaVPCAccessExecutionRole
to the policy for the role as well via IAM. But no luck!
我想不通我哪里出错了?请帮助我,如果有人过去有类似的经验或知道如何解决它。提前谢谢你!
请在您的 lambda 执行角色中附加托管策略 AWSLambdaSQSQueueExecutionRole
。
如果您的 lambda 函数与任何其他 aws 服务一起使用,您可以尝试创建自定义角色并添加特定权限。
在 aws 中,如果任何服务想要访问任何其他服务,您需要角色中的那些特定权限。
有关 lambda 权限的更多信息,请查看 Managed lambda permissions
您需要将以下操作添加到附加到您的 lambda 的 IAM 角色中:
- sqs:ReceiveMessage
- sqs:删除消息
- sqs:GetQueueAttributes
否则您的 lambda 将无法从队列中接收任何消息。 DeleteMessage 操作允许在消息成功处理后从队列中删除消息。作为资源设置 SQS 队列的 ARN。政策应如下所示:
{
"Action": [
"sqs:DeleteMessage",
"sqs:ReceiveMessage",
"sqs:GetQueueAttributes"
],
"Resource": "arn:aws:sqs:region:accountid:queuename",
"Effect": "Allow"
}
如果您正在寻找托管策略,请查看 AWSLambdaSQSQueueExecutionRole。
附加一个 lambda 角色的策略,如果您需要从这个 lambda 调用另一个 lambda,您可能需要更改 account_number 到您的帐户否
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Action": "lambda:InvokeFunction",
"Resource": "arn:aws:lambda:**eu-west-1**:**account_number:function**:*"
},
{
"Sid": "",
"Effect": "Allow",
"Action": [
"logs:PutLogEvents",
"logs:CreateLogStream",
"logs:CreateLogGroup"
],
"Resource": "*"
},
{
"Sid": "",
"Effect": "Allow",
"Action": [
"sqs:*"
],
"Resource": "*"
}
]
}