Python 2.7 从Lambda执行ssm.send_命令到EC2。IAM问题
我在Windows机器上使用Python中的ssm.send_命令从Lambda函数执行命令时遇到问题。此Lambda函数应在windows计算机上执行简单命令: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(
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
- AWSHealthFullAccess
- 亚马逊河流域
- AWSConfigUserAccess
- AmazonSmFullAccess
- CloudWatch只读访问
- AWSHealthFullAccess
- 亚马逊河流域
- AWSConfigUserAccess
- AmazonSmFullAccess
- CloudWatch只读访问
- 谢谢@fsinis90的推荐
我尝试了这些策略,并将这些策略添加到实例的角色中:
这很有帮助。谢谢@fsinis90的推荐 我尝试了这些策略,并将这些策略添加到实例的角色中:
这是有帮助的。这是可行的,但请注意重要的安全隐患。任何具有SSM命令访问权限的用户现在都可以读取并放入所有s3存储桶,以及其他问题:。如果可以,请使用
AmazonSmManagedInstanceCore
。这是可行的,但请注意重要的安全隐患。任何h SSM命令访问现在可以读取并放入所有s3存储桶,还有其他问题:。如果可以,请改用amazonsmsmanagedinstancecore
。