使用无服务器来获取实例的状态

时间:2017-09-25 08:19:04

标签: python-2.7 amazon-web-services amazon-ec2 boto3 serverless-framework

我是无服务器框架的新手,我想得到一个实例的状态,所以我使用了boto3 getClass(),但我一直得到错误,我没有被授权执行这种操作,尽管我有管理员访问权限服务;请帮助,我需要更改,或添加要识别的内容

这是我的代码:

describe-instance-status()

这是我的serverless.yml文件

import json
import boto3
import logging
import sys

#setup simple logging for INFO
logger = logging.getLogger()
logger.setLevel(logging.INFO)

from botocore.exceptions import ClientError


def  instance_status(event, context):
"""Take an instance Id and return its status"""
#print "ttot"
body = {}
status_code = 200
client = boto3.client('ec2')
response = client.describe_instance_status(InstanceIds=['i-070ad071'])

return response

以下是我收到的错误消息:

  

“errorType”:“ClientError”,“errorMessage”:“发生错误   (UnauthorizedOperation)调用DescribeInstanceStatus时   操作:您无权执行此操作。“

2 个答案:

答案 0 :(得分:1)

  

...我拥有所有aws服务的管理员权限......

请注意,Lambda函数未在您的用户帐户下运行。您应该在YAML中定义其角色和权限。

provider的{​​{1}}部分中,添加以下内容:

serverless.yaml

参考:https://serverless.com/framework/docs/providers/aws/guide/iam/

答案 1 :(得分:0)

  

您无权执行此操作

这表示您无权执行此操作client.describe_instance_status

有一些方法可以让你的功能得到正确的许可:

  1. 使用IAM角色:根据您的要求创建具有权限的IAM角色。然后在设置页面中为lambda函数分配此IAM角色。所以你的lambda会自动获得旋转键来执行操作。
  2. 根据您的要求创建AccessKey / SecretKey权限。在yaml文件中设置lambda函数,设置boto3以获取这些access / secretKey,然后执行操作。
  3. 从此http://docs.aws.amazon.com/lambda/latest/dg/intro-permission-model.html

    了解详情
相关问题