跳转到主要内容

AiiDA插件,它使用S3对象存储作为文件存储库来提供存储后端。

项目描述

aiida-s3

aiida-s3插件,它提供各种存储后端,允许使用云数据存储服务,如AWS S3和Azure Blob Storage。

目前,以下存储后端可用

  • s3.psql_s3:由PostgreSQL提供的数据库和由任何实现S3协议的服务提供的文件存储库,例如 minIO
  • s3.psql_aws_s3:由PostgreSQL提供的数据库和由 AWS S3 提供的文件存储库。
  • s3.psql_azure_blob:由PostgreSQL提供的数据库和由 Azure Blob Storage 提供的文件存储库。

安装

推荐的安装方法是使用Python的pip包安装程序

pip install aiida-s3

设置

要使用aiida-s3提供的存储后端之一与AiiDA一起使用,您需要为其创建一个配置文件

  1. 列出可用的存储后端

    aiida-s3 profile setup --help
    
  2. 通过将可用的存储后端作为参数传递给aiida-s3 profile setup,使用其中一个创建配置文件,例如:

    aiida-s3 profile setup s3.psql_s3
    

    命令将提示您输入设置存储后端所需的信息。在输入所有信息后,存储后端将被初始化,例如创建数据库模式和创建文件容器。

  3. 为配置文件创建默认用户

    verdi -p profile-name user configure --set-default
    
  4. 现在配置文件已经准备好与AiiDA一起使用了。可选地,您可以将其设置为新的默认配置文件

    verdi profile setdefault profile-name
    
  5. 可选地,为了测试一切是否按预期工作,启动一个测试计算

    verdi -p profile-name devel launch-add
    

测试

单元测试是通过pytest实现的,并运行。要运行它们,需要安装具有tests额外依赖项的包

pip install aiida-s3[tests]

插件提供了与各种需要凭据的服务(如AWS S3和Azure Blob Storage)的接口。要运行测试套件,必须提供这些凭据或必须对这些服务进行模拟。下面提供了每个支持服务的说明。

S3

基本的S3实现通过boto3 Python SDK进行接口。moto库允许模拟此接口。这使得在无需任何凭据的情况下运行测试套件成为可能。要运行测试,只需执行pytest

pytest

默认情况下,S3的交互通过moto进行模拟,无需实际凭据。要针对实际S3服务器运行测试,必须通过环境变量指定端点URL和凭据

export AIIDA_S3_MOCK_S3=False
export AIIDA_S3_ENDPOINT_URL='http://localhost:9000'
export AIIDA_S3_BUCKET_NAME='some-bucket'
export AIIDA_S3_ACCESS_KEY_ID='access-key'
export AIIDA_S3_SECRET_ACCESS_KEY='secret-access-key'
pytest

一个S3兼容对象存储的开源实现示例是minIO。可以使用Docker和docker-compose轻松地在本地创建实例。只需将以下内容写入docker-compose.yml

version: '2'

services:
  minio:
    container_name: Minio
    command: server /data --console-address ":9001"
    environment:
      - MINIO_ROOT_USER=admin
      - MINIO_ROOT_PASSWORD=supersecret
    image: quay.io/minio/minio:latest
    ports:
      - '9000:9000'
      - '9001:9001'
    volumes:
      - /tmp/minio:/data
    restart: unless-stopped

然后启动容器

docker-compose up -d

然后可以使用上述方法使用环境变量运行针对服务器的测试。

AWS S3

AWS S3服务通过boto3 Python SDK进行接口。moto库允许模拟此接口。这使得在无需任何凭据的情况下运行测试套件成为可能。要运行测试,只需执行pytest

pytest

默认情况下,与AWS S3的交互通过moto进行模拟,无需实际凭据。要针对实际AWS S3容器运行测试,必须通过环境变量指定凭据

export AIIDA_S3_MOCK_AWS_S3=False
export AIIDA_S3_AWS_BUCKET_NAME='some-bucket'
export AIIDA_S3_AWS_ACCESS_KEY_ID='access-key'
export AIIDA_S3_AWS_SECRET_ACCESS_KEY='secret-access-key'
pytest

Azure Blob Storage

Azure Blob Storage通过azure-blob-storage Python SDK进行通信。目前,没有很好的方法来模拟此库的客户端。因此,当在没有凭据的情况下运行测试时,需要模拟Azure Blob Storage客户端,测试将被跳过。要针对实际的AWS S3容器运行测试,必须通过环境变量指定凭据

export AIIDA_S3_MOCK_AZURE_BLOB=False
export AIIDA_S3_AZURE_BLOB_CONTAINER_NAME='some-container'
export AIIDA_S3_AZURE_BLOB_CONNECTION_STRING='DefaultEndpointsProtocol=https;AccountName=...;AccountKey=...;EndpointSuffix=core.windows.net'
pytest

指定的容器不必已存在,它将自动创建。连接字符串可以通过Azure门户获得。

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分布

aiida-s3-0.2.0.tar.gz (12.8 kB 查看哈希值)

上传时间 源代码

构建分布

aiida_s3-0.2.0-py3-none-any.whl (16.5 kB 查看哈希值)

上传时间 Python 3

支持者