

文件AWS開發套件範例 GitHub 儲存庫中有更多可用的 [AWSSDK 範例](https://github.com/awsdocs/aws-doc-sdk-examples)。

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

# `GetComponent` 搭配 AWSSDK 或 CLI 使用
<a name="greengrassv2_example_greengrassv2_GetComponent_section"></a>

下列程式碼範例示範如何使用 `GetComponent`。

動作範例是大型程式的程式碼摘錄，必須在內容中執行。您可以在下列程式碼範例的內容中看到此動作：
+  [了解AWS IoT Greengrass V2基本概念](greengrassv2_example_greengrassv2_Scenario_section.md) 

------
#### [ CLI ]

**AWS CLI**  
**範例 1：下載 YAML 格式 (Linux、macOS 或 Unix) 的元件配方**  
下列 `get-component` 範例會將 Hello World 元件的配方下載到 YAML 格式檔案。此命令會執行下列動作：  
使用 `--output` 和 `--query` 參數來控制命令的輸出。這些參數會從命令的輸出擷取配方 Blob。如需有關控制輸出的詳細資訊，請參閱《*AWS Command Line Interface 使用者指南*》中的[控制命令輸出](https://docs.aws.amazon.com/cli/latest/userguide/controlling-output.html)。使用 `base64` 公用程式。此公用程式會將解壓縮的 Blob 解碼為原始文字。成功的 `get-component` 命令傳回的 Blob 是 base64 編碼文字。您必須解碼此 Blob，以取得原始文字。將解碼的文字儲存至檔案。命令 (`> com.example.HelloWorld-1.0.0.json`) 的最終區段會將解碼的文字儲存至檔案。  

```
aws greengrassv2 get-component \
    --arn {{arn:aws:greengrass:us-west-2:123456789012:components:com.example.HelloWorld:versions:1.0.0}} \
    --recipe-output-format {{YAML}} \
    --query {{recipe}} \
    --output {{text}} {{|}} {{base64}} --decode {{>}} {{com.example.HelloWorld-1.0.0.json}}
```
如需詳細資訊，請參閱《*AWS IoT Greengrass V2 開發人員指南*》中的[管理元件](https://docs.aws.amazon.com/greengrass/v2/developerguide/manage-components.html)。  
**範例 2：下載 YAML 格式 (Windows CMD) 的元件配方**  
下列 `get-component` 範例會將 Hello World 元件的配方下載到 YAML 格式檔案。此命令使用 `certutil` 公用程式。  

```
aws greengrassv2 get-component {{^}}
    --arn {{arn:aws:greengrass:us-west-2:675946970638:components:com.example.HelloWorld:versions:1.0.0}} {{^}}
    --recipe-output-format {{YAML}} {{^}}
    --query {{recipe}} {{^}}
    --output {{text}} {{>}} {{com.example.HelloWorld-1.0.0.yaml.b64}}

{{certutil}} {{-decode}} {{com.example.HelloWorld-1.0.0.yaml.b64}} {{com.example.HelloWorld-1.0.0.yaml}}
```
如需詳細資訊，請參閱《*AWS IoT Greengrass V2 開發人員指南*》中的[管理元件](https://docs.aws.amazon.com/greengrass/v2/developerguide/manage-components.html)。  
**範例 3：下載 YAML 格式 (Windows PowerShell) 的元件配方**  
下列 `get-component` 範例會將 Hello World 元件的配方下載到 YAML 格式檔案。此命令使用 `certutil` 公用程式。  

```
aws greengrassv2 get-component {{`}}
    --arn {{arn:aws:greengrass:us-west-2:675946970638:components:com.example.HelloWorld:versions:1.0.0}} {{`}}
    --recipe-output-format {{YAML}} {{`}}
    --query {{recipe}} {{`}}
    --output {{text}} {{>}} {{com.example.HelloWorld-1.0.0.yaml.b64}}

{{certutil}} {{-decode}} {{com.example.HelloWorld-1.0.0.yaml.b64}} {{com.example.HelloWorld-1.0.0.yaml}}
```
如需詳細資訊，請參閱《*AWS IoT Greengrass V2 開發人員指南*》中的[管理元件](https://docs.aws.amazon.com/greengrass/v2/developerguide/manage-components.html)。  
+  如需 API 詳細資訊，請參閱《AWS CLI 命令參考》**中的 [GetComponent](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/greengrassv2/get-component.html)。

------
#### [ Python ]

**適用於 Python 的 SDK (Boto3)**  
 GitHub 上提供更多範例。尋找完整範例，並了解如何在 [AWS 程式碼範例儲存庫](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/python/example_code/greengrassv2#code-examples)中設定和執行。

```
    def get_component(
        self, component_version_arn: str, recipe_output_format: str = "JSON"
    ) -> dict[str, Any]:
        """
        Gets the recipe for a specific component version.

        :param component_version_arn: The ARN of the specific component version.
        :param recipe_output_format: The format for the recipe ('JSON' or 'YAML').
        :return: A dictionary containing the recipe and metadata.
        """
        try:
            response = self.client.get_component(
                arn=component_version_arn,
                recipeOutputFormat=recipe_output_format,
            )
            logger.info("Retrieved component recipe for %s.", component_version_arn)
            return response
        except ClientError as err:
            if err.response["Error"]["Code"] == "ResourceNotFoundException":
                logger.error(
                    "Component version not found. Verify the component version ARN is correct. %s",
                    err.response["Error"]["Message"],
                )
            raise
```
+  如需 API 詳細資訊，請參閱《適用於 *AWSPython (Boto3) 的 SDK API 參考*》中的 [GetComponent](https://docs.aws.amazon.com/goto/boto3/greengrassv2-2020-11-30/GetComponent)。

------