【发布时间】:2017-09-25 22:55:59
【问题描述】:
我是无服务器框架的新手,我想获取实例的状态,所以我使用了 boto3 describe-instance-status(),但我不断收到错误消息,我无权执行此类操作,尽管我拥有对所有 aws 服务的管理员访问权限;请帮忙,我是否需要更改或添加一些要识别的内容
这是我的代码:
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
这是我的 serverless.yml 文件
service: ec2
provider:
name: aws
runtime: python2.7
timeout: 30
memorySize: 128
stage: dev
region: us-east-1
iamRoleStatements:
- Effect: "Allow"
Action:
- "ec2:DescribeInstanceStatus"
Resource: "*"
functions:
instance_status:
handler: handler.instance_status
description: Status ec2 instances
events:
- http:
path: ''
method: get
这是我收到的错误消息:
"errorType": "ClientError", "errorMessage": "发生错误 (UnauthorizedOperation) 调用 DescribeInstanceStatus 时 操作:您无权执行此操作。”
【问题讨论】:
-
您使用的是 lambda?您的 lambda 的 IAM 角色使用什么?该 IAM 角色有权执行 EC2 的资源吗?仔细检查此角色的权限。
-
我没有指定角色,我可以在 serverless.yml 中这样做吗?使用 boto3 库最方便的是女巫角色
-
请分享您与该角色相关的 IAM 政策。
标签: python-2.7 amazon-web-services amazon-ec2 boto3 serverless-framework