• AWS IoT Greengrass:将密钥部署到核心


    AWS IoT Greengrass:将密钥部署到核心

    步骤 1:创建 Secrets Manager 密钥

    在本步骤中,使用 AWS Secrets Manager 控制台创建密钥。

    1. 登录 AWS Secrets Manager 控制台

      注意

      有关该过程的更多信息,请参阅 AWS Secrets Manager 用户指南中的步骤 1:在 AWS Secrets Manager 中创建并存储密钥

    2. 选择存储新密钥

    3. (选择密钥类型) 下,选择 (其他密钥类型)

    4. (指定要为此密钥存储的键值对) 下:

      • 对于 Key (键),输入 test
      • 对于 Value (值),输入 abcdefghi

      请确保为加密密钥保持选中 DefaultEncryptionKey,然后选择 (下一步)

    5. 对于密钥名称,输入 greengrass-TwilioAuthToken,然后选择下一步

    6. 本教程不需要轮换,因此,请选择 (禁用自动轮换),然后选择 (下一步)

    7. (审核) 页上,审核您的设置,然后选择 (存储)

      接下来,在 Greengrass 组中创建一个引用该密钥的密钥资源。

    步骤 2:将密钥资源添加到 Greengrass 组

    在此步骤中,您将一个密钥资源 添加到 Greengrass 组。该资源是对上一步中创建的密钥的引用。

    1. 在 AWS IoT 控制台中,选择 Greengrass,然后选择 (组)

    2. 选择要将密钥资源添加到的组。

    3. 在组配置页面上,选择 (资源),然后选择 (密钥)。此选项卡显示属于该组的密钥资源。您可以从此选项卡添加、编辑和删除密钥资源。

    4. 选择 (添加密钥资源)

    5. (向组中添加密钥资源) 页面上,选择 (选择),然后选择 greengrass-TestSecret

    6. (为密钥资源命名) 页面上,输入 MyTestSecret,然后选择 (保存)

    步骤 3:创建 Lambda 函数部署程序包

    1. AWS IoT Greengrass Core 开发工具包 下载 页面下载 适用于 Python 的 AWS IoT Greengrass Core 开发工具包。

    2. 解压缩下载的程序包以获取软件开发工具包。软件开发工具包是 greengrasssdk 文件夹。

    3. 将以下 Python 代码函数保存在名为 secret_test.py 的本地文件中。

      import greengrasssdk
       
      # Create SDK clients.
      secrets_client = greengrasssdk.client('secretsmanager')
      message_client = greengrasssdk.client('iot-data')
      message = ''
      
      # This handler is called when the function is invoked.
      # It uses the 'secretsmanager' client to get the value of the test secret using the secret name.
      # The test secret is a text type, so the SDK returns a string. 
      # For binary secret values, the SDK returns a base64-encoded string.
      def function_handler(event, context):
          response = secrets_client.get_secret_value(SecretId='greengrass-TestSecret')
          secret_value = response.get('SecretString')
          if secret_value is None:
              message = 'Failed to retrieve secret.'
          else:
              message = 'Success! Retrieved secret.'
          
          message_client.publish(topic='secrets/output', payload=message)
          print('published: ' + message)
      
      

      get_secret_value 函数支持对 SecretId 值使用 Secrets Manager 的名称或 ARN。此示例使用密钥名称。对于此示例密钥,AWS IoT Greengrass 返回键值对:{"test":"abcdefghi"}

    4. 将以下项目压缩到名为 secret_test_python.zip 的文件中。在创建 ZIP 文件时,应仅包含代码和依赖项,而不包含文件夹。

      • secret_test.py。应用程序逻辑。
      • greengrasssdk。所有 Python Greengrass Lambda 函数必需的库。

      此即 Lambda 函数部署程序包。

    步骤 4:创建 Lambda 函数

    1. 在组配置页面选择Lambda。选择(添加Lambda)

    2. 选择(新建Lambda)

    3. (基本信息) 部分中,使用以下值:

      • 对于 (函数名称),输入 SecretTest
      • 对于 (运行时),选择 Python 3.7
      • 对于权限,请保留默认设置。这将创建一个授予基本 Lambda 权限的执行角色。(此角色未由 AWS IoT Greengrass 使用。)
    4. 在页面底部,选择 Create function

    5. 在 SecretTest 函数的 (配置) 选项卡的 (函数代码) 中,使用以下值:

      • 对于 (代码输入种类),选择上传 .zip 文件
      • 对于 (运行时),选择 Python 3.7
      • 对于 (处理程序),输入 secret_test.function_handler
    6. 选择 (上传)

    7. 选择您的 secret_test_python.zip 部署程序包。

    8. 选择 (保存)

      注意

      AWS Lambda 控制台上的测试键不可与该函数一同使用。AWS IoT Greengrass 核心 SDK 不包含在 AWS Lambda 控制台中独立运行 Greengrass Lambda 函数所需的模块。这些模块(例如 greengrass_common)会在被部署到您的 Greengrass 核心之后提供给这些函数。

      提示

      代码输入种类菜单中选择编辑内联代码,即可在函数代码部分中查看您的代码。

    9. (操作) 菜单上,选择 (发布新版本)

    10. 对于 (版本描述),输入 First version,然后选择 (发布)

    11. SecretTest: 1 配置页面上,从操作菜单中选择创建别名

    12. 创建新别名页面上,使用以下值:

      • 对于名称,输入 GG_SecretTest
      • 对于 Version (版本),选择 1

      注意

      AWS IoT Greengrass 不支持 $LATEST 版本的 Lambda 别名。

    13. 选择 Create

    步骤 5:将 Lambda 函数添加到 Greengrass 组

    1. 在组配置页面上,选择 Lambdas,然后选择 (添加Lambda)

    2. (将 Lambda 添加到 Greengrass 组) 页面上,选择 (使用现有Lambda)

    3. 使用现有的 Lambda 页面上,选择 SecretTest,然后选择下一步

    4. (选择Lambda版本)页面上,选择 别名:GG_SecretTest,然后选择(完成)

    步骤 6:将密钥资源附加到 Lambda 函数

    1. 在组的 Lambda 页面上,选择 SecretTest 函数。

    2. 在函数的详细信息页面上,依次选择资源密钥Attach a secret resource (附加密钥资源)

    3. (将密钥资源附加到 Lambda 函数) 页面上,选择 (选择密钥资源)

    4. (从您的组中选择密钥资源) 页面上,选择 MyTestSecret,然后选择 (保存)

    步骤 7:将订阅添加到 Greengrass 组

    1. 在组配置页面上,选择 (订阅),然后选择 (添加订阅)

    2. 创建一个允许 AWS IoT 向该函数发布消息的订阅:

      选择您的源和目标页面上,配置源和目标:

      1. 对于选择源,选择服务,然后选择 IoT Cloud
      2. 对于选择目标,选择 Lambda,然后选择 SecretTest
      3. 选择 (下一步)

    3. 利用主题筛选您的数据页面上,对于主题筛选条件,输入 secrets/input,然后选择下一步

    4. 选择 Finish

    5. 重复执行步骤 1 至 4,以创建允许该函数向 AWS IoT 发布状态的订阅。

      1. 对于选择源,选择 Lambda,然后选择 SecretTest
      2. 对于选择目标,选择服务,然后选择 IoT Cloud
      3. 对于 Topic filter (主题筛选条件),输入 secrets/output

    步骤 8:部署 Greengrass 组

    将组部署到核心设备。在部署期间,AWS IoT Greengrass 从 Secrets Manager 中提取密钥的值并在核心上创建本地加密副本。

    1. 确保 AWS IoT Greengrass Core正在运行。根据需要在您的 Raspberry Pi 终端中运行以下命令。

      1. 要检查守护程序是否正在运行,请执行以下操作:

        ps aux | grep -E 'greengrass.*daemon'
        

        如果输出包含 root/greengrass/ggc/packages/ggc-version/bin/daemon 条目,则表示守护程序正在运行。

        注意

        路径中的版本取决于您的核心设备上安装的 AWS IoT Greengrass 核心软件版本。

      2. 要启动守护程序,请执行以下操作:

        cd /greengrass/ggc/core/
        sudo ./greengrassd start
        
    2. 在组配置页面上,选择部署,然后从操作菜单中,选择部署

    测试函数

    1. 在 AWS IoT 控制台主页上,选择 (测试)

    2. 对于订阅,请使用以下值,然后选择订阅主题

      属性
      订阅主题 secrets/output
      MQTT 负载显示 将负载显示为字符串
    3. 对于 (发布),请使用以下值,然后选择 (发布到主题) 来调用函数。

      属性
      主题 secrets/input
      消息 保留默认消息。发布消息可调用 Lambda 函数,但本教程中的该函数不处理消息正文。

      如果成功,则该函数会发布“成功”消息。

  • 相关阅读:
    BZOJ2435 NOI2011道路修建
    BZOJ2431 HAOI2009逆序对数列(动态规划)
    BZOJ2456 mode
    BZOJ2324 ZJOI2011营救皮卡丘(floyd+上下界费用流)
    BZOJ2303 APIO2011方格染色(并查集)
    BZOJ2299 HAOI2011向量(数论)
    BZOJ2169 连边(动态规划)
    BZOJ2159 Crash的文明世界(树形dp+斯特林数)
    洛谷 P1306 斐波那契公约数 解题报告
    洛谷 P2389 电脑班的裁员 解题报告
  • 原文地址:https://www.cnblogs.com/Hi-Simon/p/12143868.html
Copyright © 2020-2023  润新知