AWS лямбда, неизвестный сервис: «зыбкость» - PullRequest
0 голосов
/ 22 декабря 2018

Я использую API-интерфейс boto3 для создания групп в 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'
    )

при следующей ошибке

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

притот же код выполняется с моего компьютера, он работает, но не из лямбды

Может кто-нибудь помочь мне с этим?

Ответы [ 2 ]

0 голосов
/ 22 декабря 2018

Я протестировал с boto3-1.9.71 и botocore-1.12.71, и он работает нормально.

Шаги для упаковки последней версии boto3.

  1. Создание каталога дляваша лямбда-функция на вашем локальном компьютере
  2. Используйте приведенную ниже команду для установки последней версии boto3 в новый каталог

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

  3. Перейдите в новый каталог и создайте новый файл с именем lambda_function.py (или любым именем. Убедитесь, что в качестве обработчика указано имя файла.function)
  4. Вставьте приведенный ниже код в.py файл

    импорт печати boto3 (boto3. версия ) client = boto3.client ('quicksight', region_name = 'us-east-1') response = client.list_groups (AwsAccountId= '0123456789', Namespace = 'default')

  5. Вы можете выполнить этот py-файл на локальном компьютере с соответствующими ключами доступа / профилем, чтобы тестирование клиента было создано

  6. Теперь из нового каталога выберите все каталоги.ectories и файлы и создайте zip-файл.
  7. Загрузите этот zip-файл в lambda, и вы сможете выполнить функцию без ошибок.
0 голосов
/ 22 декабря 2018

Какие сервисы AWS поддерживаются boto3, прямо не определено в boto3, но в botocore.Для поддержки Quicksight вам нужна как минимум версия 1.12.49 из botocore, в которую была добавлена ​​поддержка Quicksight (хотя в списке изменений ошибочно говорится о обновленной поддержке Quicksight ).

При использовании AWS Lambda вы можете использовать предоставленную AWS версию boto3 или связать свою собственную.Поскольку вы используете версии, предоставляемые AWS, ваш код в настоящее время работает с устаревшими версиями botocore (1.10.74) и boto3 (1.7.74) , поскольку AWS не обновил ихчерез некоторое времяЭти старые версии пока не поддерживают Quicksight.

Мы можем только предполагать, почему AWS прекратил обновление botocore и boto3 для среды AWS Lambda, но это может быть связано с некоторыми внесенными в обратную сторону несовместимыми изменениями.с botocore 1.12.0 и boto3 1.9.0 .

Чтобы решить вашу проблему, вы можете добавить последние версии botocore и boto3, которые поддерживают Quicksight, в ваш пакет развертывания , чтобы использовать их вместо предоставляемых AWS.

...