Amazon web services AWS lambda使用启动模板创建ec2实例,boto3仅使用所需权限
我无法为lambda函数承担的IAM角色设置正确的权限。lambda的目的是使用提供的启动模板启动ec2实例。但是,我不断发现Amazon web services AWS lambda使用启动模板创建ec2实例,boto3仅使用所需权限,amazon-web-services,amazon-ec2,aws-lambda,boto3,Amazon Web Services,Amazon Ec2,Aws Lambda,Boto3,我无法为lambda函数承担的IAM角色设置正确的权限。lambda的目的是使用提供的启动模板启动ec2实例。但是,我不断发现您无权执行此操作。由于IAM角色权限不正确而导致错误 我目前对该角色的唯一政策是: { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow",
您无权执行此操作。
由于IAM角色权限不正确而导致错误
我目前对该角色的唯一政策是:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": "arn:aws:logs:*:*:*"
},
{
"Effect": "Allow",
"Action": [
"ec2:RunInstances",
"ec2:GetLaunchTemplateData"
],
"Resource": "*"
}
]
}
Lambda boto3/python代码:
import boto3
ec2 = boto3.resource('ec2')
lt = {
# 'LaunchTemplateId': 'lt-0b91c7e5c5437a1c1',
'LaunchTemplateName': 'template_name',
'Version': '$Latest'
}
def handler(event, context):
instances = ec2.create_instances(
LaunchTemplate=lt,
MinCount=1,
MaxCount=1
# UserData=user_data
)
注意:如果我将AmazonEC2FullAccess
AWS管理的策略附加到lambda角色,它可以正常工作
我错过了什么
此外,是否有一种简单的方法可以找到资源运行所需的“最低限度”IAM策略权限?
通常,RunInstances
权限不足以启动实例。所需的权限取决于实例的功能,例如使用KMS加密卷、iam实例角色/配置文件、设置标记等
在OPs案例中,要启动的实例使用的是标记,因此需要
ec2:CreateTags
权限才能使其工作。取决于实例的功能。它使用实例角色还是密钥对?所有额外的东西都有自己的权限。已启动的EC2实例没有附加任何角色(即,我正在使用的启动模板没有附加启动配置文件)。启动模板也有一个密钥对。是吗?@Marcin我看了一下我的启动模板,它确实在模板中启动的实例上设置了一些标记。因此,在修改上述角色以包括CreateTags
操作之后,它工作得很好。非常感谢你!我不知道权限也应该包括启动模板创建的所有资源。经验教训:)很高兴它成功了。如果你不介意的话,我会提供一个答案供将来参考。那太好了:)再次谢谢你!