登录AWS控制台并打开Lambda服务。
创建一个新的Lambda函数,选择Python 3.6作为运行时。
配置函数设置,然后单击“启用X-Ray跟踪”。
确保您的Lambda函数在一个有受限访问权限的VPC中运行,以利于X-Ray跟踪。格式为:
iam = boto3.client('iam')
lambda_client = boto3.client('lambda')
response = iam.list_roles()
roles = []
for role in response['Roles']:
if 'lambda' in role['RoleName']:
roles.append(role['RoleName'])
for role in roles:
try:
response = lambda_client.update_function_configuration(
FunctionName='my-function',
VpcConfig={
'SubnetIds': [
'subnet-abcdef01',
],
'SecurityGroupIds': [
'sg-0123456789abcdef',
]
},
Role=role
)
break
except Exception:
print("Function not updated for role " + role)
在Lambda控制台中,打开X-Ray控制台。在左侧导航栏中,单击“分析”>“跨服务”>“Lambda服务”。
现在可以开始使用X-Ray调试Lambda函数,以便更好地理解Lambda函数的性能和延迟问题。
使用以下代码以在Lambda函数中使用X-Ray跟踪:
import boto3
import json
import logging
logger = logging.getLogger()
logger.setLevel(logging.INFO)
xray_client = boto3.client('xray')
def lambda_handler(event, context):
try:
# Start a new segment
segment = xray_client.begin_segment('my-segment')
# Add metadata
segment.put_metadata('my-key', 'my-value')
# Add segment information to logging
logger.info("Processing event {}".format(json.dumps(event)))
# Add subsegment
subsegment