本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
DetachThingPrincipal与 Amazon SDK 或 CLI 配合使用
以下代码示例演示如何使用 DetachThingPrincipal。
- .NET
-
- 适用于 .NET 的 Amazon SDK (v4)
-
注意
还有更多相关信息 GitHub。在 Amazon 代码示例存储库
中查找完整示例,了解如何进行设置和运行。 /// <summary> /// Detaches a certificate from an IoT Thing. /// </summary> /// <param name="thingName">The name of the Thing.</param> /// <param name="certificateArn">The ARN of the certificate to detach.</param> /// <returns>True if successful, false otherwise.</returns> public async Task<bool> DetachThingPrincipalAsync(string thingName, string certificateArn) { try { var request = new DetachThingPrincipalRequest { ThingName = thingName, Principal = certificateArn }; await _amazonIoT.DetachThingPrincipalAsync(request); _logger.LogInformation($"Detached certificate {certificateArn} from Thing {thingName}"); return true; } catch (Amazon.IoT.Model.ResourceNotFoundException ex) { _logger.LogError($"Cannot detach certificate - resource not found: {ex.Message}"); return false; } catch (Exception ex) { _logger.LogError($"Couldn't detach certificate from Thing. Here's why: {ex.Message}"); return false; } }-
有关 API 的详细信息,请参阅 适用于 .NET 的 Amazon SDK API 参考DetachThingPrincipal中的。
-
- C++
-
- SDK for C++
-
注意
还有更多相关信息 GitHub。在 Amazon 代码示例存储库
中查找完整示例,了解如何进行设置和运行。 //! Detach a principal from an AWS IoT thing. /*! \param principal: A principal to detach. \param thingName: The name for the thing. \param clientConfiguration: AWS client configuration. \return bool: Function succeeded. */ bool AwsDoc::IoT::detachThingPrincipal(const Aws::String &principal, const Aws::String &thingName, const Aws::Client::ClientConfiguration &clientConfiguration) { Aws::IoT::IoTClient iotClient(clientConfiguration); Aws::IoT::Model::DetachThingPrincipalRequest detachThingPrincipalRequest; detachThingPrincipalRequest.SetThingName(thingName); detachThingPrincipalRequest.SetPrincipal(principal); Aws::IoT::Model::DetachThingPrincipalOutcome outcome = iotClient.DetachThingPrincipal( detachThingPrincipalRequest); if (outcome.IsSuccess()) { std::cout << "Successfully detached principal " << principal << " from thing " << thingName << std::endl; } else { std::cerr << "Failed to detach principal " << principal << " from thing " << thingName << ": " << outcome.GetError().GetMessage() << std::endl; } return outcome.IsSuccess(); }-
有关 API 的详细信息,请参阅 适用于 C++ 的 Amazon SDK API 参考DetachThingPrincipal中的。
-
- CLI
-
- Amazon CLI
-
将与事物 certificate/principal 分离
以下
detach-thing-principal示例从指定事物中移除代表一个主体的证书。aws iot detach-thing-principal \ --thing-name"MyLightBulb"\ --principal"arn:aws:iot:us-west-2:123456789012:cert/604c48437a57b7d5fc5d137c5be75011c6ee67c9a6943683a1acb4b1626bac36"此命令不生成任何输出。
有关更多信息,请参阅《Amazon IoT 开发人员指南》中的如何使用注册表管理事物。
-
有关 API 的详细信息,请参阅Amazon CLI 命令参考DetachThingPrincipal
中的。
-
- Java
-
- 适用于 Java 的 SDK 2.x
-
注意
还有更多相关信息 GitHub。在 Amazon 代码示例存储库
中查找完整示例,了解如何进行设置和运行。 /** * Detaches a principal (certificate) from an IoT Thing asynchronously. * * @param thingName The name of the IoT Thing. * @param certificateArn The ARN of the certificate to detach. * * This method initiates an asynchronous request to detach a certificate from an IoT Thing. * If the detachment is successful, it prints a confirmation message. * If an exception occurs, it prints the error message. */ public void detachThingPrincipal(String thingName, String certificateArn) { DetachThingPrincipalRequest thingPrincipalRequest = DetachThingPrincipalRequest.builder() .principal(certificateArn) .thingName(thingName) .build(); CompletableFuture<DetachThingPrincipalResponse> future = getAsyncClient().detachThingPrincipal(thingPrincipalRequest); future.whenComplete((voidResult, ex) -> { if (ex == null) { System.out.println(certificateArn + " was successfully removed from " + thingName); } else { Throwable cause = ex.getCause(); if (cause instanceof IotException) { System.err.println(((IotException) cause).awsErrorDetails().errorMessage()); } else { System.err.println("Unexpected error: " + ex.getMessage()); } } }); future.join(); }-
有关 API 的详细信息,请参阅 Amazon SDK for Java 2.x API 参考DetachThingPrincipal中的。
-
- Kotlin
-
- 适用于 Kotlin 的 SDK
-
注意
还有更多相关信息 GitHub。在 Amazon 代码示例存储库
中查找完整示例,了解如何进行设置和运行。 suspend fun detachThingPrincipal( thingNameVal: String, certificateArn: String, ) { val thingPrincipalRequest = DetachThingPrincipalRequest { principal = certificateArn thingName = thingNameVal } IotClient.fromEnvironment { region = "us-east-1" }.use { iotClient -> iotClient.detachThingPrincipal(thingPrincipalRequest) println("$certificateArn was successfully removed from $thingNameVal") } }-
有关 API 的详细信息,请参阅适用DetachThingPrincipal
于 K otlin 的Amazon SDK API 参考。
-
- Python
-
- 适用于 Python 的 SDK(Boto3)
-
注意
还有更多相关信息 GitHub。在 Amazon 代码示例存储库
中查找完整示例,了解如何进行设置和运行。 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 detach_thing_principal(self, thing_name, principal): """ Detaches a certificate from an AWS IoT thing. :param thing_name: The name of the thing. :param principal: The ARN of the certificate. """ try: self.iot_client.detach_thing_principal( thingName=thing_name, principal=principal ) logger.info("Detached principal %s from thing %s.", principal, thing_name) except ClientError as err: if err.response["Error"]["Code"] == "ResourceNotFoundException": logger.error("Cannot detach principal. Resource not found.") return logger.error( "Couldn't detach principal from thing. Here's why: %s: %s", err.response["Error"]["Code"], err.response["Error"]["Message"], ) raise-
有关 API 的详细信息,请参阅适用DetachThingPrincipal于 Python 的Amazon SDK (Boto3) API 参考。
-
有关 S Amazon DK 开发者指南和代码示例的完整列表,请参阅Amazon IoT 与 Amazon SDK 一起使用。本主题还包括有关入门的信息以及有关先前的 SDK 版本的详细信息。