DescribeEndpoint 搭配 AWS SDK 或 CLI 使用 - AWS IoT Core

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

DescribeEndpoint 搭配 AWS SDK 或 CLI 使用

下列程式碼範例示範如何使用 DescribeEndpoint

.NET
適用於 .NET 的 SDK (v4)
注意

GitHub 上提供更多範例。尋找完整範例,並了解如何在 AWS 程式碼範例儲存庫中設定和執行。

/// <summary> /// Gets the AWS IoT endpoint URL. /// </summary> /// <returns>The endpoint URL, or null if retrieval failed.</returns> public async Task<string?> DescribeEndpointAsync() { try { var request = new DescribeEndpointRequest { EndpointType = "iot:Data-ATS" }; var response = await _amazonIoT.DescribeEndpointAsync(request); _logger.LogInformation($"Retrieved endpoint: {response.EndpointAddress}"); return response.EndpointAddress; } catch (Amazon.IoT.Model.ThrottlingException ex) { _logger.LogWarning($"Request throttled, please try again later: {ex.Message}"); return null; } catch (Exception ex) { _logger.LogError($"Couldn't describe endpoint. Here's why: {ex.Message}"); return null; } }
  • 如需 API 詳細資訊,請參閱《適用於 .NET 的 AWS SDK API 參考》中的 DescribeEndpoint

C++
適用於 C++ 的 SDK
注意

GitHub 上提供更多範例。尋找完整範例,並了解如何在 AWS 程式碼範例儲存庫中設定和執行。

//! Describe the endpoint specific to the AWS account making the call. /*! \param endpointResult: String to receive the endpoint result. \param clientConfiguration: AWS client configuration. \return bool: Function succeeded. */ bool AwsDoc::IoT::describeEndpoint(Aws::String &endpointResult, const Aws::Client::ClientConfiguration &clientConfiguration) { Aws::String endpoint; Aws::IoT::IoTClient iotClient(clientConfiguration); Aws::IoT::Model::DescribeEndpointRequest describeEndpointRequest; describeEndpointRequest.SetEndpointType( "iot:Data-ATS"); // Recommended endpoint type. Aws::IoT::Model::DescribeEndpointOutcome outcome = iotClient.DescribeEndpoint( describeEndpointRequest); if (outcome.IsSuccess()) { std::cout << "Successfully described endpoint." << std::endl; endpointResult = outcome.GetResult().GetEndpointAddress(); } else { std::cerr << "Error describing endpoint" << outcome.GetError().GetMessage() << std::endl; } return outcome.IsSuccess(); }
  • 如需 API 詳細資訊,請參閱《適用於 C++ 的 AWS SDK API 參考》中的 DescribeEndpoint

CLI
AWS CLI

範例 1:取得您目前的 AWS 端點

下列describe-endpoint範例會擷取套用所有命令的預設 AWS 端點。

aws iot describe-endpoint

輸出:

{ "endpointAddress": "abc123defghijk.iot.us-west-2.amazonaws.com" }

如需詳細資訊,請參閱《AWS IoT 開發人員指南》中的 DescribeEndpoint

範例 2:取得您的 ATS 端點

下列 describe-endpoint 範例會擷取 Amazon Trust Services (ATS) 端點。

aws iot describe-endpoint \ --endpoint-type iot:Data-ATS

輸出:

{ "endpointAddress": "abc123defghijk-ats.iot.us-west-2.amazonaws.com" }

如需詳細資訊,請參閱 AWS IoT 開發人員指南中的 X.509 憑證和 AWS IoT

  • 如需 API 詳細資訊,請參閱《AWS CLI 命令參考》中的 DescribeEndpoint

Java
SDK for Java 2.x
注意

GitHub 上提供更多範例。尋找完整範例,並了解如何在 AWS 程式碼範例儲存庫中設定和執行。

/** * Describes the endpoint of the IoT service asynchronously. * * @return A CompletableFuture containing the full endpoint URL. * * This method initiates an asynchronous request to describe the endpoint of the IoT service. * If the request is successful, it prints and returns the full endpoint URL. * If an exception occurs, it prints the error message. */ public String describeEndpoint() { CompletableFuture<DescribeEndpointResponse> future = getAsyncClient().describeEndpoint(DescribeEndpointRequest.builder().endpointType("iot:Data-ATS").build()); final String[] result = {null}; future.whenComplete((endpointResponse, ex) -> { if (endpointResponse != null) { String endpointUrl = endpointResponse.endpointAddress(); String exString = getValue(endpointUrl); String fullEndpoint = "https://" + exString + "-ats.iot.us-east-1.amazonaws.com"; System.out.println("Full Endpoint URL: " + fullEndpoint); result[0] = fullEndpoint; } else { Throwable cause = (ex instanceof CompletionException) ? ex.getCause() : ex; if (cause instanceof IotException) { System.err.println(((IotException) cause).awsErrorDetails().errorMessage()); } else { System.err.println("Unexpected error: " + cause.getMessage()); } } }); future.join(); return result[0]; }
  • 如需 API 詳細資訊,請參閱《AWS SDK for Java 2.x API 參考》中的 DescribeEndpoint

Kotlin
適用於 Kotlin 的 SDK
注意

GitHub 上提供更多範例。尋找完整範例,並了解如何在 AWS 程式碼範例儲存庫中設定和執行。

suspend fun describeEndpoint(): String? { val request = DescribeEndpointRequest {} IotClient.fromEnvironment { region = "us-east-1" }.use { iotClient -> val endpointResponse = iotClient.describeEndpoint(request) val endpointUrl: String? = endpointResponse.endpointAddress val exString: String = getValue(endpointUrl) val fullEndpoint = "https://$exString-ats.iot.us-east-1.amazonaws.com" println("Full endpoint URL: $fullEndpoint") return fullEndpoint } }
  • 如需 API 詳細資訊,請參閱《適用於 Kotlin 的 AWS  SDK API 參考》中的 DescribeEndpoint

Python
適用於 Python 的 SDK (Boto3)
注意

GitHub 上提供更多範例。尋找完整範例,並了解如何在 AWS 程式碼範例儲存庫中設定和執行。

class IoTWrapper: """Encapsulates AWS IoT actions.""" def __init__(self, iot_client, iot_data_client=None): """ :param iot_client: A Boto3 AWS IoT client. :param iot_data_client: A Boto3 AWS IoT Data Plane client. """ self.iot_client = iot_client self.iot_data_client = iot_data_client @classmethod def from_client(cls): iot_client = boto3.client("iot") iot_data_client = boto3.client("iot-data") return cls(iot_client, iot_data_client) def describe_endpoint(self, endpoint_type="iot:Data-ATS"): """ Gets the AWS IoT endpoint. :param endpoint_type: The endpoint type. :return: The endpoint. """ try: response = self.iot_client.describe_endpoint(endpointType=endpoint_type) logger.info("Retrieved endpoint %s.", response["endpointAddress"]) except ClientError as err: if err.response["Error"]["Code"] == "ThrottlingException": logger.error("Request throttled. Please try again later.") else: logger.error( "Couldn't describe endpoint. Here's why: %s: %s", err.response["Error"]["Code"], err.response["Error"]["Message"], ) raise else: return response["endpointAddress"]
  • 如需 API 詳細資訊,請參閱《適用於 AWS Python (Boto3) 的 SDK API 參考》中的 DescribeEndpoint

Rust
適用於 Rust 的 SDK
注意

GitHub 上提供更多範例。尋找完整範例,並了解如何在 AWS 程式碼範例儲存庫中設定和執行。

async fn show_address(client: &Client, endpoint_type: &str) -> Result<(), Error> { let resp = client .describe_endpoint() .endpoint_type(endpoint_type) .send() .await?; println!("Endpoint address: {}", resp.endpoint_address.unwrap()); println!(); Ok(()) }
  • 如需 API 詳細資訊,請參閱《適用於 Rust 的AWS SDK API 參考》中的 DescribeEndpoint

如需 AWS SDK 開發人員指南和程式碼範例的完整清單,請參閱 AWS IoT 搭配 AWS SDK 使用。此主題也包含有關入門的資訊和舊版 SDK 的詳細資訊。