2017-01-09 47 views
1

我拉姆達代碼:AWS LAMBDA代碼拋出 「(UnauthorizedOperation)調用StartInstances操作時發生錯誤

instances = [aws_instance] 

ec2 = boto3.client('ec2',region_name="us-west-2") 
if task == 'start': 
    ec2.start_instances(InstanceIds=instances) 

我的IAM用戶策略:

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Effect": "Allow", 
      "Action": [ 
       "ec2:DescribeInstances", 
       "ec2:DescribeVolumes", 
       "ec2:StartInstances", 
       "ec2:StopInstances", 
       "ec2:CreateSnapshot", 
       "ec2:DeleteSnapshot", 
       "ec2:DescribeSnapshots", 
     } 
```  "ec2:RunInstances", 
       "ec2:CopySnapshot", 
       "ec2:CreateTags", 
       "rds:DescribeDBInstances", 
       "rds:CreateDBSnapshot", 
       "rds:DeleteDBSnapshot", 
       "rds:DescribeDBSnapshots", 
       "rds:ListTagsForResource", 
       "lambda:AddPermission", 
       "lambda:CreateFunction", 
       "lambda:InvokeFunction", 
       "apigateway:PUT", 
       "apigateway:POST", 
       "apigateway:GET", 
       "ssm:SendCommand" 
      ], 
      "Resource": [ 
       "*" 
      ] 
     } 
    ] 
} 

此拋出錯誤」 錯誤發生(UnauthorizedOperation)調用StartInstances操作時:您沒有權限來執行此操作「

C:\ Program Files文件\微軟的Visual Studio 11.0> AWS --re祗園美西2 EC2啓動實例--instance-ID的i-cd2cb9d5

工作正常。

我無法理解,爲什麼lambda函數說,我不允許執行「start_instances」

回答

0

您的拉姆達不使用IAM用戶,而是一個IAM執行角色。 您可以在「配置」選項卡>>「現有角色」中檢查與Lambda關聯的角色。 然後,您可以在IAM中找到角色並將策略添加到該角色。

控制檯可能產生的電流作用,爲你和它僅允許在CloudWatch的編寫。可以「手動」創建此角色。使用以下信任關係能夠爲它關聯到一個LAMBDA:

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
    { 
     "Effect": "Allow", 
     "Principal": { 
     "Service": "lambda.amazonaws.com" 
     }, 
     "Action": "sts:AssumeRole" 
    } 
    ] 
} 

More about creating an execution role for Lambda

+0

附加到角色的方針是: { 「版本」:「2012年10月17日」, 「聲明」:[{ 「效果」: 「允許」, 「操作」:[ 「拉姆達:InvokeFunction」, 「拉姆達:CreateFunction」 ], 「資源」:[ 「*」 ] } ] } –

+1

因此,此Lambda可以創建並調用其他Lambda,但不能啓動EC2實例。 –

+0

謝謝亞歷克西斯。我得到了這個問題。 –

相關問題