Python AWS lambda,未知服务:';quicksight';

Python AWS lambda,未知服务:';quicksight';,python,amazon-web-services,lambda,boto3,Python,Amazon Web Services,Lambda,Boto3,我正在使用boto3 API从lambda在quicksight中创建组,具有quicksight的角色完全访问权限 import boto3 quicksight_client = boto3.client('quicksight', region_name='us-east-1', aws_access_key_id=ACCESS_ID, aws_secr

我正在使用boto3 API从lambda在quicksight中创建组,具有quicksight的角色完全访问权限

import boto3

quicksight_client = boto3.client('quicksight', region_name='us-east-1', 
                                 aws_access_key_id=ACCESS_ID, 
                                 aws_secret_access_key=ACCESS_KEY)

def lambda_handler(event, context):
    # list groups present in quicksight
    response = quicksight_client.list_groups(
        AwsAccountId=event['AWS Account ID'],
        Namespace='default'
    )
面对跟随误差

未知服务:“quicksight”。有效的服务名称为:acm、acm pca、alexaforbusiness、apigateway、应用程序自动缩放、appstream、appsync、athena、自动缩放、自动缩放计划、批处理、预算、ce、cloud9、clouddirectory、cloudformation、cloudfront、cloudhsm、cloudhsmv2、cloudsearch、cloudsearchdomain、cloudtrail、cloudwatch、codebuild、codecommit、codedeploy、,代码管道、代码之星、cognito标识、cognito idp、cognito同步、理解、配置、连接、cur、数据管道、dax、devicefarm、directconnect、发现、dlm、dms、ds、dynamodb、dynamodb流、ec2、ecs、ecs、efs、eks、elasticache、elasticbeanstalk、elastictranscoder、elb、elbv2、emr、es、事件、消防软管、fms、gamelift、glacier、glue、,绿草、警卫、健康、iam、进口、检查员、物联网、物联网数据、物联网作业数据、物联网点击设备、物联网点击项目、物联网分析、动觉、动觉视频存档媒体、动觉视频媒体、动觉分析、动觉视频、kms、lambda、lex模型、lex运行时、lightsail、日志、机器学习、macie、市场授权、,marketplacecommerceanalytics、mediaconvert、medialive、mediapackage、mediastore、mediastore数据、mediatailor、meteringmarketplace、mgh、mobile、mq、mturk、neptune、opsworks、opsworkscm、organizations、pi、pinpoint、polly、pricing、rds、redshift、Rekognation、资源组、ResourceGroupStagingAPI、route53、route53域、s3、sagemaker、,sagemaker运行时、sdb、secretsmanager、serverlessrepo、servicecatalog、servicediscovery、ses、shield、sms、snowball、sns、sqs、ssm、stepfunctions、storagegateway、sts、support、swf、转录、翻译、waf、waf regional、workdocs、workmail、Workspace、X射线

当从我的计算机上执行相同的代码时,它会工作,但不会从lambda执行


有人能帮我解决这个问题吗?

哪些AWS服务受
boto3
的支持不是在中直接定义的,而是在中定义的。对于Quicksight支持,您至少需要
botocore
1.12.49
版本,这是添加Quicksight支持的版本(尽管更改日志错误地提到)

使用AWS Lambda时,您可以使用AWS提供的
boto3
版本,也可以捆绑自己的版本。当您使用AWS提供的版本时,您的代码当前使用的是过时的版本,因为AWS已经有一段时间没有更新它们了。这些旧版本还不支持Quicksight

我们只能推测为什么AWS停止更新AWS Lambda环境的
botocore
boto3
,但这可能与和引入的一些向后不兼容的更改有关


为了解决您的问题,您可以将支持Quicksight的最新版本的
botocore
boto3
添加到您的中,以使用它们,而不是AWS提供的。

我使用boto3-1.9.71和botocore-1.12.71进行了测试,效果良好

打包最新版本boto3的步骤

  • 在本地计算机上为lambda函数创建一个目录
  • 使用下面的命令将最新的boto3安装到新目录中

    pip安装boto3——目标/path/到/your/目录

  • 导航到新目录并创建名为lambda_function.py(或任意名称)的新文件。确保将filename.function name作为处理程序
  • 将下面的代码粘贴到.py文件中

    进口boto3 打印(boto3.版本) client=bot3.client('quicksight',region_name='us-east-1') 响应=client.list\u组( AwsAccountId='0123456789', Namespace='default' )

  • 您可以使用适当的访问密钥/配置文件在本地计算机上执行此py文件,以测试正在创建的客户端

  • 现在从新目录中选择所有目录和文件,并创建一个zip文件
  • 将此zip文件上载到lambda,您应该能够无错误地执行该函数

  • 您安装了什么版本的boto3和botocore?很可能你需要更新你的库。我正在使用AWS lambda,它已经预装了两个。你在AWS lambda上执行时得到了吗?您正在使用lambda代码编辑器吗?是的,我在使用aws lambda代码内联执行时遇到此错误,即code editori尝试使用新版本的boto3部署包,但仍然存在相同的错误@Dunedant。最可能的问题是您没有正确打包,因此lambda函数仍然使用aws提供的版本。要检查是否存在这种情况,您可以检查运行代码使用的boto3版本:
    import boto3
    print(boto3.\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu!!!我遵循了它执行的步骤之前我遵循了“使用虚拟环境”的步骤,aws文档来自windows机器,它不工作!!当按照相同的步骤从虚拟环境安装时,不工作的原因是什么?