跳转到主要内容

Cumulus Tasks的Cumulus消息准备和输出的命令行界面

项目描述

# Cumulus Message Adapter

[![CircleCI](https://circleci.com/gh/nasa/cumulus-message-adapter.svg?style=svg)](https://circleci.com/gh/nasa/cumulus-message-adapter)

cumulus-message-adapter是一个用于准备和输出Cumulus Tasks的Cumulus消息的命令行界面。cumulus-message-adapter帮助Cumulus开发者将任务集成到Cumulus工作流中。

有关cumulus-message-adapter如何工作的更多信息,请参阅[CONTRACT.md](./CONTRACT.md)。

## 版本

### 版本版本

请注意以下版本约定

X.Y.Z:其中

  • X是一个组织发布版本,表示一组核心功能的完成

  • Y是一个主要版本发布,可能包括不兼容的API更改和其他破坏性更改

  • Z是一个次要版本,包括错误修复和向后兼容的改进

### 持续集成

[CircleCI](https://circleci.com/gh/nasa/cumulus-message-adapter)管理发布和发布资产。

当CircleCI通过cumulus-message-adapter的主分支并且message_adapter/version.py已更新为与现有标签不匹配的版本时,CircleCI将

  • 使用message_adapter/version.py中的字符串创建一个新的标签tag_name

  • 使用新的标签创建一个新的发布版本,其名称等于tag_name(等于版本)。

  • 构建一个cumulus-message-adapter.zip文件,并将其作为发布资产附加到新创建的发布中。该zip文件使用此存储库根目录中的[Makefile](./Makefile)创建。

这些步骤在[.circleci/config.yml](./.circleci/config.yml)文件中详细说明。

## 开发

### 依赖安装

`shell pip install -r requirements-dev.txt pip install -r requirements.txt `

### 运行测试

运行测试需要[localstack](https://github.com/localstack/localstack).

测试只需要运行S3的localstack,可以使用以下命令启动

`shell EAGER_SERVICE_LOADING=1 SERVICES=s3 localstack start `

然后,您可以使用以下nosetests命令检查测试是否通过

`shell CUMULUS_ENV=testing nose2 -v `

### 代码检查

`shell pylint message_adapter `

### 贡献

如果对代码库进行了更改,您可以创建cumulus-message-adapter zip存档以测试需要它的库

`shell make clean make cumulus-message-adapter.zip `

然后您可以运行一些集成测试

`shell ./examples/example-node-message-adapter-lib.js `

在更改最终确定并发布之前,应该将cumulus-message-adapter zip存档打包并在lambda环境中测试,因为那将是它被使用的地方。

#### 打包

打包zip文件最好在一个与将要运行的lambda环境相似的环境中完成,其中包含当前的Python版本,所以我们使用AWS Python Lambda镜像。某些包需要安装,并且由于Python路径问题,使用虚拟环境很重要。

`shell docker run -v ~/projects/cumulus-message-adapter/:/cma/ -v ~/tmp/:/tmp/ -v ~/amazon/:/home/amazon/ -it --entrypoint /bin/bash amazon/aws-lambda-python:3.10 yum install -y make binutils zip cd /cma pip install --user virtualenv ~/.local/bin/virtualenv ~/venv310 . ~/venv310/bin/activate pip install . make clean make cumulus-message-adapter.zip `

#### 在Lambda环境中测试包

一旦创建了包,就应该在Lambda环境中进行测试。在这样做之前,可以在上述命令之后立即运行该包,以查看是否出现任何错误,这表明创建包时出现了问题./dist/cma stream

如果立即没有出现错误,可以可选地在AWS Lambda NodeJS镜像中测试zip文件,因为那是目标环境。在镜像中运行可能允许更快地进行测试和开发,但测试AWS仍然是最终的测试。

`shell docker run -v ~/projects/cumulus-message-adapter:/zipfile --entrypoint / bin/bash -it amazon/aws-lambda-nodejs:16 cd /zipfile cp -r dist /opt/ cd /opt/dist ./cma stream `

在AWS Lambda中测试包需要在作为层上传zip文件,然后运行利用该层的Cumulus步骤函数。以下说明适用于可以访问为该目的专门设置的层的Cumulus Core团队成员。

  • 在AWS控制台中,转到Lambda > 层 > CMA_Test

  • 通过上传之前打包的cumulus-message-adapater zip文件创建新版本

  • 在您的/cumulus-tf/terraform.tfvars中,将cumulus_message_adapter_lambda_layer_version_arn的值替换为新建的版本ARN

  • 使用terraform apply应用更改

  • 找到任何最近成功运行的Step Function,并运行新执行。CMA_TEST层的“使用此版本的函数”标签应提供一些选项。

### 故障排除

  • 错误:“DistutilsOptionError:必须提供home或prefix/exec-prefix,但不能同时提供两者”在运行make cumulus-message-adapter.zip * [解决方案](https://stackoverflow.com/a/24357384)

项目详情


下载文件

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

源分发

cumulus_message_adapter-2.0.4.tar.gz (19.3 kB 查看哈希值)

上传时间

支持者: