Amazon web services AWS lambda使用启动模板创建ec2实例,boto3仅使用所需权限

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",

我无法为lambda函数承担的IAM角色设置正确的权限。lambda的目的是使用提供的启动模板启动ec2实例。但是,我不断发现
您无权执行此操作。
由于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
操作之后,它工作得很好。非常感谢你!我不知道权限也应该包括启动模板创建的所有资源。经验教训:)很高兴它成功了。如果你不介意的话,我会提供一个答案供将来参考。那太好了:)再次谢谢你!