Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 使用无服务器获取实例';s状态_Python 2.7_Amazon Web Services_Amazon Ec2_Boto3_Serverless Framework - Fatal编程技术网

Python 2.7 使用无服务器获取实例';s状态

Python 2.7 使用无服务器获取实例';s状态,python-2.7,amazon-web-services,amazon-ec2,boto3,serverless-framework,Python 2.7,Amazon Web Services,Amazon Ec2,Boto3,Serverless Framework,我是无服务器框架的新手,我想获得一个实例的状态,所以我使用了boto3descripe-instance-status(),但我不断得到错误,我没有被授权执行这种操作,尽管我拥有对所有aws服务的管理员访问权限;请帮助,我是否需要更改或添加要识别的内容 这是我的密码: import json import boto3 import logging import sys #setup simple logging for INFO logger = logging.getLogger() log

我是无服务器框架的新手,我想获得一个实例的状态,所以我使用了boto3
descripe-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”:“发生错误” (未经授权的操作)调用DescribeInstanceStatus时 操作:您无权执行此操作。“

您无权执行此操作

这意味着您无权执行此操作
客户端。请描述\u实例\u状态

有一些方法可以使您的功能获得正确的权限:

  • 使用IAM角色:根据您的要求创建具有权限的IAM角色。然后在设置页面中为lambda函数分配此IAM角色。因此,您的lambda将自动获取旋转关键点以执行操作
  • 根据您的要求创建具有权限的AccessKey/SecretKey。在yaml文件中的lambda函数中,设置boto3以获取这些访问/加密密钥,然后执行操作
  • 请阅读更多相关内容

    …我有管理员权限访问所有aws服务

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

    serverless.yaml
    中的
    provider
    部分,添加以下内容:

    iamRoleStatements:
      - Effect: Allow
        Action:
          - ec2:DescribeInstanceStatus
        Resource: <insert your resource here>
    
    IAM角色声明:
    -效果:允许
    行动:
    -ec2:描述安装状态
    资源:
    

    参考资料:

    您正在使用lambda?您的lambda的IAM角色使用什么?该IAM角色具有执行EC2资源的权限?仔细检查此角色的权限。我没有指定角色,是否可以在serverless.yml中执行此操作?witch角色是使用Bot3 Library最方便的角色。请共享您的IAM策略随角色一起使用。我确实在aws控制台中手动更改了角色,以便在Bot3上进行访问,它在aws控制台中工作正常,但当我使用http端点测试它时,它会给我{“消息”:“内部服务器错误”}因此,我认为我需要在serverless.yml文件中添加一些内容,但不知道如何使用serverless执行此操作。我做了同样的事情,但不知道为什么我不断收到相同的错误。请更新原始问题中的
    serverless.yml
    。可能
    资源
    不正确?还是缩进?我刚做了,如果不是太多要求,你能检查一下它是否正确。你重新部署了吗?在部署期间或调用HTTP端点时,何时会出现错误?仔细检查Lambda控制台中的内容。我在调用http端点时出错,在Lambda控制台中,它运行正常,我得到实例的状态没有问题,我检查了配置区域,我有以下角色: