我想通过Docker容器运行Nextflow管道。作为管道的一部分,我想从 AWS 推送和拉取。为此,我需要将 AWS 凭证传递给容器,但我不想将它们写入映像。
Nextflow 有一个选项,可以通过 envWhitelist 选项将环境变量作为 Docker 范围的一部分传入,但是在执行此操作时我无法找到正确语法的示例。
我尝试了以下语法并收到拒绝访问错误,表明我没有正确传入变量。
docker {
enabled = true
envWhitelist = "AWS_SECRET_ACCESS_KEY, AWS_ACCESS_KEY_ID"
}
我将这些变量显式地传递到我的环境中,我可以使用 printenv 查看它们。
这种语法看起来正确吗?感谢您的任何帮助!
通常,您可以将 AWS 安全凭证保存在名为~/.aws/credentials
的文件中:
AWS_SECRET_ACCESS_KEY
AWS_ACCESS_KEY_ID
如果未在 环境,Nextflow 将尝试从您的~/.aws/credentials
或~/.aws/config
文件。
或者,您可以使用aws
范围在 nextflow.config(或单独的配置文件)中声明您的 AWS 凭证:
aws {
accessKey = '<YOUR S3 ACCESS KEY>'
secretKey = '<YOUR S3 SECRET KEY>'
region = '<REGION IDENTIFIER>'
}
您还可以使用 IAM 实例角色来提供您的凭证。