ARTICLE DETAIL

资讯详情

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

boto v2.18.0 版本解析:SAML 联合认证、CloudWatch SigV4 与 ELB 跨可用区负载均衡

boto v2.18.0 版本解析:SAML 联合认证、CloudWatch SigV4 与 ELB 跨可用区负载均衡 后端云原生【免费下载链接】botoFor the latest version of boto, see https://github.com/boto/boto3 -- Python interface to Amazon Web Services项目地址https://gitcode.com/gh_mirrors/bo/boto点击查看免费下载boto v2.18.0 是 2013 年 11 月发布的重要版本它围绕身份与访问管理IAM/STS 的 SAML 联合认证、CloudWatch 签名算法升级、ELB 属性配置、RDS 主从切换与重命名、EC2 快照镜像注册等方向补充了大量新 API 与参数并修复了 HTTP 请求头 Unicode 编码等一系列问题。阅读本文后你将掌握该版本中每个新特性的调用入口、参数语义与底层实现并能基于 boto 仓库源码快速定位对应代码。版本概览本版本的发布说明见 v2.18.0.rst发布日期为 2013/11/22。该版本的核心更新方向如下为 AWS Identity and Access ManagementIAM、AWS Security Token ServiceSTS新增与 SAML 相关的调用Elastic Load BalancingELB新增 Attributes 支持与跨可用区负载均衡Cross Zone Balancing配置Amazon Elastic Compute CloudEC2更新get_all_snapshots并支持基于快照注册镜像Amazon Relational Database ServiceRDS新增只读副本提升promote与实例重命名rename支持Elastic Transcoder API 与参数获得补充Amazon Redshift 开始支持 SNS 通知CloudWatch 改用签名版本四Signature Version 4修复 HTTP 请求头编码问题并为多个服务修复文档。SAML 联合认证STS 与 IAM 的新调用v2.18.0 的核心新特性之一是为 STS 与 IAM 增加 SAML 相关调用对应 发布说明 中 issue 1867 的改动。这套能力让企业可以把内部身份目录如 AD/LDAP通过 SAML 2.0 协议与 AWS 的基于角色的访问控制绑定无需为每个用户单独分发 AWS 密钥。STSassume_role_with_saml在 boto/sts/connection.py 中新增了assume_role_with_saml方法它返回一组临时安全凭证Access Key ID、Secret Access Key 与 Security Token供已经通过 SAML 认证响应的用户使用。方法签名与参数语义如下def assume_role_with_saml(self, role_arn, principal_arn, saml_assertion, policyNone, duration_secondsNone):各参数含义均来自 源码 docstringrole_arn要扮演的 IAM 角色的 ARNprincipal_arnIAM 中描述 IdP 的 SAML provider 的 ARNsaml_assertionIdP 提供的 Base64 编码的 SAML 认证响应断言policy可选的 IAM JSON 策略用于在角色权限基础上进一步收敛权限策略长度必须不超过 2048 字节、打包后小于 450 字节duration_seconds会话时长取值范围 900 秒15 分钟到 3600 秒1 小时默认 3600 秒实际过期时间取本参数与 SAML 响应中NotOnOrAfter字段中较短的哪一个。底层实现上该方法组装RoleArn、PrincipalArn、SAMLAssertion三个必选参数可选地附加Policy与DurationSeconds通过get_object(AssumeRoleWithSAML, ...)发起 POST 请求。一个值得注意的实现细节是SAML 断言在请求中需要被 URL 编码——这一点在 boto/auth.py 中有明确注释指出 STS 要求assume_role_with_saml调用时对saml_response做 URL 编码。该调用不需要调用方持有 AWS 安全凭证调用者身份通过上传到 SAML provider 实体的元数据文档中的密钥来校验这是它与AssumeRole的重要区别。IAMSAML Provider 全生命周期管理配合 STS 的AssumeRoleWithSAMLboto/iam/connection.py 新增了 SAML Provider 的增删改查四个方法方法对应 API作用create_saml_provider(saml_metadata_document, name)CreateSAMLProvider上传 IdP 生成的 SAML 2.0 元数据文档创建描述 IdP 的实体list_saml_providers()ListSAMLProviders列出账号内的 SAML providerget_saml_provider(saml_provider_arn)GetSAMLProvider获取已上传的元数据文档update_saml_provider(saml_provider_arn, saml_metadata_document)UpdateSAMLProvider更新已有 provider 的元数据文档delete_saml_provider(saml_provider_arn)DeleteSAMLProvider删除 provider创建 provider 时上传的元数据文档由组织使用的 IdP 身份管理软件生成包含签发者名称、过期信息以及用于校验 SAML 认证响应断言的密钥。这些操作均要求使用 Signature Version 4 签名源码 docstring 中明确注明 This operation requires Signature Version 4。需要注意的是删除 provider 并不会更新任何将其作为信任策略 principal 引用的角色后续任何尝试扮演该角色都会失败。SAML 联合认证的完整链条是IdP 签发断言 → IAM 中的 SAML provider 校验断言 → STSAssumeRoleWithSAML发放临时凭证。该链路常见于企业 Web 单点登录SSO与 API 级联合访问两类场景。CloudWatch 升级为 SigV4 签名v2.18.0 将 CloudWatch 的签名机制升级为 Signature Version 4。对应实现位于 boto/ec2/cloudwatch/init.pyclass CloudWatchConnection(AWSQueryConnection): APIVersion boto.config.get(Boto, cloudwatch_version, 2010-08-01) DefaultRegionName boto.config.get(Boto, cloudwatch_region_name, us-east-1) DefaultRegionEndpoint boto.config.get(Boto, cloudwatch_region_endpoint, monitoring.us-east-1.amazonaws.com) ... def _required_auth_capability(self): return [hmac-v4]关键点是_required_auth_capability返回[hmac-v4]即该连接类的所有请求默认使用 SigV4hmac-v4签名。CloudWatchConnection还展示了 boto 的配置化设计API 版本、默认区域、默认端点均可通过 boto 配置文件中的cloudwatch_version、cloudwatch_region_name、cloudwatch_region_endpoint覆盖。此外源码中还保留了一个时代性 hack因 eu-west-1 端点 SSL 证书配置问题该区域会自动关闭证书校验。SigV4 与旧版 SigV2 的主要差异在于请求需包含规范化的请求内容哈希、按时间排序的签名字符串以及Authorization头的特定构造。boto 的 SigV4 实现在 boto/auth.py 中同一文件也包含对 S3 这类不做路径规范化的服务的特判逻辑boto/auth.py。ELB属性配置与跨可用区负载均衡本版本为 ELB 增加了 Attributes属性支持其中最具代表性的是跨可用区负载均衡Cross Zone Balancing。相关实现分布在三个文件中连接层modify_lb_attribute 与 get_lb_attributeboto/ec2/elb/init.py 中的modify_lb_attribute支持以下属性crosszoneloadbalancing布尔值接收True/False内部转换为true/false字符串对应请求参数LoadBalancerAttributes.CrossZoneLoadBalancing.Enabledaccesslog接收AccessLogAttribute实例写入AccessLog.Enabled、AccessLog.S3BucketName、AccessLog.S3BucketPrefix、AccessLog.EmitIntervalconnectiondraining接收ConnectionDrainingAttribute实例写入ConnectionDraining.Enabled与ConnectionDraining.Timeoutconnectingsettings接收ConnectionSettingAttribute实例写入ConnectionSettings.IdleTimeout传入未知属性会抛出ValueError(InvalidAttribute, attribute)。读取侧由get_all_lb_attributes调用DescribeLoadBalancerAttributes返回LbAttributes对象get_lb_attribute则在其上按属性名取值。对象层LoadBalancer 便捷方法boto/ec2/elb/loadbalancer.py 为LoadBalancer对象提供了更友好的三个方法lb.is_cross_zone_load_balancing(forceFalse) # 查询force 为 True 时强制重新拉取属性 lb.enable_cross_zone_load_balancing() # 启用跨可用区负载均衡 lb.disable_cross_zone_load_balancing() # 禁用跨可用区负载均衡数据层属性对象boto/ec2/elb/attributes.py 定义了CrossZoneLoadBalancingAttribute数据类其enabled字段承载开关状态LbAttributes则聚合了跨可用区负载均衡、连接设置、访问日志、连接排空等全部属性CrossZoneLoadBalancing作为可索引属性名返回对应对象attributes.py。跨可用区负载均衡的意义在于负载均衡器会把流量均匀分发到所有已注册实例所在的可用区而不是仅本区实例从而提升多可用区部署时的资源利用率与故障恢复能力。RDS只读副本提升与实例重命名v2.18.0 为 RDS 新增了 promote提升只读副本与 rename重命名实例支持实现均在 boto/rds/init.pypromote_read_replicaboto/rds/init.py 中的promote_read_replica(id, backup_retention_periodNone, preferred_backup_windowNone)将只读副本提升为独立的数据库实例。参数说明id新实例的唯一标识1-63 个字母数字字符首字符必须是字母不能以连字符结尾或包含两个连续连字符backup_retention_period自动备份保留天数设为 0 表示禁用自动备份preferred_backup_window自动备份的每日时间窗口UTC格式为hh24:mi-hh24:mi。底层组装DBInstanceIdentifier并可选附加BackupRetentionPeriod、PreferredBackupWindow调用PromoteReadReplica后返回DBInstance对象。modify_dbinstance 与 renameboto/rds/init.py 中的modify_dbinstance在原有参数基础上新增了new_instance_id参数底层映射为NewDBInstanceIdentifier请求参数从而实现实例重命名。该方法整体支持非常全面的修改面参数组DBParameterGroupName、安全组DBSecurityGroups.member、VpcSecurityGroupIds.member、维护窗口PreferredMaintenanceWindow、主密码MasterUserPassword、分配存储AllocatedStorage、实例规格DBInstanceClass、备份保留期与备份窗口、多可用区MultiAZ、立即生效开关ApplyImmediately以及 IOPSIops。EC2快照查询更新与基于快照注册镜像本版本更新了 EC2 的get_all_snapshots并支持直接用一个 EBS 快照注册为 AMI。boto/ec2/connection.py 中的get_all_snapshots(snapshot_idsNone, ...)支持按快照 ID 列表过滤通过build_list_params构造SnapshotId.member.N参数同时提供delete_snapshot、copy_snapshot、get_snapshot_attribute等配套操作本版本对过滤、分页等相关行为进行了更新。更值得关注的是 register_image 新增的snapshot_id与delete_root_volume_on_termination参数snapshot_id指定用于镜像根设备的快照 ID与block_device_map互斥且要求同时提供root_device_namedelete_root_volume_on_termination仅在使用快照创建镜像时生效决定实例终止后是否删除根卷默认False——源码 docstring 特别提醒终止后遗留卷并非免费。实现层面当传入snapshot_id时boto 自动构造一个BlockDeviceType(snapshot_id..., delete_on_termination...)并包入BlockDeviceMappingconnection.py最终通过ec2_build_list_params序列化为BlockDeviceMapping.N.Ebs.SnapshotId等请求参数见 blockdevicemapping.py。这为快照 → AMI → 启动实例的镜像生命周期流水线提供了便捷入口。Bugfixes编码修复与其他修正v2.18.0 的缺陷修复集中在以下几个方面详见 发布说明HTTP 请求头 Unicode 编码修复修复了使用 unicode 值时 HTTP 请求头编码异常的问题关联 issue 1864、1839、1829、1828、702。这属于签名与请求构建层的问题影响所有使用 boto 发起请求的服务Beanstalk 文档参数顺序修正调整 boto/beanstalk/layer1.py 相关文档使其与参数声明顺序一致issue 1863S3 下载清理顺序修复下载 S3 Key 时确保文件在删除前已正确关闭issue 1791对应实现可参考 boto/s3/key.py 与 keyfile.pyCloudTrail 文档错别字修复修正 boto/cloudtrail/layer1.py 的文档笔误issue 1861DynamoDBv2 教程补全修复教程中缺失动词的句子issue 1859/1825相关教程见 dynamodb2_tut.rstGS 参数校验修复修复 Google Storage 连接参数校验问题issue 1858。源码阅读指引如果想深入验证本版本内容推荐按以下路径阅读仓库源码SAML 联合认证boto/sts/connection.py 的assume_role_with_samlboto/iam/connection.py 的 SAML provider 五个方法以及 boto/auth.py 中对 SAML 断言 URL 编码的处理CloudWatch SigV4boto/ec2/cloudwatch/init.py 的_required_auth_capability与配置化端点ELB Attributesboto/ec2/elb/init.py、boto/ec2/elb/loadbalancer.py、boto/ec2/elb/attributes.pyRDSboto/rds/init.py 的promote_read_replica与modify_dbinstanceEC2 快照与镜像boto/ec2/connection.py 的register_image与 get_all_snapshots。该版本处于 boto v2.x 系列中期与相邻版本 v2.17.0新增 CloudTrail 与 Redshift 新特性见 v2.17.0.rst共同构成了 2013 年末 AWS SDK 生态的能力扩张脉络。需要注意的是文中所有 API 语义与实现细节均以当前仓库源码为准boto v2 系列后续由 boto3 接替演进见仓库 README.rst 的项目说明。赞分享后端云原生【免费下载链接】botoFor the latest version of boto, see https://github.com/boto/boto3 -- Python interface to Amazon Web Services项目地址https://gitcode.com/gh_mirrors/bo/boto点击查看免费下载相关推荐boto ELB负载均衡终极指南10步实现高可用应用配置boto ELB负载均衡终极指南10步实现高可用应用配置 想要构建高可用的Web应用boto ELB负载均衡服务正是您需要的解决方案 作为AWS弹性负后端云原生boto 弹性负载均衡ELB接口实战指南从连接、健康检查到实例管理boto 弹性负载均衡ELB接口实战指南从连接、健康检查到实例管理 导读 本文以 boto 仓库的官方教程 docs/source/elb_tut.rs后端云原生Proxmox VE Helper-Scripts与华为云ELB负载均衡集成Proxmox VE Helper Scripts与华为云ELB负载均衡集成 项目概述 Proxmox VE Helper Scripts 是一套简化Prox运维虚拟化DevOps上一篇ET 框架的 Cursor 编辑器集成com.unity.ide.cursor 包安装、源码原理与版本演进全解析下一篇OpenSeek-Mid-v1代码生成实战在Python、JavaScript、Java等语言中的表现创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表