AWS MWAA(Apache Airflow的托管工作流(是AWS提供的一项相对较新的服务。在配置MWAA环境时,可以提供自定义的requirements.txt
文件,用于在该环境中安装其他Python包。
在我工作的公司,我们使用AWS CodeArtifact来定制PyPi包存储库,在那里我们上传私人Python包。我们想在气流DAG中使用其中的一些。这就是为什么我想知道MWAA环境是否可以以某种方式配置为使用CodeArtifact中的PyPi存储库?
或者有没有办法在MWAA环境中安装自定义Python包(不在公共PyPi中(?
没有尝试,但应该有效:
# aws codeartifact login --tool pip --domain **--repository **
# awk '/index-url/ {print "-i "$3}' ~/.config/pip/pip.conf > requirements.txt
# echo <my python package> >> requirements.txt
它可以用作正常的需求文件:
# pip3 install -r requirements.txt
Looking in indexes: https://aws:****
请注意,CodeArtifact令牌最长将在12小时内过期。您可以创建一个定期作业来重新生成此文件。。。
虽然有点晚,但AWS确实提供了一个示例repo来满足您的需求。该示例使用AWS CDK Python将VPC端点设置为Codeartifacts和您的私有VPC。尽管Python Lambda版本是3.7(已经弃用(,但您可以将其更新到Python 3.10(最新(,并更新AWS CDK Python版本,而不会出现任何问题。我最近也接受了这个回购,并让我的私人MWAA毫无问题地使用了代码工件。您也可以根据自己的要求更新S3 bucket和Path。
https://github.com/aws-samples/amazon-mwaa-examples/blob/main/usecases/mwaa-with-codeartifact/README.md
安装aws cdk Nodejs
yarn add --global aws-cdk
npx cdk deploy CodeArtifactStack LambdaCronStack # Require LTS nodejs