byteplus-python-sdk-v2 3.0.43__py2.py3-none-any.whl → 3.0.45__py2.py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {byteplus_python_sdk_v2-3.0.43.dist-info → byteplus_python_sdk_v2-3.0.45.dist-info}/METADATA +27 -1
- {byteplus_python_sdk_v2-3.0.43.dist-info → byteplus_python_sdk_v2-3.0.45.dist-info}/RECORD +562 -94
- {byteplus_python_sdk_v2-3.0.43.dist-info → byteplus_python_sdk_v2-3.0.45.dist-info}/top_level.txt +2 -0
- byteplussdkcore/api_client.py +219 -1
- byteplussdkcore/auth/credential.py +4 -0
- byteplussdkcore/auth/providers/__init__.py +5 -1
- byteplussdkcore/auth/providers/cli_config_provider.py +628 -0
- byteplussdkcore/auth/providers/default_provider.py +103 -0
- byteplussdkcore/auth/providers/ecs_role_provider.py +186 -0
- byteplussdkcore/auth/providers/env_provider.py +38 -0
- byteplussdkcore/auth/providers/provider.py +36 -1
- byteplussdkcore/auth/providers/static_provider.py +3 -3
- byteplussdkcore/auth/providers/sts_oidc_provider.py +132 -42
- byteplussdkcore/auth/providers/sts_provider.py +10 -1
- byteplussdkcore/auth/providers/sts_saml_provider.py +77 -32
- byteplussdkcore/configuration.py +1 -1
- byteplussdkcore/endpoint/providers/default_provider.py +28 -0
- byteplussdkcore/endpoint/providers/standard_provider.py +2 -3
- byteplussdkcore/feature/__init__.py +6 -0
- byteplussdkcore/feature/rds/__init__.py +4 -0
- byteplussdkcore/feature/rds/connect_utils.py +88 -0
- byteplussdkcore/interceptor/interceptors/request.py +4 -0
- byteplussdkcore/interceptor/interceptors/resolve_endpoint_interceptor.py +8 -1
- byteplussdkcore/interceptor/interceptors/sign_request_interceptor.py +42 -14
- byteplussdkcore/signv4.py +86 -0
- byteplussdkexamples/byteplussdkarkruntime/async_completions.py +0 -2
- byteplussdkexamples/byteplussdkarkruntime/completions.py +1 -3
- byteplussdkexamples/byteplussdkarkruntime/context.py +1 -3
- byteplussdkkickart/__init__.py +251 -0
- byteplussdkkickart/api/__init__.py +6 -0
- byteplussdkkickart/api/kickart_api.py +11189 -0
- byteplussdkkickart/models/__init__.py +247 -0
- byteplussdkkickart/models/batch_delete_asset_request.py +123 -0
- byteplussdkkickart/models/batch_delete_asset_response.py +95 -0
- byteplussdkkickart/models/batch_delete_media_request.py +123 -0
- byteplussdkkickart/models/batch_delete_media_response.py +123 -0
- byteplussdkkickart/models/check_delete_media_request.py +123 -0
- byteplussdkkickart/models/check_delete_media_response.py +123 -0
- byteplussdkkickart/models/check_product_url_request.py +149 -0
- byteplussdkkickart/models/check_product_url_response.py +123 -0
- byteplussdkkickart/models/clear_ad_variations_output_videos_request.py +124 -0
- byteplussdkkickart/models/clear_ad_variations_output_videos_response.py +95 -0
- byteplussdkkickart/models/clear_ad_variations_project_request.py +150 -0
- byteplussdkkickart/models/clear_ad_variations_project_response.py +95 -0
- byteplussdkkickart/models/copy_genius_project_request.py +149 -0
- byteplussdkkickart/models/copy_genius_project_response.py +149 -0
- byteplussdkkickart/models/create_ad_variations_project_request.py +123 -0
- byteplussdkkickart/models/create_ad_variations_project_response.py +123 -0
- byteplussdkkickart/models/create_ai_template_task_request.py +227 -0
- byteplussdkkickart/models/create_ai_template_task_response.py +123 -0
- byteplussdkkickart/models/create_api_key_request.py +123 -0
- byteplussdkkickart/models/create_api_key_response.py +123 -0
- byteplussdkkickart/models/create_auth_url_request.py +149 -0
- byteplussdkkickart/models/create_auth_url_response.py +175 -0
- byteplussdkkickart/models/create_avatar_request.py +149 -0
- byteplussdkkickart/models/create_avatar_response.py +123 -0
- byteplussdkkickart/models/create_draft_request.py +149 -0
- byteplussdkkickart/models/create_draft_response.py +149 -0
- byteplussdkkickart/models/create_film_request.py +721 -0
- byteplussdkkickart/models/create_film_response.py +95 -0
- byteplussdkkickart/models/create_folder_request.py +279 -0
- byteplussdkkickart/models/create_folder_response.py +123 -0
- byteplussdkkickart/models/create_item_request.py +227 -0
- byteplussdkkickart/models/create_item_response.py +149 -0
- byteplussdkkickart/models/create_material_request.py +851 -0
- byteplussdkkickart/models/create_material_response.py +95 -0
- byteplussdkkickart/models/create_media_request.py +357 -0
- byteplussdkkickart/models/create_media_response.py +149 -0
- byteplussdkkickart/models/create_project_from_template_request.py +123 -0
- byteplussdkkickart/models/create_project_from_template_response.py +123 -0
- byteplussdkkickart/models/create_project_request.py +487 -0
- byteplussdkkickart/models/create_project_response.py +201 -0
- byteplussdkkickart/models/create_template_project_request.py +149 -0
- byteplussdkkickart/models/create_template_project_response.py +175 -0
- byteplussdkkickart/models/delete_all_task_item_request.py +124 -0
- byteplussdkkickart/models/delete_all_task_item_response.py +95 -0
- byteplussdkkickart/models/delete_api_key_request.py +123 -0
- byteplussdkkickart/models/delete_api_key_response.py +95 -0
- byteplussdkkickart/models/delete_task_item_request.py +123 -0
- byteplussdkkickart/models/delete_task_item_response.py +95 -0
- byteplussdkkickart/models/download_asset_request.py +149 -0
- byteplussdkkickart/models/download_asset_response.py +149 -0
- byteplussdkkickart/models/export_editor_video_request.py +279 -0
- byteplussdkkickart/models/export_editor_video_response.py +123 -0
- byteplussdkkickart/models/export_video_request.py +149 -0
- byteplussdkkickart/models/export_video_response.py +123 -0
- byteplussdkkickart/models/gen_ad_variations_analysis_request.py +124 -0
- byteplussdkkickart/models/gen_ad_variations_analysis_response.py +123 -0
- byteplussdkkickart/models/gen_ad_variations_video_request.py +124 -0
- byteplussdkkickart/models/gen_ad_variations_video_response.py +123 -0
- byteplussdkkickart/models/gen_bgm_by_product_request.py +175 -0
- byteplussdkkickart/models/gen_bgm_by_product_response.py +123 -0
- byteplussdkkickart/models/gen_bgm_by_video_request.py +175 -0
- byteplussdkkickart/models/gen_bgm_by_video_response.py +123 -0
- byteplussdkkickart/models/gen_main_video_request.py +175 -0
- byteplussdkkickart/models/gen_main_video_response.py +149 -0
- byteplussdkkickart/models/gen_pic_by_prompt_request.py +175 -0
- byteplussdkkickart/models/gen_pic_by_prompt_response.py +123 -0
- byteplussdkkickart/models/gen_pics_video_by_story_request.py +175 -0
- byteplussdkkickart/models/gen_pics_video_by_story_response.py +123 -0
- byteplussdkkickart/models/gen_product_intro_creative_request.py +149 -0
- byteplussdkkickart/models/gen_product_intro_creative_response.py +123 -0
- byteplussdkkickart/models/gen_product_intro_script_request.py +149 -0
- byteplussdkkickart/models/gen_product_intro_script_response.py +123 -0
- byteplussdkkickart/models/gen_product_intro_video_request.py +149 -0
- byteplussdkkickart/models/gen_product_intro_video_response.py +149 -0
- byteplussdkkickart/models/gen_product_storyboard_outline_request.py +149 -0
- byteplussdkkickart/models/gen_product_storyboard_outline_response.py +149 -0
- byteplussdkkickart/models/gen_product_storyboard_video_request.py +175 -0
- byteplussdkkickart/models/gen_product_storyboard_video_response.py +175 -0
- byteplussdkkickart/models/gen_story_by_prompt_request.py +123 -0
- byteplussdkkickart/models/gen_story_by_prompt_response.py +123 -0
- byteplussdkkickart/models/gen_template_script_request.py +175 -0
- byteplussdkkickart/models/gen_template_script_response.py +175 -0
- byteplussdkkickart/models/gen_template_video_request.py +201 -0
- byteplussdkkickart/models/gen_template_video_response.py +149 -0
- byteplussdkkickart/models/gen_video_by_prompt_request.py +175 -0
- byteplussdkkickart/models/gen_video_by_prompt_response.py +123 -0
- byteplussdkkickart/models/get_ai_template_task_status_request.py +123 -0
- byteplussdkkickart/models/get_ai_template_task_status_response.py +123 -0
- byteplussdkkickart/models/get_ai_template_template_info_request.py +123 -0
- byteplussdkkickart/models/get_ai_template_template_info_response.py +123 -0
- byteplussdkkickart/models/get_avatar_request.py +123 -0
- byteplussdkkickart/models/get_avatar_response.py +123 -0
- byteplussdkkickart/models/get_block_detail_request.py +149 -0
- byteplussdkkickart/models/get_block_detail_response.py +123 -0
- byteplussdkkickart/models/get_block_request.py +124 -0
- byteplussdkkickart/models/get_block_response.py +123 -0
- byteplussdkkickart/models/get_category_detail_request.py +201 -0
- byteplussdkkickart/models/get_category_detail_response.py +123 -0
- byteplussdkkickart/models/get_combo_balance_request.py +124 -0
- byteplussdkkickart/models/get_combo_balance_response.py +149 -0
- byteplussdkkickart/models/get_composition_request.py +123 -0
- byteplussdkkickart/models/get_composition_response.py +253 -0
- byteplussdkkickart/models/get_create_cost_request.py +123 -0
- byteplussdkkickart/models/get_create_cost_response.py +123 -0
- byteplussdkkickart/models/get_creator_info_request.py +123 -0
- byteplussdkkickart/models/get_creator_info_response.py +123 -0
- byteplussdkkickart/models/get_draft_request.py +123 -0
- byteplussdkkickart/models/get_draft_response.py +123 -0
- byteplussdkkickart/models/get_film_detail_request.py +175 -0
- byteplussdkkickart/models/get_film_detail_response.py +123 -0
- byteplussdkkickart/models/get_genius_project_request.py +124 -0
- byteplussdkkickart/models/get_genius_project_response.py +123 -0
- byteplussdkkickart/models/get_genius_template_request.py +123 -0
- byteplussdkkickart/models/get_genius_template_response.py +123 -0
- byteplussdkkickart/models/get_home_bootstrap2_request.py +149 -0
- byteplussdkkickart/models/get_home_bootstrap2_response.py +253 -0
- byteplussdkkickart/models/get_home_bootstrap_request.py +149 -0
- byteplussdkkickart/models/get_home_bootstrap_response.py +253 -0
- byteplussdkkickart/models/get_list_request.py +177 -0
- byteplussdkkickart/models/get_list_response.py +175 -0
- byteplussdkkickart/models/get_material_detail_request.py +227 -0
- byteplussdkkickart/models/get_material_detail_response.py +123 -0
- byteplussdkkickart/models/get_material_transcoding_list_request.py +331 -0
- byteplussdkkickart/models/get_material_transcoding_list_response.py +149 -0
- byteplussdkkickart/models/get_media_request.py +123 -0
- byteplussdkkickart/models/get_media_response.py +123 -0
- byteplussdkkickart/models/get_meta_list_request.py +201 -0
- byteplussdkkickart/models/get_meta_list_response.py +175 -0
- byteplussdkkickart/models/get_price_request.py +123 -0
- byteplussdkkickart/models/get_price_response.py +123 -0
- byteplussdkkickart/models/get_product_info_request.py +123 -0
- byteplussdkkickart/models/get_product_info_response.py +149 -0
- byteplussdkkickart/models/get_public_template_list_request.py +436 -0
- byteplussdkkickart/models/get_public_template_list_response.py +149 -0
- byteplussdkkickart/models/get_publish_draft_by_task_request.py +124 -0
- byteplussdkkickart/models/get_publish_draft_by_task_response.py +149 -0
- byteplussdkkickart/models/get_publish_draft_request.py +175 -0
- byteplussdkkickart/models/get_publish_draft_response.py +149 -0
- byteplussdkkickart/models/get_raw_api_key_request.py +123 -0
- byteplussdkkickart/models/get_raw_api_key_response.py +123 -0
- byteplussdkkickart/models/get_special_zone_config_request.py +124 -0
- byteplussdkkickart/models/get_special_zone_config_response.py +227 -0
- byteplussdkkickart/models/get_task_item_request.py +149 -0
- byteplussdkkickart/models/get_task_item_response.py +565 -0
- byteplussdkkickart/models/get_tasks_detail_request.py +123 -0
- byteplussdkkickart/models/get_tasks_detail_response.py +123 -0
- byteplussdkkickart/models/get_tenant_config_request.py +124 -0
- byteplussdkkickart/models/get_tenant_config_response.py +929 -0
- byteplussdkkickart/models/get_voice_recommendation_request.py +227 -0
- byteplussdkkickart/models/get_voice_recommendation_response.py +123 -0
- byteplussdkkickart/models/get_watermark_switch_status_request.py +124 -0
- byteplussdkkickart/models/get_watermark_switch_status_response.py +253 -0
- byteplussdkkickart/models/handle_o_auth_callback_request.py +177 -0
- byteplussdkkickart/models/handle_o_auth_callback_response.py +123 -0
- byteplussdkkickart/models/health_check_request.py +123 -0
- byteplussdkkickart/models/health_check_response.py +123 -0
- byteplussdkkickart/models/invoke_project_event_request.py +201 -0
- byteplussdkkickart/models/invoke_project_event_response.py +123 -0
- byteplussdkkickart/models/list_api_key_request.py +149 -0
- byteplussdkkickart/models/list_api_key_response.py +201 -0
- byteplussdkkickart/models/list_avatar_request.py +201 -0
- byteplussdkkickart/models/list_avatar_response.py +201 -0
- byteplussdkkickart/models/list_avatar_voice_request.py +279 -0
- byteplussdkkickart/models/list_avatar_voice_response.py +201 -0
- byteplussdkkickart/models/list_block_request.py +201 -0
- byteplussdkkickart/models/list_block_response.py +149 -0
- byteplussdkkickart/models/list_combo_request.py +149 -0
- byteplussdkkickart/models/list_combo_response.py +149 -0
- byteplussdkkickart/models/list_create_cost_request.py +149 -0
- byteplussdkkickart/models/list_create_cost_response.py +123 -0
- byteplussdkkickart/models/list_creative_point_logs_request.py +253 -0
- byteplussdkkickart/models/list_creative_point_logs_response.py +149 -0
- byteplussdkkickart/models/list_genius_project_request.py +149 -0
- byteplussdkkickart/models/list_genius_project_response.py +149 -0
- byteplussdkkickart/models/list_genius_template_request.py +175 -0
- byteplussdkkickart/models/list_genius_template_response.py +149 -0
- byteplussdkkickart/models/list_prompt_request.py +95 -0
- byteplussdkkickart/models/list_prompt_response.py +123 -0
- byteplussdkkickart/models/list_publish_accounts_request.py +149 -0
- byteplussdkkickart/models/list_publish_accounts_response.py +123 -0
- byteplussdkkickart/models/list_resources_request.py +95 -0
- byteplussdkkickart/models/list_resources_response.py +123 -0
- byteplussdkkickart/models/list_select_item_request.py +123 -0
- byteplussdkkickart/models/list_select_item_response.py +149 -0
- byteplussdkkickart/models/list_tasks_request.py +177 -0
- byteplussdkkickart/models/list_tasks_response.py +175 -0
- byteplussdkkickart/models/query_creative_point_logs_request.py +253 -0
- byteplussdkkickart/models/query_creative_point_logs_response.py +149 -0
- byteplussdkkickart/models/query_select_item_request.py +123 -0
- byteplussdkkickart/models/query_select_item_response.py +149 -0
- byteplussdkkickart/models/reorder_check_request.py +123 -0
- byteplussdkkickart/models/reorder_check_response.py +123 -0
- byteplussdkkickart/models/retry_risk_task_request.py +123 -0
- byteplussdkkickart/models/retry_risk_task_response.py +123 -0
- byteplussdkkickart/models/retry_task_request.py +149 -0
- byteplussdkkickart/models/retry_task_response.py +123 -0
- byteplussdkkickart/models/save_publish_draft_request.py +149 -0
- byteplussdkkickart/models/save_publish_draft_response.py +123 -0
- byteplussdkkickart/models/search_asset_request.py +487 -0
- byteplussdkkickart/models/search_asset_response.py +201 -0
- byteplussdkkickart/models/search_list_media_request.py +617 -0
- byteplussdkkickart/models/search_list_media_response.py +201 -0
- byteplussdkkickart/models/set_watermark_switch_status_request.py +253 -0
- byteplussdkkickart/models/set_watermark_switch_status_response.py +95 -0
- byteplussdkkickart/models/show_popup_request.py +124 -0
- byteplussdkkickart/models/show_popup_response.py +175 -0
- byteplussdkkickart/models/submit_publish_request.py +124 -0
- byteplussdkkickart/models/submit_publish_response.py +123 -0
- byteplussdkkickart/models/unbind_publish_account_request.py +124 -0
- byteplussdkkickart/models/unbind_publish_account_response.py +95 -0
- byteplussdkkickart/models/update_api_key_request.py +175 -0
- byteplussdkkickart/models/update_api_key_response.py +95 -0
- byteplussdkkickart/models/update_asset_request.py +149 -0
- byteplussdkkickart/models/update_asset_response.py +95 -0
- byteplussdkkickart/models/update_composition_product_info_request.py +151 -0
- byteplussdkkickart/models/update_composition_product_info_response.py +123 -0
- byteplussdkkickart/models/update_composition_request.py +149 -0
- byteplussdkkickart/models/update_composition_response.py +123 -0
- byteplussdkkickart/models/update_draft_request.py +227 -0
- byteplussdkkickart/models/update_draft_response.py +95 -0
- byteplussdkkickart/models/update_draft_title_request.py +151 -0
- byteplussdkkickart/models/update_draft_title_response.py +123 -0
- byteplussdkkickart/models/update_film_request.py +435 -0
- byteplussdkkickart/models/update_film_response.py +95 -0
- byteplussdkkickart/models/update_folder_media_path_request.py +175 -0
- byteplussdkkickart/models/update_folder_media_path_response.py +95 -0
- byteplussdkkickart/models/update_material_request.py +513 -0
- byteplussdkkickart/models/update_material_response.py +95 -0
- byteplussdkkickart/models/validate_avatar_image_request.py +123 -0
- byteplussdkkickart/models/validate_avatar_image_response.py +149 -0
- byteplussdkllmshield/models/llm_shield_sign.py +1 -1
- byteplussdkrdsmssql/__init__.py +1 -1
- byteplussdkrdsmssql/models/__init__.py +1 -1
- byteplussdkrdsmssql/models/describe_db_instance_specs_response.py +17 -17
- byteplussdkrdsmssql/models/{instance_spec_info_for_describe_db_instance_specs_output.py → instance_specs_info_for_describe_db_instance_specs_output.py} +45 -45
- byteplussdkvepfs/__init__.py +26 -0
- byteplussdkvepfs/api/vepfs_api.py +582 -0
- byteplussdkvepfs/models/__init__.py +26 -0
- byteplussdkvepfs/models/add_mount_service_clients_request.py +202 -0
- byteplussdkvepfs/models/add_mount_service_clients_response.py +123 -0
- byteplussdkvepfs/models/client_for_add_mount_service_clients_input.py +149 -0
- byteplussdkvepfs/models/client_for_describe_mount_service_tasks_output.py +149 -0
- byteplussdkvepfs/models/client_for_remove_mount_service_clients_input.py +149 -0
- byteplussdkvepfs/models/client_for_verify_mount_service_clients_input.py +149 -0
- byteplussdkvepfs/models/client_snapshot_for_describe_mount_service_task_results_output.py +305 -0
- byteplussdkvepfs/models/describe_lens_tasks_request.py +60 -1
- byteplussdkvepfs/models/describe_mount_service_clients_request.py +440 -0
- byteplussdkvepfs/models/describe_mount_service_clients_response.py +201 -0
- byteplussdkvepfs/models/describe_mount_service_task_results_request.py +415 -0
- byteplussdkvepfs/models/describe_mount_service_task_results_response.py +201 -0
- byteplussdkvepfs/models/describe_mount_service_tasks_request.py +267 -0
- byteplussdkvepfs/models/describe_mount_service_tasks_response.py +201 -0
- byteplussdkvepfs/models/instance_for_describe_mount_service_clients_output.py +253 -0
- byteplussdkvepfs/models/instance_for_describe_mount_service_task_results_output.py +253 -0
- byteplussdkvepfs/models/monitor_for_describe_mount_service_clients_output.py +123 -0
- byteplussdkvepfs/models/monitor_for_describe_mount_service_task_results_output.py +123 -0
- byteplussdkvepfs/models/mount_service_client_for_describe_mount_service_clients_output.py +305 -0
- byteplussdkvepfs/models/mount_service_task_result_for_describe_mount_service_task_results_output.py +201 -0
- byteplussdkvepfs/models/progress_for_describe_mount_service_tasks_output.py +201 -0
- byteplussdkvepfs/models/remove_mount_service_clients_request.py +150 -0
- byteplussdkvepfs/models/remove_mount_service_clients_response.py +123 -0
- byteplussdkvepfs/models/result_for_verify_mount_service_clients_output.py +175 -0
- byteplussdkvepfs/models/task_for_describe_mount_service_tasks_output.py +305 -0
- byteplussdkvepfs/models/verify_mount_service_clients_request.py +150 -0
- byteplussdkvepfs/models/verify_mount_service_clients_response.py +123 -0
- byteplussdkvke/__init__.py +69 -0
- byteplussdkvke/api/vke_api.py +1273 -206
- byteplussdkvke/models/__init__.py +69 -0
- byteplussdkvke/models/action_for_list_remedy_configs_output.py +149 -0
- byteplussdkvke/models/affinity_group_config_for_create_node_pool_input.py +149 -0
- byteplussdkvke/models/affinity_group_config_for_list_node_pools_output.py +149 -0
- byteplussdkvke/models/affinity_group_config_for_update_node_pool_config_input.py +149 -0
- byteplussdkvke/models/binding_remedy_config_request.py +262 -0
- byteplussdkvke/models/binding_remedy_config_response.py +123 -0
- byteplussdkvke/models/cluster_config_for_list_clusters_output.py +27 -1
- byteplussdkvke/models/cluster_config_for_update_cluster_config_input.py +53 -1
- byteplussdkvke/models/cluster_connector_config_request_for_update_cluster_config_input.py +215 -0
- byteplussdkvke/models/config_for_list_remedy_configs_output.py +253 -0
- byteplussdkvke/models/container_image_commitment_for_describe_container_image_commitments_output.py +227 -0
- byteplussdkvke/models/containerd_config_for_create_default_node_pool_input.py +149 -0
- byteplussdkvke/models/containerd_config_for_create_node_pool_input.py +149 -0
- byteplussdkvke/models/containerd_config_for_list_node_pools_output.py +149 -0
- byteplussdkvke/models/containerd_config_for_update_node_pool_config_input.py +149 -0
- byteplussdkvke/models/create_node_pool_request.py +27 -1
- byteplussdkvke/models/create_nodes_request.py +81 -3
- byteplussdkvke/models/create_snapshot_request.py +255 -0
- byteplussdkvke/models/create_snapshot_response.py +123 -0
- byteplussdkvke/models/data_volume_for_create_node_pool_input.py +87 -2
- byteplussdkvke/models/data_volume_for_list_node_pools_output.py +79 -1
- byteplussdkvke/models/data_volume_for_update_node_pool_config_input.py +87 -2
- byteplussdkvke/models/delete_nodes_request.py +2 -3
- byteplussdkvke/models/delete_snapshot_request.py +124 -0
- byteplussdkvke/models/delete_snapshot_response.py +123 -0
- byteplussdkvke/models/describe_container_image_commitments_request.py +227 -0
- byteplussdkvke/models/describe_container_image_commitments_response.py +149 -0
- byteplussdkvke/models/describe_snapshots_request.py +175 -0
- byteplussdkvke/models/describe_snapshots_response.py +149 -0
- byteplussdkvke/models/drain_for_list_remedy_configs_output.py +123 -0
- byteplussdkvke/models/eviction_hard_for_create_default_node_pool_input.py +62 -1
- byteplussdkvke/models/eviction_hard_for_create_node_pool_input.py +62 -1
- byteplussdkvke/models/eviction_hard_for_list_node_pools_output.py +55 -1
- byteplussdkvke/models/eviction_hard_for_update_node_pool_config_input.py +62 -1
- byteplussdkvke/models/exec_container_image_commitment_request.py +27 -1
- byteplussdkvke/models/exec_container_image_commitment_response.py +29 -1
- byteplussdkvke/models/filter_for_list_clusters_input.py +1 -1
- byteplussdkvke/models/filter_for_list_nodes_input.py +53 -1
- byteplussdkvke/models/filter_for_list_remedy_configs_input.py +234 -0
- byteplussdkvke/models/flannel_config_for_list_clusters_output.py +29 -3
- byteplussdkvke/models/flannel_config_for_update_cluster_config_input.py +123 -0
- byteplussdkvke/models/image_spec_for_describe_container_image_commitments_output.py +201 -0
- byteplussdkvke/models/instances_distribution_for_create_node_pool_input.py +201 -0
- byteplussdkvke/models/instances_distribution_for_list_node_pools_output.py +201 -0
- byteplussdkvke/models/instances_distribution_for_update_node_pool_config_input.py +201 -0
- byteplussdkvke/models/intersection_item_for_list_supported_images_output.py +149 -0
- byteplussdkvke/models/intervene_cordon_for_list_remedy_configs_output.py +149 -0
- byteplussdkvke/models/intervene_drain_for_list_remedy_configs_output.py +149 -0
- byteplussdkvke/models/irsa_config_for_list_clusters_output.py +253 -0
- byteplussdkvke/models/item_for_list_clusters_output.py +27 -1
- byteplussdkvke/models/item_for_list_instance_type_labels_output.py +175 -0
- byteplussdkvke/models/item_for_list_node_pools_output.py +27 -1
- byteplussdkvke/models/item_for_list_nodes_output.py +105 -1
- byteplussdkvke/models/item_for_list_remedy_configs_output.py +305 -0
- byteplussdkvke/models/item_for_list_supported_images_output.py +149 -0
- byteplussdkvke/models/kube_reserved_for_create_default_node_pool_input.py +7 -0
- byteplussdkvke/models/kube_reserved_for_create_node_pool_input.py +7 -0
- byteplussdkvke/models/kube_reserved_for_update_node_pool_config_input.py +7 -0
- byteplussdkvke/models/kubelet_config_for_create_default_node_pool_input.py +7 -24
- byteplussdkvke/models/kubelet_config_for_create_node_pool_input.py +7 -24
- byteplussdkvke/models/kubelet_config_for_update_node_pool_config_input.py +7 -24
- byteplussdkvke/models/kubernetes_config_for_create_default_node_pool_input.py +105 -1
- byteplussdkvke/models/kubernetes_config_for_create_node_pool_input.py +105 -1
- byteplussdkvke/models/kubernetes_config_for_list_node_pools_output.py +105 -1
- byteplussdkvke/models/kubernetes_config_for_update_node_pool_config_input.py +105 -1
- byteplussdkvke/models/label_for_list_instance_type_labels_output.py +149 -0
- byteplussdkvke/models/label_for_list_remedy_configs_output.py +149 -0
- byteplussdkvke/models/list_instance_type_labels_request.py +123 -0
- byteplussdkvke/models/list_instance_type_labels_response.py +123 -0
- byteplussdkvke/models/list_remedy_configs_request.py +175 -0
- byteplussdkvke/models/list_remedy_configs_response.py +201 -0
- byteplussdkvke/models/list_supported_add_instance_types_request.py +95 -0
- byteplussdkvke/models/list_supported_add_instance_types_response.py +123 -0
- byteplussdkvke/models/list_supported_gpu_driver_versions_request.py +176 -0
- byteplussdkvke/models/list_supported_gpu_driver_versions_response.py +123 -0
- byteplussdkvke/models/list_supported_images_request.py +175 -0
- byteplussdkvke/models/list_supported_images_response.py +149 -0
- byteplussdkvke/models/log_setup_for_create_cluster_input.py +1 -1
- byteplussdkvke/models/log_setup_for_update_cluster_config_input.py +1 -1
- byteplussdkvke/models/management_for_create_node_pool_input.py +149 -0
- byteplussdkvke/models/management_for_list_node_pools_output.py +149 -0
- byteplussdkvke/models/management_for_update_node_pool_config_input.py +149 -0
- byteplussdkvke/models/monitoring_config_for_list_clusters_output.py +27 -1
- byteplussdkvke/models/monitoring_config_for_update_cluster_config_input.py +27 -1
- byteplussdkvke/models/node_config_for_create_default_node_pool_input.py +27 -1
- byteplussdkvke/models/node_config_for_create_node_pool_input.py +216 -1
- byteplussdkvke/models/node_config_for_list_node_pools_output.py +209 -1
- byteplussdkvke/models/node_config_for_update_node_pool_config_input.py +216 -1
- byteplussdkvke/models/pods_config_for_update_cluster_config_input.py +27 -1
- byteplussdkvke/models/proxy_config_for_update_cluster_config_input.py +227 -0
- byteplussdkvke/models/public_access_config_for_create_node_pool_input.py +1 -1
- byteplussdkvke/models/public_access_config_for_update_node_pool_config_input.py +1 -1
- byteplussdkvke/models/public_access_network_config_for_create_cluster_input.py +1 -1
- byteplussdkvke/models/public_access_network_config_for_update_cluster_config_input.py +1 -1
- byteplussdkvke/models/registry_proxy_config_for_create_default_node_pool_input.py +149 -0
- byteplussdkvke/models/registry_proxy_config_for_create_node_pool_input.py +149 -0
- byteplussdkvke/models/registry_proxy_config_for_list_node_pools_output.py +149 -0
- byteplussdkvke/models/registry_proxy_config_for_update_node_pool_config_input.py +149 -0
- byteplussdkvke/models/remedy_config_for_create_node_pool_input.py +149 -0
- byteplussdkvke/models/remedy_config_for_list_node_pools_output.py +149 -0
- byteplussdkvke/models/remedy_config_for_update_node_pool_config_input.py +149 -0
- byteplussdkvke/models/remedy_strategy_for_list_remedy_configs_output.py +149 -0
- byteplussdkvke/models/rule_for_list_remedy_configs_output.py +175 -0
- byteplussdkvke/models/runtime_for_create_default_node_pool_input.py +156 -0
- byteplussdkvke/models/runtime_for_create_node_pool_input.py +156 -0
- byteplussdkvke/models/runtime_for_list_node_pools_output.py +149 -0
- byteplussdkvke/models/runtime_for_update_node_pool_config_input.py +156 -0
- byteplussdkvke/models/scheduled_instance_policy_for_create_scaling_policy_input.py +27 -1
- byteplussdkvke/models/scheduled_instance_policy_for_list_scaling_policies_output.py +27 -1
- byteplussdkvke/models/scheduled_instance_policy_for_update_scaling_policy_input.py +27 -1
- byteplussdkvke/models/snapshot_for_describe_snapshots_output.py +461 -0
- byteplussdkvke/models/status_for_list_clusters_input.py +1 -1
- byteplussdkvke/models/status_for_list_node_pools_input.py +1 -1
- byteplussdkvke/models/status_for_list_nodes_input.py +2 -2
- byteplussdkvke/models/supported_image_for_list_supported_images_output.py +149 -0
- byteplussdkvke/models/system_reserved_for_create_default_node_pool_input.py +7 -0
- byteplussdkvke/models/system_reserved_for_create_node_pool_input.py +7 -0
- byteplussdkvke/models/system_reserved_for_update_node_pool_config_input.py +7 -0
- byteplussdkvke/models/system_volume_for_create_node_pool_input.py +1 -1
- byteplussdkvke/models/system_volume_for_update_node_pool_config_input.py +1 -1
- byteplussdkvke/models/tag_for_create_snapshot_input.py +149 -0
- byteplussdkvke/models/unbinding_remedy_config_request.py +211 -0
- byteplussdkvke/models/unbinding_remedy_config_response.py +95 -0
- byteplussdkvke/models/update_cluster_config_request.py +27 -1
- byteplussdkvke/models/update_node_pool_config_request.py +27 -1
- byteplussdkvke/models/vpc_cni_config_for_list_clusters_output.py +29 -3
- byteplussdkvke/models/vpc_cni_config_for_update_cluster_config_input.py +29 -3
- byteplussdkvpc20250901/__init__.py +149 -0
- byteplussdkvpc20250901/api/__init__.py +6 -0
- byteplussdkvpc20250901/api/vpc20250901_api.py +4399 -0
- byteplussdkvpc20250901/models/__init__.py +145 -0
- byteplussdkvpc20250901/models/assign_private_ip_addresses_request.py +202 -0
- byteplussdkvpc20250901/models/assign_private_ip_addresses_response.py +201 -0
- byteplussdkvpc20250901/models/associate_route_table_request.py +176 -0
- byteplussdkvpc20250901/models/associate_route_table_response.py +149 -0
- byteplussdkvpc20250901/models/associate_vpc_cidr_block_request.py +150 -0
- byteplussdkvpc20250901/models/associate_vpc_cidr_block_response.py +201 -0
- byteplussdkvpc20250901/models/associated_elastic_ip_for_describe_network_interface_attributes_output.py +175 -0
- byteplussdkvpc20250901/models/associated_elastic_ip_for_describe_network_interfaces_output.py +175 -0
- byteplussdkvpc20250901/models/attach_network_interface_request.py +151 -0
- byteplussdkvpc20250901/models/attach_network_interface_response.py +149 -0
- byteplussdkvpc20250901/models/attachment_for_describe_network_interfaces_output.py +149 -0
- byteplussdkvpc20250901/models/authorize_security_group_egress_request.py +309 -0
- byteplussdkvpc20250901/models/authorize_security_group_egress_response.py +149 -0
- byteplussdkvpc20250901/models/authorize_security_group_ingress_request.py +309 -0
- byteplussdkvpc20250901/models/authorize_security_group_ingress_response.py +149 -0
- byteplussdkvpc20250901/models/create_network_interface_request.py +396 -0
- byteplussdkvpc20250901/models/create_network_interface_response.py +175 -0
- byteplussdkvpc20250901/models/create_route_entry_request.py +294 -0
- byteplussdkvpc20250901/models/create_route_entry_response.py +175 -0
- byteplussdkvpc20250901/models/create_route_table_request.py +266 -0
- byteplussdkvpc20250901/models/create_route_table_response.py +175 -0
- byteplussdkvpc20250901/models/create_security_group_request.py +254 -0
- byteplussdkvpc20250901/models/create_security_group_response.py +175 -0
- byteplussdkvpc20250901/models/create_subnet_request.py +294 -0
- byteplussdkvpc20250901/models/create_subnet_response.py +175 -0
- byteplussdkvpc20250901/models/create_vpc_request.py +292 -0
- byteplussdkvpc20250901/models/create_vpc_response.py +201 -0
- byteplussdkvpc20250901/models/delete_network_interface_request.py +124 -0
- byteplussdkvpc20250901/models/delete_network_interface_response.py +149 -0
- byteplussdkvpc20250901/models/delete_route_entry_request.py +124 -0
- byteplussdkvpc20250901/models/delete_route_entry_response.py +149 -0
- byteplussdkvpc20250901/models/delete_route_table_request.py +124 -0
- byteplussdkvpc20250901/models/delete_route_table_response.py +149 -0
- byteplussdkvpc20250901/models/delete_security_group_request.py +124 -0
- byteplussdkvpc20250901/models/delete_security_group_response.py +149 -0
- byteplussdkvpc20250901/models/delete_subnet_request.py +124 -0
- byteplussdkvpc20250901/models/delete_subnet_response.py +149 -0
- byteplussdkvpc20250901/models/delete_vpc_request.py +124 -0
- byteplussdkvpc20250901/models/delete_vpc_response.py +149 -0
- byteplussdkvpc20250901/models/describe_network_interface_attributes_request.py +124 -0
- byteplussdkvpc20250901/models/describe_network_interface_attributes_response.py +695 -0
- byteplussdkvpc20250901/models/describe_network_interfaces_request.py +548 -0
- byteplussdkvpc20250901/models/describe_network_interfaces_response.py +253 -0
- byteplussdkvpc20250901/models/describe_route_entry_list_request.py +393 -0
- byteplussdkvpc20250901/models/describe_route_entry_list_response.py +253 -0
- byteplussdkvpc20250901/models/describe_route_table_list_request.py +334 -0
- byteplussdkvpc20250901/models/describe_route_table_list_response.py +253 -0
- byteplussdkvpc20250901/models/describe_security_group_attributes_request.py +228 -0
- byteplussdkvpc20250901/models/describe_security_group_attributes_response.py +461 -0
- byteplussdkvpc20250901/models/describe_security_groups_request.py +340 -0
- byteplussdkvpc20250901/models/describe_security_groups_response.py +253 -0
- byteplussdkvpc20250901/models/describe_subnet_attributes_request.py +124 -0
- byteplussdkvpc20250901/models/describe_subnet_attributes_response.py +539 -0
- byteplussdkvpc20250901/models/describe_subnets_request.py +438 -0
- byteplussdkvpc20250901/models/describe_subnets_response.py +253 -0
- byteplussdkvpc20250901/models/describe_vpc_attributes_request.py +124 -0
- byteplussdkvpc20250901/models/describe_vpc_attributes_response.py +565 -0
- byteplussdkvpc20250901/models/describe_vpcs_request.py +366 -0
- byteplussdkvpc20250901/models/describe_vpcs_response.py +253 -0
- byteplussdkvpc20250901/models/detach_network_interface_request.py +151 -0
- byteplussdkvpc20250901/models/detach_network_interface_response.py +149 -0
- byteplussdkvpc20250901/models/disassociate_route_table_request.py +176 -0
- byteplussdkvpc20250901/models/disassociate_route_table_response.py +149 -0
- byteplussdkvpc20250901/models/disassociate_vpc_cidr_block_request.py +150 -0
- byteplussdkvpc20250901/models/disassociate_vpc_cidr_block_response.py +149 -0
- byteplussdkvpc20250901/models/list_tags_for_resources_request.py +264 -0
- byteplussdkvpc20250901/models/list_tags_for_resources_response.py +175 -0
- byteplussdkvpc20250901/models/modify_network_interface_attributes_request.py +266 -0
- byteplussdkvpc20250901/models/modify_network_interface_attributes_response.py +149 -0
- byteplussdkvpc20250901/models/modify_route_entry_request.py +188 -0
- byteplussdkvpc20250901/models/modify_route_entry_response.py +123 -0
- byteplussdkvpc20250901/models/modify_route_table_attributes_request.py +188 -0
- byteplussdkvpc20250901/models/modify_route_table_attributes_response.py +123 -0
- byteplussdkvpc20250901/models/modify_security_group_attributes_request.py +176 -0
- byteplussdkvpc20250901/models/modify_security_group_attributes_response.py +123 -0
- byteplussdkvpc20250901/models/modify_security_group_rule_descriptions_egress_request.py +283 -0
- byteplussdkvpc20250901/models/modify_security_group_rule_descriptions_egress_response.py +123 -0
- byteplussdkvpc20250901/models/modify_security_group_rule_descriptions_ingress_request.py +283 -0
- byteplussdkvpc20250901/models/modify_security_group_rule_descriptions_ingress_response.py +123 -0
- byteplussdkvpc20250901/models/modify_subnet_attributes_request.py +188 -0
- byteplussdkvpc20250901/models/modify_subnet_attributes_response.py +149 -0
- byteplussdkvpc20250901/models/modify_vpc_attributes_request.py +214 -0
- byteplussdkvpc20250901/models/modify_vpc_attributes_response.py +149 -0
- byteplussdkvpc20250901/models/network_interface_set_for_describe_network_interfaces_output.py +695 -0
- byteplussdkvpc20250901/models/permission_for_describe_security_group_attributes_output.py +331 -0
- byteplussdkvpc20250901/models/private_ip_set_for_describe_network_interface_attributes_output.py +175 -0
- byteplussdkvpc20250901/models/private_ip_set_for_describe_network_interfaces_output.py +175 -0
- byteplussdkvpc20250901/models/private_ip_sets_for_describe_network_interface_attributes_output.py +123 -0
- byteplussdkvpc20250901/models/private_ip_sets_for_describe_network_interfaces_output.py +123 -0
- byteplussdkvpc20250901/models/resource_tag_for_list_tags_for_resources_output.py +201 -0
- byteplussdkvpc20250901/models/revoke_security_group_egress_request.py +283 -0
- byteplussdkvpc20250901/models/revoke_security_group_egress_response.py +149 -0
- byteplussdkvpc20250901/models/revoke_security_group_ingress_request.py +283 -0
- byteplussdkvpc20250901/models/revoke_security_group_ingress_response.py +149 -0
- byteplussdkvpc20250901/models/route_entry_for_describe_route_entry_list_output.py +357 -0
- byteplussdkvpc20250901/models/route_table_for_describe_subnet_attributes_output.py +149 -0
- byteplussdkvpc20250901/models/route_table_for_describe_subnets_output.py +149 -0
- byteplussdkvpc20250901/models/router_table_list_for_describe_route_table_list_output.py +435 -0
- byteplussdkvpc20250901/models/security_group_for_describe_security_groups_output.py +383 -0
- byteplussdkvpc20250901/models/subnet_for_describe_subnets_output.py +513 -0
- byteplussdkvpc20250901/models/tag_filter_for_describe_network_interfaces_input.py +149 -0
- byteplussdkvpc20250901/models/tag_filter_for_describe_route_table_list_input.py +149 -0
- byteplussdkvpc20250901/models/tag_filter_for_describe_security_groups_input.py +149 -0
- byteplussdkvpc20250901/models/tag_filter_for_describe_subnets_input.py +149 -0
- byteplussdkvpc20250901/models/tag_filter_for_describe_vpcs_input.py +149 -0
- byteplussdkvpc20250901/models/tag_filter_for_list_tags_for_resources_input.py +149 -0
- byteplussdkvpc20250901/models/tag_for_create_network_interface_input.py +149 -0
- byteplussdkvpc20250901/models/tag_for_create_route_table_input.py +149 -0
- byteplussdkvpc20250901/models/tag_for_create_security_group_input.py +149 -0
- byteplussdkvpc20250901/models/tag_for_create_subnet_input.py +149 -0
- byteplussdkvpc20250901/models/tag_for_create_vpc_input.py +149 -0
- byteplussdkvpc20250901/models/tag_for_describe_network_interface_attributes_output.py +149 -0
- byteplussdkvpc20250901/models/tag_for_describe_network_interfaces_output.py +149 -0
- byteplussdkvpc20250901/models/tag_for_describe_route_table_list_output.py +149 -0
- byteplussdkvpc20250901/models/tag_for_describe_security_group_attributes_output.py +149 -0
- byteplussdkvpc20250901/models/tag_for_describe_security_groups_output.py +149 -0
- byteplussdkvpc20250901/models/tag_for_describe_subnet_attributes_output.py +149 -0
- byteplussdkvpc20250901/models/tag_for_describe_subnets_output.py +149 -0
- byteplussdkvpc20250901/models/tag_for_describe_vpc_attributes_output.py +149 -0
- byteplussdkvpc20250901/models/tag_for_describe_vpcs_output.py +149 -0
- byteplussdkvpc20250901/models/tag_for_tag_resources_input.py +150 -0
- byteplussdkvpc20250901/models/tag_resources_request.py +183 -0
- byteplussdkvpc20250901/models/tag_resources_response.py +123 -0
- byteplussdkvpc20250901/models/unassign_private_ip_addresses_request.py +150 -0
- byteplussdkvpc20250901/models/unassign_private_ip_addresses_response.py +149 -0
- byteplussdkvpc20250901/models/untag_resources_request.py +183 -0
- byteplussdkvpc20250901/models/untag_resources_response.py +123 -0
- byteplussdkvpc20250901/models/vpc_for_describe_vpcs_output.py +539 -0
- {byteplus_python_sdk_v2-3.0.43.dist-info → byteplus_python_sdk_v2-3.0.45.dist-info}/WHEEL +0 -0
- {byteplus_python_sdk_v2-3.0.43.dist-info → byteplus_python_sdk_v2-3.0.45.dist-info}/licenses/LICENSE.txt +0 -0
- {byteplus_python_sdk_v2-3.0.43.dist-info → byteplus_python_sdk_v2-3.0.45.dist-info}/licenses/NOTICE.md +0 -0
|
@@ -4,10 +4,9 @@ import uuid
|
|
|
4
4
|
from datetime import datetime
|
|
5
5
|
|
|
6
6
|
import dateutil.parser
|
|
7
|
+
import dateutil.tz
|
|
7
8
|
|
|
8
|
-
from byteplussdkcore import UniversalApi, UniversalInfo, ApiClient, Configuration
|
|
9
9
|
from .provider import Provider, CredentialValue
|
|
10
|
-
import json
|
|
11
10
|
|
|
12
11
|
|
|
13
12
|
class AssumeRoleSamlCredentials:
|
|
@@ -20,25 +19,46 @@ class AssumeRoleSamlCredentials:
|
|
|
20
19
|
|
|
21
20
|
|
|
22
21
|
class StsSamlCredentialProvider(Provider):
|
|
23
|
-
|
|
24
|
-
|
|
22
|
+
PROVIDER_NAME = "StsSamlCredentialProvider"
|
|
23
|
+
|
|
24
|
+
def __init__(self, role_name=None, account_id=None, provider_name=None, saml_resp=None,
|
|
25
|
+
duration_seconds=3600, scheme='https',
|
|
26
|
+
host='sts.ap-southeast-1.byteplusapi.com', region='ap-southeast-1', timeout=30, expired_buffer_seconds=60,
|
|
27
|
+
policy=None, role_trn=None, saml_provider_trn=None, max_retries=3, retry_interval=1):
|
|
25
28
|
self.role_name = role_name
|
|
26
29
|
self.account_id = account_id
|
|
27
30
|
self.provider_name = provider_name
|
|
28
31
|
self.saml_resp = saml_resp
|
|
29
32
|
|
|
33
|
+
if role_trn:
|
|
34
|
+
self._role_trn = role_trn
|
|
35
|
+
elif role_name and account_id:
|
|
36
|
+
self._role_trn = 'trn:iam::' + account_id + ':role/' + role_name
|
|
37
|
+
else:
|
|
38
|
+
self._role_trn = None
|
|
39
|
+
|
|
40
|
+
if saml_provider_trn:
|
|
41
|
+
self._saml_provider_trn = saml_provider_trn
|
|
42
|
+
elif provider_name:
|
|
43
|
+
resolved_account_id = account_id or self._extract_account_id_from_role_trn(self._role_trn)
|
|
44
|
+
if resolved_account_id:
|
|
45
|
+
self._saml_provider_trn = 'trn:iam::' + resolved_account_id + ':saml-provider/' + provider_name
|
|
46
|
+
else:
|
|
47
|
+
self._saml_provider_trn = None
|
|
48
|
+
else:
|
|
49
|
+
self._saml_provider_trn = None
|
|
50
|
+
|
|
30
51
|
self.timeout = timeout
|
|
52
|
+
self.max_retries = max(max_retries, 1)
|
|
53
|
+
self.retry_interval = retry_interval
|
|
31
54
|
self.duration_seconds = duration_seconds
|
|
32
55
|
|
|
33
56
|
self.host = host
|
|
34
57
|
self.region = region
|
|
35
58
|
self.scheme = scheme
|
|
36
59
|
self.policy = policy
|
|
60
|
+
|
|
37
61
|
self.expired_time = None
|
|
38
|
-
if host is None:
|
|
39
|
-
raise ValueError('host is required')
|
|
40
|
-
if region is None:
|
|
41
|
-
raise ValueError('region is required')
|
|
42
62
|
if expired_buffer_seconds > 600:
|
|
43
63
|
raise ValueError('expired_buffer_seconds must be less than or equal to 600')
|
|
44
64
|
self.expired_buffer_seconds = expired_buffer_seconds
|
|
@@ -63,40 +83,65 @@ class StsSamlCredentialProvider(Provider):
|
|
|
63
83
|
self.refresh()
|
|
64
84
|
return self.credentials
|
|
65
85
|
|
|
86
|
+
@staticmethod
|
|
87
|
+
def _extract_account_id_from_role_trn(role_trn):
|
|
88
|
+
if not role_trn:
|
|
89
|
+
return None
|
|
90
|
+
parts = role_trn.split(':')
|
|
91
|
+
if len(parts) >= 4 and parts[0] == 'trn' and parts[1] == 'iam' and parts[3]:
|
|
92
|
+
return parts[3]
|
|
93
|
+
return None
|
|
94
|
+
|
|
66
95
|
def _assume_role_saml(self):
|
|
96
|
+
if not self._role_trn:
|
|
97
|
+
raise RuntimeError(
|
|
98
|
+
"{}: role_trn not provided. Set role_trn or (role_name + account_id).".format(self.PROVIDER_NAME)
|
|
99
|
+
)
|
|
100
|
+
if not self._saml_provider_trn:
|
|
101
|
+
raise RuntimeError(
|
|
102
|
+
"{}: saml_provider_trn not provided. "
|
|
103
|
+
"Set saml_provider_trn, or (account_id + provider_name), "
|
|
104
|
+
"or (role_trn + provider_name).".format(self.PROVIDER_NAME)
|
|
105
|
+
)
|
|
106
|
+
if not self.saml_resp:
|
|
107
|
+
raise RuntimeError(
|
|
108
|
+
"{}: saml_resp is required.".format(self.PROVIDER_NAME)
|
|
109
|
+
)
|
|
110
|
+
|
|
67
111
|
params = {
|
|
68
112
|
'DurationSeconds': self.duration_seconds,
|
|
69
113
|
'RoleSessionName': uuid.uuid4().hex,
|
|
70
|
-
'RoleTrn':
|
|
71
|
-
'SAMLProviderTrn':
|
|
114
|
+
'RoleTrn': self._role_trn,
|
|
115
|
+
'SAMLProviderTrn': self._saml_provider_trn,
|
|
72
116
|
'SAMLResp': self.saml_resp,
|
|
73
117
|
}
|
|
74
118
|
if self.policy is not None:
|
|
75
119
|
params['Policy'] = self.policy
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
if 'Credentials' not in
|
|
90
|
-
raise RuntimeError(
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
120
|
+
from byteplussdkcore import ApiClient, Configuration
|
|
121
|
+
resp_result = ApiClient(Configuration())._sts_call(
|
|
122
|
+
action='AssumeRoleWithSAML',
|
|
123
|
+
version='2018-01-01',
|
|
124
|
+
params=params,
|
|
125
|
+
host=self.host,
|
|
126
|
+
scheme=self.scheme,
|
|
127
|
+
region=self.region,
|
|
128
|
+
timeout=self.timeout,
|
|
129
|
+
max_retries=self.max_retries,
|
|
130
|
+
retry_interval=self.retry_interval,
|
|
131
|
+
provider_name=self.PROVIDER_NAME,
|
|
132
|
+
)
|
|
133
|
+
if 'Credentials' not in resp_result:
|
|
134
|
+
raise RuntimeError(
|
|
135
|
+
'failed to retrieve credentials from sts: {}:{}'.format(
|
|
136
|
+
self.PROVIDER_NAME, str(resp_result)
|
|
137
|
+
)
|
|
138
|
+
)
|
|
139
|
+
resp_cred = resp_result['Credentials']
|
|
140
|
+
|
|
141
|
+
dt = dateutil.parser.parse(resp_cred.get('Expiration', resp_cred.get('ExpiredTime')))
|
|
97
142
|
self.expired_time = (dt - datetime(1970, 1, 1, tzinfo=dateutil.tz.tzutc())).total_seconds()
|
|
98
143
|
|
|
99
144
|
self.credentials = CredentialValue(ak=resp_cred['AccessKeyId'],
|
|
100
145
|
sk=resp_cred['SecretAccessKey'],
|
|
101
146
|
session_token=resp_cred['SessionToken'],
|
|
102
|
-
provider_name='StsSamlCredentialProvider')
|
|
147
|
+
provider_name='StsSamlCredentialProvider')
|
byteplussdkcore/configuration.py
CHANGED
|
@@ -287,7 +287,7 @@ class Configuration(six.with_metaclass(TypeWithDefault, object)):
|
|
|
287
287
|
"OS: {env}\n" \
|
|
288
288
|
"Python Version: {pyversion}\n" \
|
|
289
289
|
"Version of the API: 0.1.0\n" \
|
|
290
|
-
"SDK Package Version: 3.0.
|
|
290
|
+
"SDK Package Version: 3.0.45".\
|
|
291
291
|
format(env=sys.platform, pyversion=sys.version)
|
|
292
292
|
|
|
293
293
|
@property
|
|
@@ -135,6 +135,34 @@ default_endpoint = {
|
|
|
135
135
|
region_endpoint_map={},
|
|
136
136
|
fallback_endpoint=fallback_endpoint,
|
|
137
137
|
),
|
|
138
|
+
'vepfs': ServiceEndpointInfo(
|
|
139
|
+
service='vepfs',
|
|
140
|
+
is_global=False,
|
|
141
|
+
global_endpoint='',
|
|
142
|
+
region_endpoint_map={},
|
|
143
|
+
fallback_endpoint=fallback_endpoint,
|
|
144
|
+
),
|
|
145
|
+
'vke': ServiceEndpointInfo(
|
|
146
|
+
service='vke',
|
|
147
|
+
is_global=False,
|
|
148
|
+
global_endpoint='',
|
|
149
|
+
region_endpoint_map={},
|
|
150
|
+
fallback_endpoint=fallback_endpoint,
|
|
151
|
+
),
|
|
152
|
+
'kickart': ServiceEndpointInfo(
|
|
153
|
+
service='kickart',
|
|
154
|
+
is_global=True,
|
|
155
|
+
global_endpoint='',
|
|
156
|
+
region_endpoint_map={},
|
|
157
|
+
fallback_endpoint=fallback_endpoint,
|
|
158
|
+
),
|
|
159
|
+
'rds_mssql': ServiceEndpointInfo(
|
|
160
|
+
service='rds_mssql',
|
|
161
|
+
is_global=False,
|
|
162
|
+
global_endpoint='',
|
|
163
|
+
region_endpoint_map={},
|
|
164
|
+
fallback_endpoint=fallback_endpoint,
|
|
165
|
+
),
|
|
138
166
|
}
|
|
139
167
|
|
|
140
168
|
|
|
@@ -4,8 +4,6 @@ import re
|
|
|
4
4
|
from byteplussdkcore.endpoint.endpoint_provider import EndpointProvider, ResolvedEndpoint
|
|
5
5
|
|
|
6
6
|
|
|
7
|
-
# -----------------------------
|
|
8
|
-
# Errors (模仿 volcengineerr.New)
|
|
9
7
|
# -----------------------------
|
|
10
8
|
class StandProviderError(Exception):
|
|
11
9
|
def __init__(self, code, message):
|
|
@@ -167,6 +165,7 @@ ServiceInfos = {
|
|
|
167
165
|
"vms": ServiceInfo("vms", False),
|
|
168
166
|
"eco_partner": ServiceInfo("eco_partner", True),
|
|
169
167
|
"smc": ServiceInfo("smc", True),
|
|
168
|
+
"kickart": ServiceInfo("kickart", True),
|
|
170
169
|
}
|
|
171
170
|
|
|
172
171
|
|
|
@@ -342,6 +341,6 @@ if __name__ == "__main__":
|
|
|
342
341
|
region="cn-hongkon",
|
|
343
342
|
use_dual_stack=False,
|
|
344
343
|
)
|
|
345
|
-
print(ep.host) # 例如:vpc.ap-southeast-1.
|
|
344
|
+
print(ep.host) # 例如:vpc.ap-southeast-1.byteplus-api.com
|
|
346
345
|
except Exception as e:
|
|
347
346
|
e.print()
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
# coding: utf-8
|
|
2
|
+
"""
|
|
3
|
+
RDS MySQL connection authentication utilities.
|
|
4
|
+
|
|
5
|
+
This module provides utilities for generating authentication tokens for RDS MySQL database connections.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from byteplussdkcore.endpoint.providers.standard_provider import StandardEndpointResolver
|
|
9
|
+
from byteplussdkcore.interceptor import InterceptorChain, InterceptorContext, SignRequestInterceptor, \
|
|
10
|
+
ResolveEndpointInterceptor
|
|
11
|
+
from byteplussdkcore.interceptor import Request
|
|
12
|
+
|
|
13
|
+
DEFAULT_SERVICE = 'rds_mysql'
|
|
14
|
+
DEFAULT_API_VERSION = '2022-01-01'
|
|
15
|
+
DEFAULT_API = 'ConnectDatabase'
|
|
16
|
+
DEFAULT_EXPIRES = 900
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def build_auth_token(api_client, db_user, instance_id, expires=None):
|
|
20
|
+
"""
|
|
21
|
+
Build an authentication token (presigned URL query string) for connecting to RDS MySQL database.
|
|
22
|
+
|
|
23
|
+
:param api_client: ApiClient instance
|
|
24
|
+
:param db_user: Database username
|
|
25
|
+
:param instance_id: RDS instance ID
|
|
26
|
+
:param expires: Token expiration time in seconds (default: 900, i.e., 15 minutes)
|
|
27
|
+
:return: Presigned query string for database authentication
|
|
28
|
+
:raises ValueError: If required parameters are missing or invalid
|
|
29
|
+
"""
|
|
30
|
+
# Validate api_client
|
|
31
|
+
if api_client is None:
|
|
32
|
+
raise ValueError("api_client must not be None")
|
|
33
|
+
|
|
34
|
+
configuration = api_client.configuration
|
|
35
|
+
region = configuration.region
|
|
36
|
+
|
|
37
|
+
# Validate inputs
|
|
38
|
+
if not region:
|
|
39
|
+
raise ValueError("region must not be empty")
|
|
40
|
+
|
|
41
|
+
if not db_user:
|
|
42
|
+
raise ValueError("db_user must not be empty")
|
|
43
|
+
|
|
44
|
+
if not instance_id:
|
|
45
|
+
raise ValueError("instance_id must not be empty")
|
|
46
|
+
|
|
47
|
+
# Set default expiration time
|
|
48
|
+
if expires is None or expires <= 0:
|
|
49
|
+
expires = DEFAULT_EXPIRES
|
|
50
|
+
|
|
51
|
+
# Build query parameters
|
|
52
|
+
query = {
|
|
53
|
+
'Action': DEFAULT_API,
|
|
54
|
+
'Version': DEFAULT_API_VERSION,
|
|
55
|
+
'X-Expires': str(expires),
|
|
56
|
+
'DBUser': db_user,
|
|
57
|
+
'InstanceId': instance_id,
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
# Create Request with presign mode
|
|
61
|
+
request = Request(configuration,
|
|
62
|
+
resource_path='/{}/{}/{}/get/text_plain/'.format(DEFAULT_API, DEFAULT_API_VERSION,
|
|
63
|
+
DEFAULT_SERVICE),
|
|
64
|
+
method='GET',
|
|
65
|
+
query_params=query)
|
|
66
|
+
request.endpoint_provider = StandardEndpointResolver()
|
|
67
|
+
request.service = DEFAULT_SERVICE
|
|
68
|
+
request.is_presign = True
|
|
69
|
+
|
|
70
|
+
context = InterceptorContext(request=request)
|
|
71
|
+
|
|
72
|
+
# Step 1: Resolve endpoint to get host
|
|
73
|
+
resolve_chain = InterceptorChain()
|
|
74
|
+
resolve_chain.append_request_interceptor(ResolveEndpointInterceptor())
|
|
75
|
+
context = resolve_chain.execute_request(context)
|
|
76
|
+
|
|
77
|
+
# Step 2: Save resolved host to X-Host query param, then clear host so it won't be signed
|
|
78
|
+
resolved_host = context.request.host
|
|
79
|
+
context.request.query_params['X-Host'] = '{scheme}://{host}'.format(
|
|
80
|
+
scheme=context.request.scheme, host=resolved_host)
|
|
81
|
+
context.request.host = None
|
|
82
|
+
|
|
83
|
+
# Step 3: Sign request (host is None, won't be included in signature)
|
|
84
|
+
sign_chain = InterceptorChain()
|
|
85
|
+
sign_chain.append_request_interceptor(SignRequestInterceptor())
|
|
86
|
+
context = sign_chain.execute_request(context)
|
|
87
|
+
|
|
88
|
+
return context.request.signed_query
|
|
@@ -63,6 +63,10 @@ class Request(object):
|
|
|
63
63
|
self.retryer = configuration.retryer
|
|
64
64
|
self.credential_provider = configuration.credential_provider
|
|
65
65
|
|
|
66
|
+
# Presign support
|
|
67
|
+
self.is_presign = False
|
|
68
|
+
self.signed_query = None
|
|
69
|
+
|
|
66
70
|
self.runtime_options = None
|
|
67
71
|
if hasattr(body, '_configuration') and isinstance(body._configuration, RuntimeOption):
|
|
68
72
|
self.runtime_options = body._configuration
|
|
@@ -19,7 +19,14 @@ class ResolveEndpointInterceptor(RequestInterceptor):
|
|
|
19
19
|
context.request.host = endpoint_resolver.host
|
|
20
20
|
prefix = endpoint_resolver.url_for(scheme)
|
|
21
21
|
else:
|
|
22
|
-
|
|
22
|
+
if host.startswith('https://'):
|
|
23
|
+
prefix = host
|
|
24
|
+
context.request.host = host[len('https://'):]
|
|
25
|
+
elif host.startswith('http://'):
|
|
26
|
+
prefix = host
|
|
27
|
+
context.request.host = host[len('http://'):]
|
|
28
|
+
else:
|
|
29
|
+
prefix = scheme + '://' + host
|
|
23
30
|
context.request.url = prefix + context.request.true_path
|
|
24
31
|
sdk_core_logger.debug_endpoint(
|
|
25
32
|
"Using endpoint: %s", context.request.host
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import json
|
|
2
|
+
import threading
|
|
2
3
|
|
|
3
4
|
from byteplussdkcore.signv4 import SignerV4
|
|
4
5
|
from .interceptor import RequestInterceptor
|
|
5
6
|
|
|
7
|
+
_DEFAULT_PROVIDER_INIT_LOCK = threading.Lock()
|
|
8
|
+
|
|
6
9
|
|
|
7
10
|
class SignRequestInterceptor(RequestInterceptor):
|
|
8
11
|
|
|
@@ -10,25 +13,50 @@ class SignRequestInterceptor(RequestInterceptor):
|
|
|
10
13
|
return 'byteplus-sign-request-interceptor'
|
|
11
14
|
|
|
12
15
|
def intercept(self, context):
|
|
13
|
-
#
|
|
16
|
+
# Auto-inject DefaultCredentialProvider when no credentials are configured
|
|
17
|
+
if context.request.credential_provider is None and not context.request.ak and not context.request.sk:
|
|
18
|
+
from byteplussdkcore.auth.providers.default_provider import DefaultCredentialProvider
|
|
19
|
+
provider = getattr(self, '_default_credential_provider', None)
|
|
20
|
+
if provider is None:
|
|
21
|
+
with _DEFAULT_PROVIDER_INIT_LOCK:
|
|
22
|
+
provider = getattr(self, '_default_credential_provider', None)
|
|
23
|
+
if provider is None:
|
|
24
|
+
provider = DefaultCredentialProvider()
|
|
25
|
+
self._default_credential_provider = provider
|
|
26
|
+
context.request.credential_provider = provider
|
|
27
|
+
|
|
28
|
+
# Resolve credentials from provider (STS AssumeRole / OIDC / SAML / default chain)
|
|
14
29
|
if context.request.credential_provider is not None:
|
|
15
|
-
credentials = context.request.credential_provider.get_credentials()
|
|
30
|
+
credentials = context.request.credential_provider.get_credentials()
|
|
16
31
|
context.request.ak = credentials.ak
|
|
17
32
|
context.request.sk = credentials.sk
|
|
18
33
|
context.request.session_token = credentials.session_token
|
|
19
34
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
35
|
+
if context.request.is_presign:
|
|
36
|
+
context.request.signed_query = SignerV4.sign_url(
|
|
37
|
+
path=context.request.true_path,
|
|
38
|
+
method=context.request.method,
|
|
39
|
+
query=context.request.query_params,
|
|
40
|
+
ak=context.request.ak,
|
|
41
|
+
sk=context.request.sk,
|
|
42
|
+
region=context.request.region,
|
|
43
|
+
service=context.request.service,
|
|
44
|
+
session_token=context.request.session_token,
|
|
45
|
+
host=context.request.host,
|
|
46
|
+
)
|
|
47
|
+
else:
|
|
48
|
+
self.update_params_for_auth(host=context.request.host, path=context.request.true_path,
|
|
49
|
+
method=context.request.method,
|
|
50
|
+
headers=context.request.header_params,
|
|
51
|
+
querys=context.request.query_params,
|
|
52
|
+
auth_settings=context.request.auth_settings,
|
|
53
|
+
body=context.request.body,
|
|
54
|
+
post_params=context.request.post_params,
|
|
55
|
+
service=context.request.service,
|
|
56
|
+
ak=context.request.ak,
|
|
57
|
+
sk=context.request.sk,
|
|
58
|
+
session_token=context.request.session_token,
|
|
59
|
+
region=context.request.region)
|
|
32
60
|
return context
|
|
33
61
|
|
|
34
62
|
@staticmethod
|
byteplussdkcore/signv4.py
CHANGED
|
@@ -92,3 +92,89 @@ class SignerV4(object):
|
|
|
92
92
|
@staticmethod
|
|
93
93
|
def hmac_sha256(key, msg):
|
|
94
94
|
return hmac.new(key, msg.encode('utf-8'), hashlib.sha256).digest()
|
|
95
|
+
|
|
96
|
+
@staticmethod
|
|
97
|
+
def sign_url(path, method, query, ak, sk, region, service, session_token=None, host=None):
|
|
98
|
+
"""
|
|
99
|
+
Generate presigned URL query string (AWS Signature V4)
|
|
100
|
+
|
|
101
|
+
:param path: Request path
|
|
102
|
+
:param method: HTTP method (GET, POST, etc.)
|
|
103
|
+
:param query: Query parameters dict
|
|
104
|
+
:param ak: Access Key
|
|
105
|
+
:param sk: Secret Key
|
|
106
|
+
:param region: Service region
|
|
107
|
+
:param service: Service name
|
|
108
|
+
:param session_token: Optional session token
|
|
109
|
+
:param host: Optional host header to sign
|
|
110
|
+
:return: Query string with signature
|
|
111
|
+
"""
|
|
112
|
+
format_date = datetime.datetime.utcnow().strftime("%Y%m%dT%H%M%SZ")
|
|
113
|
+
date = format_date[:8]
|
|
114
|
+
|
|
115
|
+
# Build credential scope
|
|
116
|
+
credential_scope = '/'.join([date, region, service, 'request'])
|
|
117
|
+
|
|
118
|
+
# Determine if host header should be signed
|
|
119
|
+
sign_host = host is not None and host != ''
|
|
120
|
+
|
|
121
|
+
# Add required query parameters
|
|
122
|
+
query = dict(query) # Make a copy to avoid modifying original
|
|
123
|
+
query['X-Date'] = format_date
|
|
124
|
+
query['X-NotSignBody'] = ''
|
|
125
|
+
query['X-Credential'] = ak + '/' + credential_scope
|
|
126
|
+
query['X-Algorithm'] = 'HMAC-SHA256'
|
|
127
|
+
query['X-SignedHeaders'] = 'host' if sign_host else ''
|
|
128
|
+
query['X-SignedQueries'] = ''
|
|
129
|
+
|
|
130
|
+
# Generate X-SignedQueries BEFORE adding X-Security-Token
|
|
131
|
+
query['X-SignedQueries'] = ';'.join(sorted(query.keys()))
|
|
132
|
+
signed_query_keys = set(query.keys())
|
|
133
|
+
|
|
134
|
+
# X-Security-Token must be added AFTER X-SignedQueries calculation
|
|
135
|
+
if session_token:
|
|
136
|
+
query['X-Security-Token'] = session_token
|
|
137
|
+
|
|
138
|
+
# Build canonical request
|
|
139
|
+
body_hash = hashlib.sha256(b'').hexdigest()
|
|
140
|
+
canonical_query_params = {k: v for k, v in query.items() if k in signed_query_keys}
|
|
141
|
+
|
|
142
|
+
if sign_host:
|
|
143
|
+
canonical_request = '\n'.join([
|
|
144
|
+
method,
|
|
145
|
+
path,
|
|
146
|
+
SignerV4.canonical_query(canonical_query_params),
|
|
147
|
+
'host:' + host + '\n',
|
|
148
|
+
'host',
|
|
149
|
+
body_hash
|
|
150
|
+
])
|
|
151
|
+
else:
|
|
152
|
+
canonical_request = '\n'.join([
|
|
153
|
+
method,
|
|
154
|
+
path,
|
|
155
|
+
SignerV4.canonical_query(canonical_query_params),
|
|
156
|
+
'\n',
|
|
157
|
+
'',
|
|
158
|
+
body_hash
|
|
159
|
+
])
|
|
160
|
+
sdk_core_logger.debug_sign("[sign_url] canonical_request:\n%s", canonical_request)
|
|
161
|
+
|
|
162
|
+
# Build string to sign
|
|
163
|
+
signing_str = '\n'.join([
|
|
164
|
+
'HMAC-SHA256',
|
|
165
|
+
format_date,
|
|
166
|
+
credential_scope,
|
|
167
|
+
hashlib.sha256(canonical_request.encode('utf-8')).hexdigest()
|
|
168
|
+
])
|
|
169
|
+
sdk_core_logger.debug_sign("[sign_url] string_to_sign:\n%s", signing_str)
|
|
170
|
+
|
|
171
|
+
# Calculate signature
|
|
172
|
+
signing_key = SignerV4.get_signing_secret_key_v4(sk, date, region, service)
|
|
173
|
+
signature = hmac.new(signing_key, signing_str.encode('utf-8'), hashlib.sha256).hexdigest()
|
|
174
|
+
sdk_core_logger.debug_sign("[sign_url] calculated signature: %s", signature)
|
|
175
|
+
|
|
176
|
+
# Add signature to query
|
|
177
|
+
query['X-Signature'] = signature
|
|
178
|
+
|
|
179
|
+
# Return encoded query string
|
|
180
|
+
return urlencode(sorted(query.items()))
|
|
@@ -10,8 +10,6 @@ from byteplussdkarkruntime import AsyncArk
|
|
|
10
10
|
|
|
11
11
|
# 2.If you authorize your endpoint with Identity and Access Management(IAM), set your api key to environment variable "BYTEPLUS_ACCESSKEY", "BYTEPLUS_SECRETKEY"
|
|
12
12
|
# or specify ak&sk by Ark(ak="${YOUR_AK}", sk="${YOUR_SK}").
|
|
13
|
-
# To get your ak&sk, please refer to this document(https://www.volcengine.com/docs/6291/65568)
|
|
14
|
-
# For more information,please check this document(https://www.volcengine.com/docs/82379/1263279)
|
|
15
13
|
client = AsyncArk()
|
|
16
14
|
|
|
17
15
|
|
|
@@ -6,10 +6,8 @@ from byteplussdkarkruntime import Ark
|
|
|
6
6
|
# Note: If you use an API key, this API key will not be refreshed.
|
|
7
7
|
# To prevent the API from expiring and failing after some time, choose an API key with no expiration date.
|
|
8
8
|
|
|
9
|
-
# 2.If you authorize your endpoint with
|
|
9
|
+
# 2.If you authorize your endpoint with BytePlus Identity and Access Management(IAM), set your api key to environment variable "BYTEPLUS_ACCESSKEY", "BYTEPLUS_SECRETKEY"
|
|
10
10
|
# or specify ak&sk by Ark(ak="${YOUR_AK}", sk="${YOUR_SK}").
|
|
11
|
-
# To get your ak&sk, please refer to this document(https://www.volcengine.com/docs/6291/65568)
|
|
12
|
-
# For more information,please check this document(https://www.volcengine.com/docs/82379/1263279)
|
|
13
11
|
client = Ark()
|
|
14
12
|
|
|
15
13
|
if __name__ == "__main__":
|
|
@@ -7,11 +7,9 @@ from byteplussdkarkruntime import Ark
|
|
|
7
7
|
# Note: If you use an API key, this API key will not be refreshed.
|
|
8
8
|
# To prevent the API from expiring and failing after some time, choose an API key with no expiration date.
|
|
9
9
|
|
|
10
|
-
# 2.If you authorize your endpoint with
|
|
10
|
+
# 2.If you authorize your endpoint with BytePlus Identity and Access Management(IAM),
|
|
11
11
|
# set your api key to environment variable "BYTEPLUS_ACCESSKEY", "BYTEPLUS_SECRETKEY"
|
|
12
12
|
# or specify ak&sk by Ark(ak="${YOUR_AK}", sk="${YOUR_SK}").
|
|
13
|
-
# To get your ak&sk, please refer to this document(https://www.volcengine.com/docs/6291/65568)
|
|
14
|
-
# For more information,please check this document(https://www.volcengine.com/docs/82379/1263279)
|
|
15
13
|
client = Ark()
|
|
16
14
|
|
|
17
15
|
if __name__ == "__main__":
|