求助:如何用Ansible在AWS DynamoDB中创建并更新hostID条目?
问题分析与解决方案
你用错模块了——community.aws.dynamodb_table 是用来管理DynamoDB表结构(比如创建表、修改主键、调整吞吐量等)的,根本不是用来操作表中数据(增删改查item)的工具。要实现创建/更新DynamoDB item的需求,应该用 community.aws.dynamodb_item 模块。
正确的Ansible任务示例
1. 创建或覆盖item(hostID存在时直接覆盖,不存在则新增)
- name: 新增/更新DynamoDB表中的hostID条目 community.aws.dynamodb_item: region: "{{ aws_ssm_region }}" table_name: "{{ dynamodb_table_name }}" key: hostID: "{{ manage_instance_id }}" # 指定表的hash主键 item: hostID: "{{ manage_instance_id }}" # 可按需添加其他属性,比如: # last_modified: "{{ ansible_date_time.iso8601 }}" state: present # present表示存在则更新,不存在则创建
2. 仅更新已存在item的部分属性(避免覆盖整个条目)
如果只想修改已存在条目的特定属性,不想覆盖整个item,可使用operation: update配合表达式实现:
- name: 更新DynamoDB表中已存在的hostID条目 community.aws.dynamodb_item: region: "{{ aws_ssm_region }}" table_name: "{{ dynamodb_table_name }}" key: hostID: "{{ manage_instance_id }}" operation: update update_expression: "SET last_modified = :time" expression_attribute_values: ":time": "{{ ansible_date_time.iso8601 }}"
额外注意
- 确保已安装
community.aws集合:执行ansible-galaxy collection install community.aws - 运行任务的主机需具备访问目标DynamoDB表的IAM权限(可通过IAM角色、AWS配置文件或环境变量配置)
内容的提问来源于stack exchange,提问作者Gowthamakanthan Gopal
相关产品推荐
相关产品推荐

