0

我正在尝试在 Oracle 云上的存储桶中打印文件。我已经为它安装了 oci 库并走到了这一步。现在我不知道如何获取特定存储桶中的文件列表。

import os,oci
from oci.config import validate_config

tenancyId="sdkfh" # Your tenancies OCID.
authUserId="sdjfs"; # The OCID of the user ID being used.
OCI_KEY_PATH="filename"; # Path of the key file.
keyFingerprint="12:13:14:15"; # The fingerprint of the key file being used

config = {
    "user": authUserId,
    "key_file": OCI_KEY_PATH,
    "fingerprint": keyFingerprint,
    "tenancy": tenancyId,
    "region": "us-phoenix-1"
}

validate_config(config)

identity = oci.identity.IdentityClient(config)
user = identity.get_user(config["user"]).data
print(user)
4

2 回答 2

1

我看到问题已经得到解答,但是这里有一种更优雅的方式来管理凭据。我将使用它来演示相同的代码。

OCI 在 ~/.oci/config 中为每个用户的用户凭据提供了一个目录。此配置文件使用类似于 INI 文件的语法。相同的示例如下所示:

[<profile-name>]
user=<user-ocid>
key_file=<private-key-path>
region=<region-name>
tenancy=<tenancy-ocid>
fingerprint=<public-key-fingerprint>

现在,OCI CLI 和 Python SDK 可以使用此配置文件。您可以使用包中的简单函数轻松读取凭据。

from oci.config import from_file

config = from_file(profile_name=<profile-name>)

现在您可以简单地使用此配置对象来执行任何进一步的操作。

于 2020-09-20T11:44:32.567 回答
1

列出存储桶内的对象。

import os,oci
from oci.config import validate_config

tenancyId="sdkfh" # Your tenancies OCID.
authUserId="sdjfs"; # The OCID of the user ID being used.
OCI_KEY_PATH="filename"; # Path of the key file.
keyFingerprint="12:13:14:15"; # The fingerprint of the key file being used
namespace = "xyz"
bucket_name = "abc"
config = {
    "user": authUserId,
    "key_file": OCI_KEY_PATH,
    "fingerprint": keyFingerprint,
    "tenancy": tenancyId,
    "region": "us-phoenix-1"
}
#it validates the above fields for connection
validate_config(config)
# prefix and fields are optional paramater.
#prefix is for filename pattern but not a regex
#fields valid values - md5,name,timeCreated,size
object_storage_client = oci.object_storage.ObjectStorageClient(config)
object_list = object_storage_client.list_objects(namespace, bucket_name, prefix = filename , fields="name,timeCreated,size")
for o in object_list.data.objects:
    print(o.name)

输出:存储桶内具有给定字段的文件列表

假设您想要那些以文件名 * 开头的文件,而不是将前缀作为文件名。由于它不是正则表达式,所以 * 和其他东西将不起作用。在这里,我无法获得上次修改时间和其他各种字段。如果有人知道,请在这里告诉我。适用于 Oracle 云基础设施 Github 的 Python SDK 链接到源代码

于 2019-11-19T08:03:22.910 回答