📌  相关文章
📜  检查 s3 python 上是否存在文件 - TypeScript (1)

📅  最后修改于: 2023-12-03 15:40:31.425000             🧑  作者: Mango

检查 S3 Python 上是否存在文件 - TypeScript

在使用 AWS 的 S3 存储服务时,我们经常需要检查某个特定的文件是否存在。在 Python 和 TypeScript 中,实现该功能的方法是非常相似的。下面介绍如何使用 AWS SDK 在这两种语言中检查 S3 上是否存在文件。

Python
安装 AWS SDK

首先,需要在 Python 中安装 AWS SDK。使用 pip 命令即可:

pip install boto3
检查文件是否存在

检查文件是否存在的方法是调用 getObject 函数,并捕获 botocore.exceptions.ClientError 异常。如果获取文件时出现异常,说明该文件不存在。

下面是检查文件是否存在的 Python 代码:

import boto3
from botocore.exceptions import ClientError

def check_file_exist(bucket_name, key):
    s3 = boto3.resource('s3')
    try:
        s3.Object(bucket_name, key).get()
        return True
    except ClientError as e:
        if e.response['Error']['Code'] == "404":
            return False
        else:
            raise

在上述代码中,check_file_exist 函数接受两个参数:bucket_name 表示 S3 桶的名称,key 表示需要检查的文件的键或路径。如果该文件存在,函数返回 True;否则返回 False

TypeScript
安装 AWS SDK

在 TypeScript 中使用 AWS SDK,需要先安装对应的 npm 包。在命令行中执行以下命令即可:

npm install aws-sdk
检查文件是否存在

在 TypeScript 中检查 S3 上文件是否存在,方法与 Python 中基本一致。仍然是调用 getObject 函数,在捕获 AWS.S3.NoSuchKey 异常时返回 false

下面是检查文件是否存在的 TypeScript 代码:

import S3 from 'aws-sdk/clients/s3';

async function checkFileExist(bucketName: string, key: string): Promise<boolean> {
    const s3 = new S3();
    try {
        await s3.getObject({ Bucket: bucketName, Key: key }).promise();
        return true;
    } catch (err) {
        if (err.code === 'NoSuchKey') {
            return false;
        } else {
            throw err;
        }
    }
}

在上述代码中,checkFileExist 函数接受两个参数:bucketName 表示 S3 桶的名称,key 表示需要检查的文件的键或路径。如果该文件存在,函数返回 true;否则返回 false

结论

在 Python 和 TypeScript 中,使用 AWS SDK 检查 S3 上是否存在文件的方法非常相似。我们只需要调用 getObject 函数,然后捕获相应的异常即可。值得注意的是,在 TypeScript 中,getObject 函数返回的是一个 Promise 对象,因此需要使用 async/await 语法进行异步操作。