【发布时间】:2018-08-07 18:16:57
【问题描述】:
我有以下 json:
{
"taskDefinition": {
"containerDefinitions": [
{
"memoryReservation": 1040,
"mountPoints": [
],
"name": "staging-web1",
"image": "1234567.dkr.ecr.us-west-2.amazonaws.com\/staging:staging-web",
"essential": true,
"environment": [
{
"name": "REVISION",
"value": ""
},
{
"name": "RELEASE_VERSION",
"value": ""
},
{
"name": "ENVIRONMENT",
"value": ""
}
],
"logConfiguration": {
"logDriver": "awslogs",
"options": {
"awslogs-region": "us-west-2",
"awslogs-group": "\/ecs\/staging",
"awslogs-stream-prefix": "ecs"
}
},
"portMappings": [
],
"cpu": 0,
"volumesFrom": [
]
},
{
"memoryReservation": 1040,
"mountPoints": [
],
"name": "s-staging-nosql1",
"image": "1234567.dkr.ecr.us-west-2.amazonaws.com\/staging:staging-nosql",
"essential": true,
"environment": [
{
"name": "REVISION",
"value": ""
},
{
"name": "RELEASE_VERSION",
"value": ""
},
{
"name": "ENVIRONMENT",
"value": ""
}
],
"logConfiguration": {
"logDriver": "awslogs",
"options": {
"awslogs-region": "us-west-2",
"awslogs-group": "\/ecs\/staging",
"awslogs-stream-prefix": "ecs"
}
},
"portMappings": [
],
"cpu": 0,
"volumesFrom": [
]
},
{
"memoryReservation": 1040,
"mountPoints": [
],
"name": "s-staging-db1",
"image": "1234567.dkr.ecr.us-west-2.amazonaws.com\/staging:staging-db",
"essential": true,
"environment": [
{
"name": "REVISION",
"value": ""
},
{
"name": "RELEASE_VERSION",
"value": ""
},
{
"name": "ENVIRONMENT",
"value": ""
}
],
"logConfiguration": {
"logDriver": "awslogs",
"options": {
"awslogs-region": "us-west-2",
"awslogs-group": "\/ecs\/staging",
"awslogs-stream-prefix": "ecs"
}
},
"portMappings": [
],
"cpu": 0,
"volumesFrom": [
]
}
]
}
}
我尝试用python做的是在containerDefinitions中调整每个环境下的REVISION、RELEASE_VERSION和ENVIRONMENT。
在python方面我是个新手,但我正在尝试如下:
NEW_CONTAINER_DEF=$(echo "${PREVIOUS_TASK_DEF}" | python <(cat <<-EOF
import sys, json
json_data = json.load(sys.stdin)
for item in json_data['taskDefinition']['containerDefinitions']:
if json_data.get(['environment']['name']) == "REVISION":
item['environment']['value'] = "myrevision"
print json.dumps(json_data)
EOF
))
不用说上面的代码不起作用。有更多 python 经验的人可以帮助我了解如何迭代和更新值吗?
谢谢!
【问题讨论】: