添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

可以通过ListObjectV2的接口,列出Bucket中所有的key之后,再统计数量。
以京东云OSS为例(京东云OSS兼容aws 的S3)

Python代码

import boto3
接口文档: https://docs.jdcloud.com/cn/object-storage-service/api/get-bucket-2?content=API
ACCESS_KEY = ''
SECRET_KEY = ''
endpoint = "http://s3-internal.cn-north-1.jdcloud-oss.com"
bucket = ""
maxKeys = 1000
outfile = "./oss_list.txt"
s3 = boto3.client(
    's3',
    aws_access_key_id=ACCESS_KEY,
    aws_secret_access_key=SECRET_KEY,
    # 下面给出一个endpoint_url的例子
    endpoint_url=endpoint
f = open(outfile, "w")
resp = s3.list_objects_v2(Bucket=bucket, MaxKeys=maxKeys)
for content in resp["Contents"]:
    f.write(content["Key"] + " " + str(content["Size"]) + "\n")
f.flush()
flags = resp["IsTruncated"]
while flags:
    token = resp["NextContinuationToken"]
    resp = s3.list_objects_v2(Bucket=bucket, MaxKeys=maxKeys, ContinuationToken=token)
    for content in resp["Contents"]:
        f.write(content["Key"] + " " + str(content["Size"]) + "\n")
    f.flush()
    flags = resp["IsTruncated"]
f.close()

Golang代码

package main
import (
    "bufio"
    "encoding/json"
    "github.com/aws/aws-sdk-go/aws"
    "github.com/aws/aws-sdk-go/aws/credentials"
    "github.com/aws/aws-sdk-go/aws/session"
    "github.com/aws/aws-sdk-go/service/s3"
    "io/ioutil"
    "strconv"
type ListObjectsConfig struct {
    AccessKey string `json:"accessKey"`
    SecretKey string `json:"secretKey"`
    Endpoint string `json:"endpoint"`
    Bucket string `json:"bucket"`
    Region string `json:"region"`
func listObjects() {
    configFile := os.Args[1]
    configStr, err := ioutil.ReadFile(configFile)
    if err != nil {
        panic(err)
    config := &ListObjectsConfig{}
    err = json.Unmarshal(configStr, config)
    if err != nil {
        panic(err)
    outfile := os.Args[2]
    creds := credentials.NewStaticCredentials(config.AccessKey, config.SecretKey, "")
    _, err = creds.Get()
    if err != nil {
        panic(err)
    awsConfig := &aws.Config{
        Region:      aws.String(config.Region),
        Endpoint:    aws.String(config.Endpoint),
        DisableSSL:  aws.Bool(false),
        Credentials: creds,
    client := s3.New(session.New(awsConfig))
    f, err := os.OpenFile(outfile, os.O_CREATE|os.O_WRONLY|os.O_TRUNC, 0644)
    if err != nil {
        panic(err)
    defer f.Close()
    w := bufio.NewWriter(f)
    isTruncated := true
    var token *string
    for isTruncated {
        resp, err := client.ListObjectsV2(&s3.ListObjectsV2Input{
            Bucket: aws.String(config.Bucket),
            MaxKeys: aws.Int64(1000),
            ContinuationToken: token,
        if err != nil {
            panic(err)
        isTruncated = *resp.IsTruncated
        token = resp.NextContinuationToken
        for _, content := range resp.Contents {
            _, err = w.WriteString(*content.Key + " " + strconv.FormatInt(*content.Size, 10) + "\n")
            if err != nil {
                panic(err)
        w.Flush()
func main() {
    if len(os.Args) != 3 {
        fmt.Println("参数数量异常! ")
        fmt.Println("./s3list CONFIG OUTFILE")
    listObjects()

golang读取的配置文件

"accessKey": "", "secretKey": "", "endpoint": "http://s3.cn-north-1.jdcloud-oss.com", "bucket": "", "region": "cn-north-1" 使用创建.env文件 BUCKET_NAME= // AWS S3 bucket name AWS_ACCESS_KEY= // AWS IAM user access_key AWS_SECRET_ACCESS_KEY= // AWS IAM user secret_access_key node index.js var BucketList = require ( 'bucket-list' ) ; var bucket = BucketList . connect ( { key : 's3-key' , secret : 's3-secret' bucket : 'name-of-the-s3-bucket' } ) ; // Stream bucket files var bucketStream = bucket ( 'folder_name' ) ; bucketStream . on ( 'data' , function ( fileNameWithPath ) { console . log ( fileNameWithPath ) ; S3_BUCKET_ACCESS_KEY_ID=value S3_BUCKET_SECRET_ACCESS_KEY=value S3_BUCKET_NAME=value S3_BUCKET_REGION=value // Don't forgot to import the function :smiling_face_with_smiling_eyes: const { updateCredentials , updateRegion , getAllBuckets , getUploadUrl , uploadFile , listFiles , deleteFiles , } = require ( 's3-bucket' ) ; getAllBuckets() 是的! 就像您已经猜到的那样。 它会列出您的AWS账户的所有 有一个内置的缓存层,用于加速连续的 API 调用,缓存基于可配置的响应。 您可以在我们的阅读有关它如何工作的更多。 到现在为止,我们委托给来为缓存层提供服务,因为它很快; 然而,当你有一定的尺寸时,它也很昂贵。 该服务服务,其每个请求都创建一个缓存条目; 这意味着可以相对较快地耗尽空间。 我们想要一个满足以下前提的缓存层: 无限空间。 规模便宜。 知道我们想要什么,并记住响应负载是 JSON,我们发现Amazon S3存储桶是出色的存储。 $ npm install @keyv/core @aws-sdk/client-s3 keyv-s3 --save 首先,您需要创建一个 S3 存储桶以用作缓存层 您需要设置正确的存储桶名称才能通过 HTTP 进行访问。 为此,我们在存储桶名称上设置了 CNAME,在我们的例子,我们
1. AWS S3对象存储 Amazon Simple Storage Service (Amazon S3) 是一种面向 Internet 的存储服务。您可以通过 Amazon S3 随时在 Web 上的任何位置存储和检索的任意大小的数据。 Amazon S3将数据作为对象存储在存储区。一个对象由一个文件和可选的描述该文件的任何元数据组成。在S3里面实质上是没有目录和文件夹的概念,即目录概念实...
因此需要翻页遍历出所有的对象。 private LinkedList<S3ObjectSummary> allObjectList = new LinkedList<S3ObjectSummary>(); public void download(){ const dbcsv = require ( 'db-csv-s3' ) await dbcsv ( { S3 , bucketname : "yourbucketname" , s3Prefix : 'db_backup' , Knex , tables , rows = 50000 S3 - S3 服务对象,包括accessKeyId 、 secretAccessKey 、 region 、 apiVersion 。 前任: const S3 = new AWS . S3 ( { accessKeyId : youraw 对象存储服务,简单来说,可以把它当成一个“网盘”,可以上传下载数据,也可以直接在这个“网盘”对文件进行某些操作。 我之前所在部门收到的,涉及到第三方合作的数据分析项目,自从对象存储服务开始流行起来后,大多都使用了这些对象存储服务。这些项目在技术方面,内部几乎完全交给了我一个人,正好给了我学习这个东西的经验。 我为什么要写一篇这样的文章呢,背景是这样的 这3个对象存储服务,都是有各种开发环境sdk的,其他公司大多会选择使用java/python/.NET等来开发数据导出及同步的服务。而我所在部门,当时 存储的“目录”根据Key来指定, 1.2 OSS 帮助文档: https://help.aliyun.com/document_detail/31965.html?spm=a2c4g.11186623.2.12.10014c07Y1Dh9G Go SDK : https://help.aliyun.com/document_detail/88639.html?spm=a2c4g.1118...
要在Logstash连接S3,可以使用Logstash-input-s3插件。该插件可以从S3存储桶读取数据并将其发送到Logstash管道进行处理。 以下是一个示例配置文件,可以实现将S3存储桶的CSV文件读取到Logstash: input { access_key_id => "your_access_key" secret_access_key => "your_secret_key" bucket => "your_bucket_name" region => "your_bucket_region" prefix => "your_file_prefix" sincedb_path => "/dev/null" filter { csv { separator => "," columns => ["column1", "column2", "column3"] output { stdout { codec => rubydebug 在以上配置文件,需要将access_key_id、secret_access_keybucket、region和prefix替换为自己的S3存储桶信息。sincedb_path选项指定了sincedb数据库的路径,这里将其设置为/dev/null以禁用sincedb。 filter部分使用CSV插件将读取到的数据按照指定的分隔符和列名进行解析。 output部分将处理后的数据输出到控制台或其他目标位置。 使用以上配置文件可以实现将S3存储桶的CSV文件读取到Logstash进行处理。