我正在使用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上无法执行
有人可以帮我吗?
答案 0 :(得分:1)
我使用boto3-1.9.71和botocore-1.12.71进行了测试,并且工作正常。
打包最新版本的boto3的步骤。
使用以下命令将最新的boto3安装到新目录中
pip install boto3 --target / path / to / your / directory
将以下代码粘贴到.py文件中
导入boto3 打印(boto3。版本) 客户= boto3.client('quicksight',region_name ='us-east-1') 响应= client.list_groups( AwsAccountId ='0123456789', 命名空间='默认' )
您可以使用适当的访问密钥/配置文件在本地计算机上执行此py文件,以测试正在创建的客户端
答案 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环境更新botocore
和boto3
,但是它可能与botocore
(1.10.74) and boto3
(1.7.74)和{{ 3}}。
要解决您的问题,可以在您的botocore
1.12.0中添加支持Quicksight的botocore
和boto3
的最新版本,以代替AWS提供的版本使用它们。