AWS lambda,未知服务:'quicksight'

时间:2018-12-22 06:33:50

标签: python amazon-web-services lambda boto3

我正在使用boto3 API从lambda快速创建群组,并具有完全访问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'
    )

面对以下错误

Unknown service: 'quicksight'. Valid service names are: acm, acm-pca, alexaforbusiness, apigateway, application-autoscaling, appstream, appsync, athena, autoscaling, autoscaling-plans, batch, budgets, ce, cloud9, clouddirectory, cloudformation, cloudfront, cloudhsm, cloudhsmv2, cloudsearch, cloudsearchdomain, cloudtrail, cloudwatch, codebuild, codecommit, codedeploy, codepipeline, codestar, cognito-identity, cognito-idp, cognito-sync, comprehend, config, connect, cur, datapipeline, dax, devicefarm, directconnect, discovery, dlm, dms, ds, dynamodb, dynamodbstreams, ec2, ecr, ecs, efs, eks, elasticache, elasticbeanstalk, elastictranscoder, elb, elbv2, emr, es, events, firehose, fms, gamelift, glacier, glue, greengrass, guardduty, health, iam, importexport, inspector, iot, iot-data, iot-jobs-data, iot1click-devices, iot1click-projects, iotanalytics, kinesis, kinesis-video-archived-media, kinesis-video-media, kinesisanalytics, kinesisvideo, kms, lambda, lex-models, lex-runtime, lightsail, logs, machinelearning, macie, marketplace-entitlement, marketplacecommerceanalytics, mediaconvert, medialive, mediapackage, mediastore, mediastore-data, mediatailor, meteringmarketplace, mgh, mobile, mq, mturk, neptune, opsworks, opsworkscm, organizations, pi, pinpoint, polly, pricing, rds, redshift, rekognition, resource-groups, resourcegroupstaggingapi, route53, route53domains, s3, sagemaker, sagemaker-runtime, sdb, secretsmanager, serverlessrepo, servicecatalog, servicediscovery, ses, shield, sms, snowball, sns, sqs, ssm, stepfunctions, storagegateway, sts, support, swf, transcribe, translate, waf, waf-regional, workdocs, workmail, workspaces, xray

在我的计算机上执行相同的代码,但在lambda上无法执行

有人可以帮我吗?

2 个答案:

答案 0 :(得分:1)

我使用boto3-1.9.71和botocore-1.12.71进行了测试,并且工作正常。

打包最新版本的boto3的步骤。

  1. 在本地计算机上为lambda函数创建目录
  2. 使用以下命令将最新的boto3安装到新目录中

    pip install boto3 --target / path / to / your / directory

  3. 导航到新目录并创建一个名为lambda_function.py的新文件(或任何名称。请确保您使用filename.function名称作为处理程序)
  4. 将以下代码粘贴到.py文件中

    导入boto3 打印(boto3。版本) 客户= boto3.client('quicksight',region_name ='us-east-1') 响应= client.list_groups(     AwsAccountId ='0123456789',     命名空间='默认' )

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

  6. 现在从新目录中选择所有目录和文件并创建一个zip文件。
  7. 将此zip文件上传到lambda,您应该能够执行该功能而不会出错。

答案 1 :(得分:0)

boto3不直接定义1.12.49支持哪种AWS服务,而是在boto3中直接定义。为了获得Quicksight支持,您至少需要botocore的{​​{1}}版本,这是添加了Quicksight支持的版本(尽管更改日志错误地谈论了botocore)。

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

我们只能推测为什么AWS停止为AWS Lambda环境更新botocoreboto3,但是它可能与botocore (1.10.74) and boto3 (1.7.74)和{{ 3}}。

要解决您的问题,可以在您的botocore 1.12.0中添加支持Quicksight的botocoreboto3的最新版本,以代替AWS提供的版本使用它们。