gpt4 book ai didi

amazon-web-services - Terraform - 在 ECS 容器定义中使用 SSM 参数

转载 作者:行者123 更新时间:2023-12-04 13:12:50 26 4
gpt4 key购买 nike

我正在使用 Terraform 部署 ECS 任务,并希望在 ECS 任务的容器定义中使用 AWS SSM 参数。
我有 3 个 SSM 参数,我想用它们来覆盖 service.json 中定义的默认属性。 (端口、TEST_PROP_1、TEST_PROP_2)
我有没有办法为容器定义环境变量提供这些 SSM 参数的 ARN?
地形资源:

resource "aws_ecs_task_definition" "testapp" {
family = "testapp"
network_mode = "awsvpc"
cpu = 256
memory = 512
container_definitions = file("../modules/ecs_service/task-definitions/service.json")
requires_compatibilities = [
"FARGATE"
]
execution_role_arn = "arn:aws:iam::redacted:role/ecsTaskExecutionRole"
task_role_arn = "arn:aws:iam::redacted:role/ecsTaskExecutionRole"
}
服务.json
[
{
"name": "testapp",
"image": "redacted/demoapp:latest",
"portMappings": [
{
"containerPort": 59817,
"hostPort": 59817,
"protocol": "tcp"
}
],
"logConfiguration": {
"logDriver": "awslogs",
"options": {
"awslogs-group": "testappLG",
"awslogs-region": "us-east-1",
"awslogs-stream-prefix": "devtest"
}
},
"Environment": [
{
"Name": "PORT",
"Value": "9001"
},
{
"Name": "TEST_PROP_1",
"Value": "Override value - test prop 1"
},
{
"Name": "TEST_PROP_2",
"Value": "Override value - test prop 2"
}
]
}
]

最佳答案

您可以在此 Terraform 运行中创建 SSM 参数,在这种情况下您已经拥有对它的引用,或者您可以使用 data source 查找它。 .例如,假设您使用数据源:

data "aws_ssm_parameter" "foo" {
name = "foo"
}
现在,而不是 file()函数我会使用 templatefile()函数,因此您可以在 json 中使用插值。这意味着您的 Terraform 模板中的行将更改为此(传递您要在 JSON 中使用的 secret 的 ARN):
container_definitions = templatefile( "../modules/ecs_service/task-definitions/service.json", { 
secret1 = data.aws_ssm_parameter.foo.arn
})
最后,您的 JSON 文件需要如下所示,以便告诉 ECS 在创建任务实例时查找 secret 并将其传递到容器中:
[
{
"name": "testapp",
"image": "redacted/demoapp:latest",
"portMappings": [
{
"containerPort": 59817,
"hostPort": 59817,
"protocol": "tcp"
}
],
"logConfiguration": {
"logDriver": "awslogs",
"options": {
"awslogs-group": "testappLG",
"awslogs-region": "us-east-1",
"awslogs-stream-prefix": "devtest"
}
},
"secrets": [
{
"name": "MY_SECRET",
"valueFrom": "${secret1}"
}
],
"Environment": [
{
"Name": "PORT",
"Value": "9001"
},
{
"Name": "TEST_PROP_1",
"Value": "Override value - test prop 1"
},
{
"Name": "TEST_PROP_2",
"Value": "Override value - test prop 2"
}
]
}
]

关于amazon-web-services - Terraform - 在 ECS 容器定义中使用 SSM 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63235612/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com