本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
与交互Amazon服务
Greengrass 核心设备使用 X.509 证书连接到Amazon IoT Core使用 TLS 相互身份验证协议。这些证书允许设备与Amazon IoT没有Amazon凭证,通常包含访问密钥 ID 和秘密访问密访问密密密。其他Amazon服务需要Amazon凭据而不是 X.509 证书来调用服务终端节点的 API 操作。Amazon IoT Core具有凭据提供程序,使设备能够使用其 X.509 证书进行身份验证Amazon请求。这些区域有:Amazon IoT凭证提供程序使用 X.509 证书对设备进行身份验证并颁发Amazon凭证的形式为具有有限权限的临时安全令牌。设备可使用此令牌对任何Amazon请求. 这样就不必再存储AmazonGreengrass。有关更多信息,请参阅 。授予直接呼叫Amazon服务中的Amazon IoT Core开发人员指南.
从获取凭证Amazon IoT,Greengrass,核心设备使用Amazon IoT角色别名指向 IAM 角色。此 IAM 角色称为令牌交换角色. 创建角色别名和令牌交换角色时,您在安装Amazon IoT GreengrassCore 软件。要指定核心设备使用的角色别名,请配置iotRoleAlias
的Greengrass 核心.
这些区域有:Amazon IoT凭据提供程序代表您承担令牌交换角色,以提供Amazon凭据到核心设备。您可以将适当的 IAM 策略附加到此角色,以允许您的核心设备访问Amazon资源,例如 S3 存储桶中的组件对象。有关如何配置令牌交换角色的详细信息,请参阅授权核心设备与Amazon服务.
Greengrass 核心设备存储Amazon凭证在默认情况下在 1 小时后到期。如果Amazon IoT Greengrass核心软件重新启动,必须再次获取凭据。您可以使用UpdateRoleAlias操作配置凭证的有效期。
Amazon IoT Greengrass提供了一个公共组件(令牌交换服务组件),您可以将其定义为自定义组件中的依赖项,以便与Amazon服务。令牌交换服务为您的组件提供了一个环境变量AWS_CONTAINER_CREDENTIALS_FULL_URI
,它将 URI 定义为本地服务器,该服务器提供Amazon凭证。在创建AmazonSDK 客户端,客户端将检查此环境变量并连接到本地服务器以检索Amazon凭证并使用它们对 API 请求进行签名。这样您就可以使用AmazonSDK 和其他工具来调用Amazon服务。有关更多信息,请参阅 Token Token Service。
获得 SupportAmazon凭据被添加到Amazon2016 年 7 月 13 日开发工具包。您的组件必须使用Amazon在该日期或之后创建的开发工具包版本。有关更多信息,请参阅 。使用支持的Amazon开发工具包中的Amazon Elastic Container Service 开发商指南.
要获取Amazon凭据,请定义aws.greengrass.TokenExchangeService
作为组件配方中的依赖关系。以下示例配方定义了一个安装boto3
要运行此示例组件,您的设备必须具有s3:ListAllMyBuckets
权限。有关更多信息,请参阅 授权核心设备与Amazon服务。
此示例组件运行以下 Python 脚本list_s3_buckets.py
,它列出 Amazon S3 存储桶。
import boto3 import os try: print("Creating boto3 S3 client...") s3 = boto3.client('s3') print("Successfully created boto3 S3 client") except Exception as e: print("Failed to create boto3 s3 client. Error: " + str(e)) exit(1) try: print("Listing S3 buckets...") response = s3.list_buckets() for bucket in response['Buckets']: print(f'\t{bucket["Name"]}') print("Successfully listed S3 buckets") except Exception as e: print("Failed to list S3 buckets. Error: " + str(e)) exit(1)