在 EC2 上使用 SSM 运行 命令执行 Lambda 函数时访问被拒绝
Access Denied when executing Lambda Function with SSM Run Command on EC2
我有一个 EC2 实例,上面有一些我想在每天特定时间 运行 执行的脚本。为了自动执行此操作,我使用 https://gist.github.com/lrakai/18303e1fc1fb1d8635cc20eee73a06a0 中的代码实现了一个 lambda 函数,以适应我的区域、实例和 shell 命令。我打算 link 将它发送到 EventBridge 以进行计划执行。
我的 EC2 安装并更新了 SSM 代理,我的 Lambda 函数具有以下策略:AWSEC2FullAccess 和另一个使用日志组的自定义生成策略。
测试功能时,出现以下错误:
An error occurred (AccessDeniedException) when calling the SendCommand operation: user [my Lambda's ARN] is not authorized to perform: ssm:SendCommand on resource: [my EC2 ARN] because no identity-based policy allows the ssm:SendCommand action", "errorType": "ClientError"
我找不到我需要附加到 Lambda 函数的角色以允许此操作通过的策略,而且我不确定创建一个资源时要指定哪些资源。
PS。我尝试了一种替代架构,直接使用带有目标系统管理器 运行 命令和目标键“InstanceIds”、目标值 [我的实例 ID] 和常量参数部分中的命令的 EventBridge 规则,但它没有不幸的是工作,所以我正在尝试这种方式。
如有必要,很乐意提供更多信息,感谢任何线索。
arn:aws:iam::aws:policy/AmazonEC2FullAccess
不包含 ssm
权限。要纠正您可以将 inline policy 添加到您的函数角色:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "ssm:SendCommand",
"Resource": "*"
}
]
}
您可以将 *
替换为您要使用的命令的 ARN 以更加明确。
我有一个 EC2 实例,上面有一些我想在每天特定时间 运行 执行的脚本。为了自动执行此操作,我使用 https://gist.github.com/lrakai/18303e1fc1fb1d8635cc20eee73a06a0 中的代码实现了一个 lambda 函数,以适应我的区域、实例和 shell 命令。我打算 link 将它发送到 EventBridge 以进行计划执行。
我的 EC2 安装并更新了 SSM 代理,我的 Lambda 函数具有以下策略:AWSEC2FullAccess 和另一个使用日志组的自定义生成策略。 测试功能时,出现以下错误:
An error occurred (AccessDeniedException) when calling the SendCommand operation: user [my Lambda's ARN] is not authorized to perform: ssm:SendCommand on resource: [my EC2 ARN] because no identity-based policy allows the ssm:SendCommand action", "errorType": "ClientError"
我找不到我需要附加到 Lambda 函数的角色以允许此操作通过的策略,而且我不确定创建一个资源时要指定哪些资源。
PS。我尝试了一种替代架构,直接使用带有目标系统管理器 运行 命令和目标键“InstanceIds”、目标值 [我的实例 ID] 和常量参数部分中的命令的 EventBridge 规则,但它没有不幸的是工作,所以我正在尝试这种方式。
如有必要,很乐意提供更多信息,感谢任何线索。
arn:aws:iam::aws:policy/AmazonEC2FullAccess
不包含 ssm
权限。要纠正您可以将 inline policy 添加到您的函数角色:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "ssm:SendCommand",
"Resource": "*"
}
]
}
您可以将 *
替换为您要使用的命令的 ARN 以更加明确。