Python 2.7 从Lambda执行ssm.send_命令到EC2。IAM问题

Python 2.7 从Lambda执行ssm.send_命令到EC2。IAM问题,python-2.7,amazon-web-services,aws-lambda,amazon-iam,Python 2.7,Amazon Web Services,Aws Lambda,Amazon Iam,我在Windows机器上使用Python中的ssm.send_命令从Lambda函数执行命令时遇到问题。此Lambda函数应在windows计算机上执行简单命令: import boto3 ssm = boto3.client('ssm') region = 'us-east-1' instances = ['i-XXXXXXXXXXXXX'] def lambda_handler(event, context): response = ssm.send_command(

我在Windows机器上使用Python中的ssm.send_命令从Lambda函数执行命令时遇到问题。此Lambda函数应在windows计算机上执行简单命令:

import boto3
ssm = boto3.client('ssm')
region = 'us-east-1'
instances = ['i-XXXXXXXXXXXXX']

def lambda_handler(event, context):
    response = ssm.send_command(
        InstanceIds=instances,
        DocumentName='AWS-RunPowerShellScript',
        DocumentVersion='$DEFAULT',
        DocumentHash='2142e42a19e0955cc09e43600bf2e633df1917b69d2be9693737dfd62e0fdf61',
        DocumentHashType='Sha256',
        TimeoutSeconds=123,
        Comment='string',
        Parameters={
            'commands': [
#                'query user'
                'mkdir test-dir'
            ]
        },
        MaxErrors='1',
        CloudWatchOutputConfig={
            'CloudWatchLogGroupName': 'WindowsLogs',
            'CloudWatchOutputEnabled': True
        }
    )
    print response
此L函数的执行角色为

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm:SendCommand"
            ],
            "Resource": [
                "arn:aws:ssm:*:*:document/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "ssm:SendCommand"
            ],
            "Resource": [
                "arn:aws:ec2:*:*:instance/*",
                "arn:aws:ec2:*:*:*"
            ]
        },
        {
            "Action": [
                "iam:PassRole"
            ],
            "Effect": "Allow",
            "Resource": "*"
        }
    ]
}
我还增加了一些政策:

AmazonEC2FullAccess

AmazoneC2RoleForSM

amazonsmsmanagedinstancecore

CloudWatchLogsFullAccess

AmazonSmFullAccess

AmazonSSMAutomationRole

AmazonSM维护窗口角色

对于EC2,未分配任何角色

问题:我看不到Windows server上创建了文件夹“test dir”。请帮助我确定缺少什么,或者如何配置Lambda函数以执行命令并将结果发送到CloudWatch


谢谢。

您需要将
amazonsmFullAccess
策略分配给该实例,否则它将无法工作。 请确保在更改后重新启动实例

如果这不起作用:

  • 在代码中添加
    try
    except
    块以检查错误
  • 检查实例上是否安装了SSMAgent(连接到它,打开PowerShell并执行
    重新启动服务AmazonSmagent

您需要将
AmazonSmFullAccess
策略分配给实例,否则它将无法工作。 请确保在更改后重新启动实例

如果这不起作用:

  • 在代码中添加
    try
    except
    块以检查错误
  • 检查实例上是否安装了SSMAgent(连接到它,打开PowerShell并执行
    重新启动服务AmazonSmagent

    • 谢谢@fsinis90的推荐

      我尝试了这些策略,并将这些策略添加到实例的角色中:

      • AWSHealthFullAccess
      • 亚马逊河流域
      • AWSConfigUserAccess
      • AmazonSmFullAccess
      • CloudWatch只读访问

      这很有帮助。

      谢谢@fsinis90的推荐

      我尝试了这些策略,并将这些策略添加到实例的角色中:

      • AWSHealthFullAccess
      • 亚马逊河流域
      • AWSConfigUserAccess
      • AmazonSmFullAccess
      • CloudWatch只读访问

      这是有帮助的。

      这是可行的,但请注意重要的安全隐患。任何具有SSM命令访问权限的用户现在都可以读取并放入所有s3存储桶,以及其他问题:。如果可以,请使用
      AmazonSmManagedInstanceCore
      。这是可行的,但请注意重要的安全隐患。任何h SSM命令访问现在可以读取并放入所有s3存储桶,还有其他问题:。如果可以,请改用
      amazonsmsmanagedinstancecore