[在userdata脚本内使用boto3时出现MissingServiceIdError

问题描述 投票:0回答:1

我的CloudFormation模板(AWS::EC2::Instance)从用户数据部分调用python脚本。该脚本尝试更新胶水开发端点的公钥。这是代码的相关部分:

glue_client = boto3.client('glue', 
                           endpoint_url=endpoint or GLUE_CONF.get('endpoint_url'),
                           region_name=GLUE_CONF.get('region_name'))
glue_client.update_dev_endpoint(EndpointName=endpoint_name, PublicKey=public_key)

第一行在完成EC2实例创建后工作如果手动启动很好],但是失败并出现以下错误如果作为用户数据脚本的一部分被调用

Traceback (most recent call last):
  File "/home/ec2-user/setup_notebook_server.py", line 448, in <module>
        key_pw=args.keypw, endpoint=args.endpoint)
  File "/home/ec2-user/setup_notebook_server.py", line 326, in automated_main
        generate_keypair_and_update_dev_endpoint(endpoint=endpoint)
  File "/home/ec2-user/setup_notebook_server.py", line 268, in generate_keypair_and_update_dev_endpoint
        update_dev_endpoint_and_wait(get_dev_endpoint_name(), public_key, endpoint)
  File "/home/ec2-user/setup_notebook_server.py", line 213, in update_dev_endpoint_and_wait
        region_name=GLUE_CONF.get('region_name'))
  File "/usr/local/lib/python2.7/site-packages/boto3/__init__.py", line 91, in client
        return _get_default_session().client(*args, **kwargs)
  File "/usr/local/lib/python2.7/site-packages/boto3/session.py", line 263, in client
        aws_session_token=aws_session_token, config=config)
  File "/usr/local/lib/python2.7/site-packages/botocore/session.py", line 838, in create_client
        client_config=config, api_version=api_version)
  File "/usr/local/lib/python2.7/site-packages/botocore/client.py", line 80, in create_client
        cls = self._create_client_class(service_name, service_model)
  File "/usr/local/lib/python2.7/site-packages/botocore/client.py", line 106, in _create_client_class
        service_id = service_model.service_id.hyphenize()
  File "/usr/local/lib/python2.7/site-packages/botocore/utils.py", line 730, in __get__
        computed_value = self._fget(obj)
  File "/usr/local/lib/python2.7/site-packages/botocore/model.py", line 307, in service_id
        service_name=self._service_name
botocore.exceptions.MissingServiceIdError: The model being used for the service glue is missing the serviceId metadata property, which is required.

此异常是什么意思,我该如何解决?

我的CloudFormation模板(AWS :: EC2 :: Instance)从用户数据部分调用python脚本。该脚本尝试更新胶水开发端点的公钥。这是相关的部分...

amazon-cloudformation boto3 aws-glue botocore
1个回答
0
投票

这是我发生的,因为Boto库的版本太旧了。这些库的组合为我解决了这个问题:boto-2.38.0 boto3-1.7.84 botocore-1.10.84

© www.soinside.com 2019 - 2024. All rights reserved.