ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Apache Airflow Amazon Provider CLI 参考:aws-auth-manager 命令与 Amazon Verified Permissions 实战指南

Apache Airflow Amazon Provider CLI 参考:aws-auth-manager 命令与 Amazon Verified Permissions 实战指南 Apache Airflow Amazon Provider CLI 参考aws-auth-manager 命令与 Amazon Verified Permissions 实战指南【免费下载链接】airflowApache Airflow - A platform to programmatically author, schedule, and monitor workflows项目地址: https://gitcode.com/GitHub_Trending/ai/airflowAmazon 提供方apache-airflow-providers-amazon为 Apache Airflow 内置了一组与 AWS 认证管理器AWS auth manager配套的命令行工具用于初始化并维护 Amazon Verified PermissionsAVP中的授权资源。本文以 Amazon 提供方 CLI 参考文档 为骨架结合仓库源码与测试完整梳理airflow aws-auth-manager命令组的参数、执行流程与底层实现帮助你快速上手用命令行搭建 AVP 授权体系。一、CLI 参考文档是如何生成的Sphinx argparse 机制providers/amazon/docs/cli-ref.rst本身并不手写参数清单而是通过 Sphinx 的argparse指令从源码动态渲染出完整的命令行帮助.. argparse:: :module: airflow.providers.amazon.aws.cli.definition :func: get_parser :prog: airflow:module:/:func:指向 CLI 定义模块 中的get_parser():prog: airflow生成的帮助文本以airflow为程序名与真实执行入口保持一致。这意味着文档内容始终与源码中的命令定义同步每次运行airflow aws-auth-manager --help看到的帮助信息就是该文档渲染后的等价物。因此理解这份 CLI 参考最可靠的方式是直接阅读生成它的源码。二、命令组总览airflow aws-auth-manager在 definition.py 中AWS 相关命令被组织为一个GroupCommand组名为aws-auth-manager帮助文本为 Manage resources used by AWS auth manager旗下包含两个ActionCommand子命令作用参数init-avp初始化 AWS auth manager 所需的 Amazon Verified Permissions 资源--policy-store-description默认Airflow、--dry-runupdate-avp-schema将 AVP policy store 的 schema 更新到仓库内置的最新版本--policy-store-id必填、--dry-run完整命令形式为airflow aws-auth-manager init-avp airflow aws-auth-manager update-avp-schema --policy-store-id policy_store_id两个命令的入口函数均通过lazy_load_command延迟加载自airflow.providers.amazon.aws.auth_manager.cli.avp_commands避免未使用场景下的不必要导入开销。三、init-avp一键初始化 Verified Permissions 资源init-avp是 AWS auth manager 开箱即用的核心命令。按照 Amazon Verified Permissions 配置文档 的说明使用它之前需要先完成两件事在 Airflow 配置中把认证管理器切换为 AWS auth manager参见 auth-manager 配置文档让当前环境具备可用的 AWS 凭证boto3 标准凭证链。3.1 参数说明参数类型默认值说明--policy-store-description字符串Airflow用于在 AVP 中标识 Airflow policy store 的描述文本。命令会按此描述查找/创建 policy store--dry-run布尔开关False只打印将要执行的操作不真正调用 AWS API 创建/修改任何资源3.2 执行流程对应源码实现命令的实际逻辑位于 avp_commands.py 的init_avp由cli_utils.action_cli与providers_configuration_loaded两个装饰器包装前者负责统一 CLI 动作的日志/异常处理后者确保提供方配置已加载完毕再执行。流程分三步第一步创建或复用policy store。通过list_policy_stores分页器paginator枚举当前账号下所有 policy store按description精确匹配找到匹配项直接复用已有 policy store并输出提示——由于安全原因CLI 不会修改已存在的 policy store任何修改必须手工完成。从源码可见此时不会调用create_policy_store或put_schema对应测试test_init_avp_with_existing_resources中的assert_not_called断言见 test_avp_commands.py未找到以validationSettings.mode STRICT和传入的 description 调用create_policy_store创建新 store。STRICT模式意味着 schema 中未声明的实体/动作会被拒绝保证授权模型的严谨性对应测试test_init_avp_with_no_existing_resources的断言见 test_avp_commands.py。第二步写入最新 schema。仅当创建的是全新 policy store 时才执行。schema 文件位于 auth_manager/avp/schema.json以cedarJson形式通过put_schema提交到 AVP。该文件定义了 Airflow 授权模型需要的全部实体类型与动作例如Asset.GET、Asset.LIST、Backfill.POST等动作及其适用的 principal 类型User与资源类型。第三步输出配置指引。非 dry-run 模式下命令结束时会打印需要写入 Airflow 配置的环境变量Please set configs below in Airflow configuration: AIRFLOW__AWS_AUTH_MANAGER__AVP_POLICY_STORE_IDpolicy_store_id3.3 dry-run 行为--dry-run贯穿全程找到已有 store 时照常复用不产生副作用需要创建时只打印 Dry run, not creating the policy store... 而不调用 APIschema 写入阶段同样跳过。测试用例对 dry-run 与非 dry-run 做了参数化覆盖dry-run 下create_policy_store与put_schema均不会被调用test_avp_commands.py。建议在正式初始化前先加--dry-run预览行为airflow aws-auth-manager init-avp --dry-run3.4 重复执行时的预期输出如果 Airflow 的 policy store 已经存在命令不会报错而是输出以下信息提示你改用update-avp-schema或手工维护文档原文见 amazon-verified-permissions.rstSince an existing policy store with description ... has been found in Amazon Verified Permissions, the CLI made no changes to this policy store for security reasons. Any modification to this policy store must be done manually.四、update-avp-schema将 policy store schema 更新到最新版本当以下任一情况出现时需要更新 policy store 的 schemaamazon-verified-permissions.rst手工创建了 policy store其中尚未定义任何 schema现有 policy store 的 schema 被手工修改过需要回退现有 policy store 的 schema 与仓库内置最新版 schema.json 不一致此时 Airflow 启动时通常会输出 schema 过期的警告。4.1 参数说明参数类型必填说明--policy-store-id字符串是目标 AVP policy store 的 ID。源码中若缺失会直接抛出ValueError(Parameter --policy-store-id is required.)avp_commands.py--dry-run布尔开关否只打印 Dry run, not updating the schema...不调用put_schema4.2 执行流程update_schema同样先通过_get_client()获取 AVP 客户端然后调用内部函数_set_schema读取与 CLI 模块同级的 schema.json路径由Path(__file__).parents[1] / avp / schema.json定位将其内容作为definition.cedarJson提交put_schema。成功后输出 Policy store schema updated.。对应的单元测试test_update_schema验证了非 dry-run 时put_schema以正确的policyStoreId与cedarJson参数被调用一次dry-run 时不被调用test_avp_commands.py。五、命令背后的 AWS 客户端与配置依赖5.1 客户端获取方式CLI 模块中的_get_client()使用boto3.client(verifiedpermissions, region_name...)直接构建 AVP 客户端其中 region 来自 Airflow 配置avp_commands.py。这意味着执行命令的环境必须能够通过 boto3 标准凭证链环境变量、~/.aws/credentials、IAM 角色等解析出有权限调用 AVP API 的凭证。5.2 依赖的配置项命令从 constants.py 定义的配置键读取信息aws_auth_manager配置段下的region_nameAVP 客户端使用的区域aws_auth_manager配置段下的avp_policy_store_idinit-avp结束时提示你设置的 policy store ID也是运行时facade中conf.get_mandatory_value(...)读取的必填项见 facade.py。初始化完成后将输出的 policy store ID 写入配置[aws_auth_manager] avp_policy_store_id avp_policy_store_id或使用环境变量export AIRFLOW__AWS_AUTH_MANAGER__AVP_POLICY_STORE_IDavp_policy_store_id5.3 运行时的授权调用链源码佐证CLI 初始化的资源最终由 facade.py 中的AwsAuthManagerAmazonVerifiedPermissionsFacade在运行时使用它通过VerifiedPermissionsHook构建客户端读取avp_policy_store_id将用户的每个访问请求principal、action、resource映射为 AVP 的is_authorized/batch_is_authorized调用并依据decision ALLOW判定授权结果。is_policy_store_schema_up_to_date方法还会对比线上 schema 与仓库内置 schema.json这正是启动时 schema 过期警告的来源。这也解释了update-avp-schema存在的意义schema 文件是 Airflow 授权模型的唯一事实来源必须与运行时保持一致。六、使用前置条件与注意事项Airflow 版本要求AVP CLI 依赖 Auth Manager 机制。从源码看若在引入 Auth Manager 的 Airflow 版本约 2.8.0 起引入、AWS auth manager 仅兼容 Airflow 3.0.0见测试模块顶部的跳过条件 test_avp_commands.py之前的环境导入会抛出AirflowOptionalProviderFeatureException。请确认你的 Airflow 版本满足要求。必须先启用 AWS auth manager按 配置文档 将core.auth_manager指向AwsAuthManagerCLI 命令才会被注册进airflow命令树测试通过conf_vars设置该项后重载cli_parser来验证见 test_avp_commands.py。幂等与安全init-avp对已存在 store 采取只读复用、绝不覆盖策略schema 的修改要么通过update-avp-schema显式执行要么在 AWS 控制台手工完成。手工创建/更新的替代路径若不便使用 CLI可参考 Amazon Verified Permissions 配置文档 在 AWS 控制台创建 Empty policy store描述填Airflow并粘贴 schema.json 内容保存随后仍需手动把avp_policy_store_id写入 Airflow 配置。七、快速核对清单Airflow 版本 3.0.0且已安装apache-airflow-providers-amazon已在 Airflow 配置中将认证管理器切换为 AWS auth manager执行airflow aws-auth-manager init-avp --dry-run预览执行airflow aws-auth-manager init-avp完成初始化记录输出的AIRFLOW__AWS_AUTH_MANAGER__AVP_POLICY_STORE_ID将 policy store ID 写入[aws_auth_manager] avp_policy_store_id配置版本升级或 schema 过期时执行airflow aws-auth-manager update-avp-schema --policy-store-id id。参考资源CLI 参考文档源文件providers/amazon/docs/cli-ref.rstCLI 命令定义源码providers/amazon/src/airflow/providers/amazon/aws/cli/definition.py命令实现源码providers/amazon/src/airflow/providers/amazon/aws/auth_manager/cli/avp_commands.py内置 AVP schemaproviders/amazon/src/airflow/providers/amazon/aws/auth_manager/avp/schema.json单元测试providers/amazon/tests/unit/amazon/aws/auth_manager/cli/test_avp_commands.py配套配置指南providers/amazon/docs/auth-manager/setup/amazon-verified-permissions.rst、providers/amazon/docs/auth-manager/setup/config.rst【免费下载链接】airflowApache Airflow - A platform to programmatically author, schedule, and monitor workflows项目地址: https://gitcode.com/GitHub_Trending/ai/airflow创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表