amazon.aws.s3_object_info 模块 – 收集 S3 中对象的信息

注意

此模块是 amazon.aws 集合(版本 9.0.0)的一部分。

如果您正在使用 ansible 包,您可能已经安装了此集合。它不包含在 ansible-core 中。要检查是否已安装,请运行 ansible-galaxy collection list

要安装它,请使用:ansible-galaxy collection install amazon.aws。您需要其他要求才能使用此模块,请参阅要求了解详细信息。

要在 playbook 中使用它,请指定:amazon.aws.s3_object_info

amazon.aws 5.0.0 中的新增功能

概要

  • 描述 S3 中的对象。

  • 与 AWS、DigitalOcean、Ceph、Walrus、FakeS3 和 StorageGRID 兼容(目前仅支持 list_keys)。

  • 使用非 AWS 服务时,应指定 endpoint_url

要求

在执行此模块的主机上需要以下要求。

  • python >= 3.6

  • boto3 >= 1.28.0

  • botocore >= 1.31.0

参数

参数

注释

access_key

别名:aws_access_key_id, aws_access_key, ec2_access_key

字符串

AWS 访问密钥 ID。

有关访问令牌的更多信息,请参阅 AWS 文档 https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#access-keys-and-secret-access-keys

也可以按优先级降序使用 AWS_ACCESS_KEY_IDAWS_ACCESS_KEYEC2_ACCESS_KEY 环境变量。

aws_access_keyprofile 选项是互斥的。

为了与 AWS botocore SDK 保持一致,在 5.1.0 版本中添加了 aws_access_key_id 别名。

ec2_access_key 别名已弃用,将在 2024-12-01 之后的版本中删除。

EC2_ACCESS_KEY 环境变量的支持已弃用,将在 2024-12-01 之后的版本中删除。

aws_ca_bundle

路径

用于验证 SSL 证书的 CA 捆绑包的位置。

也可以使用 AWS_CA_BUNDLE 环境变量。

aws_config

字典

用于修改 botocore 配置的字典。

参数可以在 AWS 文档中找到 https://botocore.amazonaws.com/v1/documentation/api/latest/reference/config.html#botocore.config.Config

bucket_name

字符串 / 必需

包含对象的存储桶的名称。

ceph

别名:rgw

布尔值

启用与 Ceph RGW 的 API 兼容性。

它会考虑与 Ceph 一起使用的 S3 API 子集,以便在可能的情况下提供相同的模块行为。

如果 ceph=true,则需要 endpoint_url

选择

  • false ← (默认)

  • true

debug_botocore_endpoint_logs

布尔值

使用 botocore.endpoint 记录器来解析在任务期间进行的唯一(而不是总计)"resource:action" API 调用,并将该集合输出到任务结果中的 resource_actions 键。使用 aws_resource_action 回调输出在 playbook 期间生成的总列表。

也可以使用 ANSIBLE_DEBUG_BOTOCORE_LOGS 环境变量。

选择

  • false ← (默认)

  • true

dualstack

布尔值

启用 Amazon S3 双栈端点,允许使用 IPv4 和 IPv6 进行 S3 通信。

对同时传递 dualstackendpoint_url 的支持已弃用,双栈端点将使用配置的 region 自动配置。此支持将在 2024-12-01 之后的版本中删除。

选择

  • false ← (默认)

  • true

endpoint_url

别名:ec2_url, aws_endpoint_url, s3_url

字符串

用于 Ceph、Eucalyptus 和 fakes3 等的 S3 URL 端点。否则假定为 AWS。

marker

字符串

在 amazon.aws 9.0.0 中添加

指定要开始的对象键。对象键按字母顺序返回,从 marker 之后的键开始。

max_keys

整数

在 amazon.aws 9.0.0 中添加

要返回的最大结果数。如果您只想检索部分结果,请设置此值。

object_details

字典

检索请求的 S3 对象详细信息。

attributes_list

list / elements=string

应返回的字段/详细信息。

object_details.object_attributes=true 时是必需的。

选择

  • "ETag"

  • "Checksum"

  • "ObjectParts"

  • "StorageClass"

  • "ObjectSize"

object_acl

布尔值

检索 S3 对象 ACL。

选择

  • false ← (默认)

  • true

object_attributes

布尔值

检索 S3 对象属性。

选择

  • false ← (默认)

  • true

布尔值

检索 S3 对象 legal_hold。

选择

  • false ← (默认)

  • true

object_lock_configuration

布尔值

检索 S3 对象 lock_configuration。

选择

  • false ← (默认)

  • true

object_retention

布尔值

检索 S3 对象 retention。

选择

  • false ← (默认)

  • true

object_tagging

布尔值

检索 S3 对象标签。

选择

  • false ← (默认)

  • true

object_name

字符串

对象的名称。

如果未指定,将返回指定存储桶中所有对象的列表。

profile

别名: aws_profile

字符串

用于身份验证的已命名 AWS 配置文件。

有关已命名配置文件的更多信息,请参阅 AWS 文档 https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html

也可以使用 AWS_PROFILE 环境变量。

profile 选项与 aws_access_keyaws_secret_keysecurity_token 选项互斥。

region

别名: aws_region, ec2_region

字符串

要使用的 AWS 区域。

对于 IAM、Route53 和 CloudFront 等全局服务,将忽略 region

也可以使用 AWS_REGIONEC2_REGION 环境变量。

有关更多信息,请参阅 Amazon AWS 文档 http://docs.aws.amazon.com/general/latest/gr/rande.html#ec2_region

ec2_region 别名已弃用,将在 2024-12-01 之后的版本中删除

EC2_REGION 环境变量的支持已弃用,将在 2024-12-01 之后的版本中删除。

secret_key

别名: aws_secret_access_key, aws_secret_key, ec2_secret_key

字符串

AWS 秘密访问密钥。

有关访问令牌的更多信息,请参阅 AWS 文档 https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#access-keys-and-secret-access-keys

也可以按优先级降序使用 AWS_SECRET_ACCESS_KEYAWS_SECRET_KEYEC2_SECRET_KEY 环境变量。

secret_keyprofile 选项互斥。

为了与 AWS botocore SDK 保持一致,在 5.1.0 版本中添加了 aws_secret_access_key 别名。

ec2_secret_key 别名已弃用,将在 2024-12-01 之后的版本中删除。

EC2_SECRET_KEY 环境变量的支持已弃用,将在 2024-12-01 之后的版本中删除。

session_token

别名: aws_session_token, security_token, aws_security_token, access_token

字符串

用于临时凭据的 AWS STS 会话令牌。

有关访问令牌的更多信息,请参阅 AWS 文档 https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#access-keys-and-secret-access-keys

也可以按优先级降序使用 AWS_SESSION_TOKENAWS_SECURITY_TOKENEC2_SECURITY_TOKEN 环境变量。

security_tokenprofile 选项互斥。

别名 aws_session_tokensession_token 在 3.2.0 版本中添加,参数在 6.0.0 版本中从 security_token 重命名为 session_token

security_tokenaws_security_tokenaccess_token 别名已弃用,将在 2024-12-01 之后的版本中删除。

EC2_SECRET_KEYAWS_SECURITY_TOKEN 环境变量的支持已弃用,将在 2024-12-01 之后的版本中删除。

validate_certs

布尔值

设置为 false 时,与 AWS API 通信时将不会验证 SSL 证书。

强烈建议不要设置 validate_certs=false,作为替代方案,请考虑设置 aws_ca_bundle

选择

  • false

  • true ← (默认)

备注

注意

  • S3_URL 环境变量的支持已弃用,将在 2024-12-01 之后的版本中删除,请使用 endpoint_url 参数或 AWS_URL 环境变量。

  • 注意:对于模块,环境变量和配置文件是从 Ansible“主机”上下文读取的,而不是从“控制器”上下文读取的。因此,可能需要将文件显式复制到“主机”。对于查找和连接插件,环境变量和配置文件是从 Ansible “控制器” 上下文读取的,而不是从 “主机” 上下文读取的。

  • Ansible 使用的 AWS SDK (boto3) 也可能会从 Ansible “主机” 上下文中的配置文件(通常为 ~/.aws/credentials)读取凭据和其他设置的默认值,例如区域。有关更多信息,请参阅 https://boto3.amazonaws.com/v1/documentation/api/latest/guide/credentials.html

示例

# Note: These examples do not set authentication details, see the AWS Guide for details.

- name: Retrieve a list of objects in S3 bucket
  amazon.aws.s3_object_info:
    bucket_name: MyTestBucket

- name: Retrieve a list of objects in Ceph RGW S3
  amazon.aws.s3_object_info:
    bucket_name: MyTestBucket
    ceph: true
    endpoint_url: "https://127.0.0.1:8000"

- name: Retrieve object metadata without object itself
  amazon.aws.s3_object_info:
    bucket_name: MyTestBucket
    object_name: MyTestObjectKey

- name: Retrieve detailed S3 information for all objects in the bucket
  amazon.aws.s3_object_info:
    bucket_name: MyTestBucket
    object_details:
      object_acl: true
      object_attributes: true
      attributes_list:
        - ETag
        - ObjectSize
        - StorageClass

- name: Retrieve detailed S3 object information
  amazon.aws.s3_object_info:
    bucket_name: MyTestBucket
    object_name: MyTestObjectKey
    object_details:
      object_acl: true
      object_tagging: true
      object_legal_hold: true
      object_attributes: true
      attributes_list:
        - ETag
        - ObjectSize

返回值

常见返回值记录在 此处,以下是此模块特有的字段

描述

object_info

list / elements=dictionary

S3 对象详细信息。

返回: 当指定 bucket_nameobject_name 时。

object_acl

复杂

对象的访问控制列表 (ACL)。

返回:object_details.object_acl=true 时。

grants

复杂

授权列表。

返回: 总是

grantee

复杂

被授予权限的实体。

返回: 总是

id

字符串

被授权者的规范用户 ID。

返回: 总是

示例: "xxxxxxxxxxxxxxxxxxx"

type

字符串

被授权者的类型。

返回: 总是

示例: "CanonicalUser"

permission

字符串

指定授予被授权者的权限。

返回: 总是

示例: "FULL CONTROL"

owner

复杂

存储桶所有者的显示 ID 和名称。

返回: 总是

display_name

字符串

存储桶所有者的显示名称。

返回: 总是

示例: "abcd"

id

字符串

存储桶所有者的 ID。

返回: 总是

示例: "xxxxxxxxxxxxxxxxxxxxx"

object_attributes

复杂

对象属性。

返回:object_details.object_attributes=true 时。

checksum

复杂

对象的校验和或摘要。

返回: 总是

checksum_crc32

字符串

对象的 base64 编码的 32 位 CRC32 校验和。

返回: 如果它是随对象上传的。

示例: "xxxxxxxxxxxx"

checksum_crc32c

字符串

对象的 base64 编码的 32 位 CRC32C 校验和。

返回: 如果它是随对象上传的。

示例: "xxxxxxxxxxxx"

checksum_sha1

字符串

对象的 base64 编码的 160 位 SHA-1 摘要。

返回: 如果它是随对象上传的。

示例: "xxxxxxxxxxxx"

checksum_sha256

字符串

对象的 base64 编码的 256 位 SHA-256 摘要。

返回: 如果它是随对象上传的。

示例: "xxxxxxxxxxxx"

etag

字符串

ETag 是 Web 服务器分配给 URL 上特定版本的资源的 opaque 标识符。

返回: 总是

示例: "8fa34xxxxxxxxxxxxxxxxxxxxx35c6f3b"

last_modified

字符串

对象的创建日期。

返回: 总是

示例: "2022-08-10T01:11:03+00:00"

object_parts

复杂

与多部分上传关联的部分的集合。

返回: 总是

is_truncated

布尔值

指示返回的部分列表是否被截断。

返回: 总是

max_parts

整数

响应中允许的最大部分数。

返回: 总是

next_part_number_marker

整数

当列表被截断时,此元素指定列表中的最后一个部分

以及在后续请求中用于 PartNumberMarker 请求参数的值。

返回: 总是

part_number_marker

整数

当前部分的标记。

返回: 总是

total_parts_count

整数

部分总数。

返回: 总是

object_size

整数

对象的大小(以字节为单位)。

返回: 总是

示例: 819

parts

复杂

与各个部分相关的元素的容器。

返回: 总是

checksum_crc32

字符串

对象的 base64 编码的 32 位 CRC32 校验和。

返回: 如果它是随对象上传的。

示例: "xxxxxxxxxxxx"

checksum_crc32c

字符串

对象的 base64 编码的 32 位 CRC32C 校验和。

返回: 如果它是随对象上传的。

示例: "xxxxxxxxxxxx"

checksum_sha1

字符串

对象的 base64 编码的 160 位 SHA-1 摘要。

返回: 如果它是随对象上传的。

示例: "xxxxxxxxxxxx"

checksum_sha256

字符串

对象的 base64 编码的 256 位 SHA-256 摘要。

返回: 如果它是随对象上传的。

示例: "xxxxxxxxxxxx"

part_number

整数

标识该部分的部分号。此值为 1 到 10,000 之间的正整数。

返回: 总是

size

整数

上传部分的大小(以字节为单位)。

返回: 总是

storage_class

字符串

对象的存储类信息。

返回: 总是

示例: "STANDARD"

object_data

字典

包含 S3 对象元数据的字典。

返回: 当指定了 bucket_nameobject_name,但未指定 object_details 时。

accept_ranges

字符串

指示指定了字节范围。

返回: 总是

content_length

整数

主体(对象数据)的大小,以字节为单位。

返回: 总是

content_type

字符串

描述对象数据格式的标准 MIME 类型。

返回: 总是

e_tag

字符串

Web 服务器分配给 URL 中找到的特定资源版本的 opaque 标识符。

返回: 总是

last_modified

字符串

对象的创建日期。

返回: 总是

metadata

字典

要与 S3 中的对象一起存储的元数据映射。

返回: 总是

server_side_encryption

字符串

在 Amazon S3 中存储此对象时使用的服务器端加密算法。

返回: 总是

tag_count

整数

对象上的标签数量(如果有)。

返回: 总是

复杂

对象当前的法律保留状态

返回:object_details.object_legal_hold=true 且存储桶上设置了对象法律保留时。

复杂

指定对象的当前法律保留状态。

返回: 总是

字符串

指示指定对象是否已设置法律保留。

返回: 总是

示例: "ON"

object_lock_configuration

复杂

存储桶的对象锁定配置。

返回:object_details.object_lock_configuration=true 且存储桶上设置了对象锁定配置时。

object_lock_enabled

字符串

指示此存储桶是否启用了对象锁定配置。

返回: 总是

rule

复杂

指定指定对象的对象锁定规则。

返回: 总是

default_retention

复杂

要应用于放置在指定存储桶中的新对象的默认对象锁定保留模式和期限。

返回: 总是

days

整数

要为默认保留期指定的天数。

返回: 总是

mode

字符串

要应用于放置在指定存储桶中的新对象的默认对象锁定保留模式。

必须与 Days 或 Years 一起使用。

返回: 总是

years

整数

要为默认保留期指定的年数。

返回: 总是

object_retention

复杂

对象的保留设置。

返回:object_details.object_retention=true 且存储桶上设置了对象保留时。

retention

复杂

对象保留设置的容器元素。

返回: 总是

mode

字符串

指示指定对象的保留模式。

返回: 总是

retain_until_date

字符串

此对象锁定保留将过期的日期。

返回: 总是

object_tagging

字典

对象的标签集

返回:object_details.object_tagging=true 时。

s3_keys

list / elements=string

对象键列表。

返回: 当仅指定了 bucket_name,且未指定 object_nameobject_details 时。

示例: ["prefix1/", "prefix1/key1", "prefix1/key2"]

作者

  • Mandar Vijay Kulkarni (@mandar242)