You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Ansible获取S3存储桶中超90天对象及配置Playbook条件

解决方案

Ansible 官方的aws_s3模块的list模式没有内置按存储时长筛选的参数,你需要先拉取指定前缀下的全量对象列表,再通过Jinja2过滤器做二次筛选,具体修改方式如下:

1. 修改现有列表查询任务

给你现有的aws_s3任务添加register字段存储查询结果,空的when条件可以直接删除:

- name: List all objects in specific bucket
  aws_s3:
    encrypt: yes
    aws_access_key: "{{ access_key }}"
    aws_secret_key: "{{ secret_key }}"
    mode: list
    bucket: "{{ bucket }}"
    prefix: "{{ database_name }}/"
    marker: "{{ database_name }}/"
    s3_url: "{{ s3_url }}"
    validate_certs: no
  register: s3_objects

2. 新增时长筛选步骤

新增任务筛选存储时长超过90天的对象,90天对应的秒数为7776000,直接通过时间戳对比即可:

- name: Filter objects older than 90 days
  set_fact:
    old_objects: >-
      {{ s3_objects.s3_keys | selectattr('last_modified', 'lt', '%Y-%m-%dT%H:%M:%S.%fZ' | strftime(ansible_date_time.epoch | int - 7776000)) | list }}

结果说明

筛选完成后你可以直接使用old_objects变量,里面就是所有符合条件的对象信息,包含对象名、大小、最后修改时间等属性。如果只需要对象名,可以再加map(attribute='key') | list过滤得到纯文件名列表。

内容的提问来源于stack exchange,提问作者Ravi Shankar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 02:06:02