在您的账户中激活 Lambda 挂钩 - AWS CloudFormation

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

在您的账户中激活 Lambda 挂钩

以下主题向您展示了如何在您的账户中激活 Lambda Hook,从而使其在激活该挂钩的账户和区域中可用。

激活 Lambda 挂钩(控制台)

激活 Lambda 挂钩以在您的账户中使用
  1. 登录 AWS Management Console 并在 https://console.aws.amazon.com/cloudformat ion 上打开 AWS CloudFormation 控制台。

  2. 在屏幕顶部的导航栏上,选择要创建 Hook in AWS 区域 的位置。

  3. 如果您尚未为挂钩创建 Lambda 函数,请执行以下操作:

    如果您已经创建了 Lambda 函数,请继续执行下一步。

  4. 在左侧的导航窗格中,选择 Hook

  5. 在 “挂钩” 页面上,选择 “创建挂钩”,然后选择 “使用 Lambda”。

  6. Hook 名称中,选择以下选项之一:

    • 提供一个简短的描述性名称,该名称将在之后Private::Lambda::添加。例如,如果输入MyTestHook,则完整的 Hook 名称变为Private::Lambda::MyTestHook

    • 使用以下格式提供完整的 Hook 名称(也称为别名):Provider::ServiceName::HookName

  7. 对于 Lambda 函数,请提供用于此挂钩的 Lambda 函数。您可以使用:

    • 不带后缀的完整亚马逊资源名称 (ARN)。

    • 带有版本或别名后缀的合格 ARN。

  8. 对于 Hook 目标,请选择要评估的内容:

    • 堆栈-在用户创建、更新或删除堆栈时评估堆栈模板。

    • 资源-在用户更新堆栈时评估各个资源的变化。

    • 更改集-在用户创建更改集时评估计划的更新。

    • 云控制 API — 评估由云控制 AP I 启动的创建、更新或删除操作。

  9. 在 “操作” 中,选择哪些操作(创建、更新、删除)将调用您的 Hook。

  10. 对于挂钩模式,选择挂钩调用的 Lambda 函数返回响应时挂钩的响应方式:FAILED

    • 警告-向用户发出警告,但允许继续执行操作。这对于非关键验证或信息检查很有用。

    • 失败-阻止操作继续进行。这有助于执行严格的合规或安全政策。

  11. 对于执行角色,请选择挂钩担任的用于调用您的 Lambda 函数的 IAM 角色。您可以 CloudFormation 允许自动为您创建执行角色,也可以指定已创建的角色。

  12. 选择下一步

  13. (可选)对于 Hook 过滤器,请执行以下操作:

    1. 资源筛选器中,指定哪些资源类型可以调用 Hook。这样可以确保仅针对相关资源调用 Hook。

    2. 筛选条件中,选择应用堆栈名称和堆栈角色筛选器的逻辑:

      • 所有堆栈名称和堆栈角色 — 只有当所有指定的过滤器都匹配时,才会调用 Hook。

      • 任何堆栈名称和堆栈角色 — 如果指定的过滤器中至少有一个匹配,则将调用 Hook。

      注意

      对于 Cloud Control API 操作,所有堆栈名称堆栈角色筛选器都将被忽略。

    3. 对于堆栈名称,在 Hook 调用中包含或排除特定堆栈。

      • 对于包含,请指定要包含的堆栈名称。当你想要瞄准一小部分特定的堆栈时,请使用此选项。只有此列表中指定的堆栈才会调用 Hook。

      • 对于排除,请指定要排除的堆栈名称。当你想在大多数堆栈上调用 Hook 但排除一些特定的堆栈时,请使用此选项。除此处列出的堆栈外,所有堆栈都将调用 Hook。

    4. 对于堆栈角色,请根据其关联的 IAM 角色在 Hook 调用中包含或排除特定堆栈。

      • 对于 Inc lude,指定一个或多个 IAM 角色 ARNs 来定位与这些角色关联的堆栈。只有由这些角色启动的堆栈操作才会调用 Hook。

      • 对于排除,请 ARNs 为要排除的堆栈指定一个或多个 IAM 角色。Hook 将在除指定角色启动的堆栈之外的所有堆栈上调用。

  14. 选择下一步

  15. 查看并激活页面上,查看您的选择。要进行更改,请在相关部分选择编辑

  16. 准备好继续操作时,选择 “激活挂钩”。

激活 Lambda 挂钩 ()AWS CLI

在继续操作之前,请确认您已创建 Lambda 函数和将用于此 Hook 的执行角色。有关更多信息,请参阅创建 Lambda 函数来评估 Lambda 挂钩的资源为 Lambda 挂钩创建执行角色

激活 Lambda 挂钩以在您的账户中使用 ()AWS CLI
  1. 要开始激活 Hook,请使用以下activate-type命令,用您的特定值替换占位符。此命令授权 Hook 使用您的 AWS 账户指定执行角色。

    aws cloudformation activate-type --type HOOK \ --type-name AWS::Hooks::LambdaHook \ --publisher-id aws-hooks \ --execution-role-arn arn:aws:iam::123456789012:role/my-execution-role \ --type-name-alias Private::Lambda::MyTestHook \ --region us-west-2
  2. 要完成激活 Hook,必须使用 JSON 配置文件对其进行配置。

    使用cat命令创建具有以下结构的 JSON 文件。有关更多信息,请参阅 挂钩配置架构语法参考

    $ cat > config.json { "CloudFormationConfiguration": { "HookConfiguration": { "HookInvocationStatus": "ENABLED", "TargetOperations": [ "CLOUD_CONTROL" ], "FailureMode": "WARN", "Properties": { "LambdaFunction": "arn:aws:lambda:us-west-2:123456789012:function:MyFunction" }, "TargetFilters": { "Actions": [ "CREATE", "UPDATE", "DELETE" ] } } } }
    • HookInvocationStatus:设置ENABLED为可启用挂钩。

    • TargetOperations:指定 Hook 将评估的操作。

    • FailureMode:设置为 FAILWARN

    • LambdaFunction:指定 Lambda 函数的 ARN。

    • TargetFilters:指定将调用 Hook 的操作类型。

  3. 使用以下set-type-configuration命令以及您创建的 JSON 文件来应用配置。用您的特定值替换占位符。

    aws cloudformation set-type-configuration \ --configuration file://config.json \ --type-arn "arn:aws:cloudformation:us-west-2:123456789012:type/hook/MyTestHook" \ --region us-west-2

我们提供了模板示例,您可以使用这些示例来了解如何在 CloudFormation 堆栈模板中声明 Lambda Hook。有关更多信息,请参阅《AWS CloudFormation 用户指南》中的 AWS::CloudFormation::LambdaHook