如何解决Terraform AWS Batch 作业定义参数 (aws_batch_job_definition)
我试图了解在启动 AWS Batch 作业时如何进行参数替换。我需要做的是为我的 AWS Batch 作业提供一个 S3 对象键。我还没有找到将参数传递给 Batch 作业的 Terraform 示例,而且我似乎无法让它工作。
aws_batch_job_definition 的文档包含以下示例:
bin/console cache:clear --env=prod_ldap
假设我希望将 resource "aws_batch_job_definition" "test" {
name = "tf_test_batch_job_definition"
type = "container"
container_properties = <<CONTAINER_PROPERTIES
{
"command": ["ls","-la"],"image": "busybox","memory": 1024,"vcpus": 1,"volumes": [
{
"host": {
"sourcePath": "/tmp"
},"name": "tmp"
}
],"environment": [
{"name": "VARNAME","value": "VARVAL"}
],"mountPoints": [
{
"sourceVolume": "tmp","containerPath": "/tmp","readOnly": false
}
],"ulimits": [
{
"hardLimit": 1024,"name": "nofile","softLimit": 1024
}
]
}
CONTAINER_PROPERTIES
}
作为参数,以便在我通过 AWS Batch API 启动作业时指定其值。这是如何实现的?根据 VARNAME
资源的文档,有一个名为 aws_batch_job_definition
的参数。但是,这是一张地图,而不是我所期望的列表。此映射中给出的键和值是什么?
解决方法
aws_batch_job_definition.parameters
link 上的 Terraform 文档目前非常稀少。
但是,通过在 AWS 中的现有作业上运行 aws batch describe-jobs --jobs $job_id
,参数对象似乎需要一个地图:
{
"jobs": [
{
"parameters": {},"container": {
"image": "","command": []
}
}
]
}
因此,您可以使用 Terraform 定义带有地图变量的批处理参数,然后在批处理资源命令定义中使用 CloudFormation 语法,例如 Ref::myVariableKey
,一旦提交 AWS 作业就会正确插入。示例:
variable "batch_params" {
type = map
default = {
bucketName = "defaultBucketName",}
}
resource "aws_batch_job_definition" "test" {
name = "tf_test_batch_job_definition"
type = "container"
parameters = var.batch_params
container_properties = <<CONTAINER_PROPERTIES
{
"command": ["Ref::bucketName"],"image": "busybox","memory": 1024,"vcpus": 1,"volumes": [
{
"host": {
"sourcePath": "/tmp"
},"name": "tmp"
}
],"environment": [
{"name": "VARNAME","value": "VARVAL"}
],"mountPoints": [
{
"sourceVolume": "tmp","containerPath": "/tmp","readOnly": false
}
],"ulimits": [
{
"hardLimit": 1024,"name": "nofile","softLimit": 1024
}
]
}
CONTAINER_PROPERTIES
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。