AWS: В файле node.js / javascript как я могу разделить массив или объект json, используя цикл for, на отдельные файлы json? - PullRequest
0 голосов
/ 14 февраля 2019

Я пытался разделить код JSON, экспортируя каждый объект с помощью цикла for.

Для эксперимента я опробовал две гипотезы: попытка разделить объекты JSON на несколькоотдельные файлы и прямое подключение к aws-ec2.

Это код, который я использовал:

// Retrieve security group descriptions
ec2.describeSecurityGroups(function(err, data) {
    if (err) {
        console.log("Failed to retrieve information", err);
        return; 
    }

    var sGroupsJSON = JSON.stringify(data.SecurityGroups, null, 4);

    for(var i = 0; i < sGroupsJSON.length; i++) {
        var filename = sGroupsJSON[i] + '.json';
    }

    fs.writeFile(filename, function(err, result) {
        if(err) console.log("Failed to output into file", err);
    });
});

Я не использовал var params , потому чтоЯ не хотел выбирать конкретную группу безопасности.Это цикл for, который я использую:

for(var i = 0; i < sGroupsJSON.length; i++) {
    var filename = sGroupsJSON[i] + '.json';
}

Однако при использовании node.js в powershell я получаю такой ответ:

TypeError [ERR_INVALID_CALLBACK]: Callback must be a function

Затем я решил сосредоточитьсяпо моей другой гипотезе, добавив физический код JSON в файл javascript:

{
    "Description": "SG used for Splunk testing",
    "GroupName": "UtilDev_SG_Splunk",
    "IpPermissions": [
        {
            "FromPort": 22,
            "IpProtocol": "tcp",
            "IpRanges": [
                {
                    "CidrIp": "0.0.0.0/0"
                }
            ],
            "Ipv6Ranges": [],
            "PrefixListIds": [],
            "ToPort": 22,
            "UserIdGroupPairs": []
        }
    ],
    "OwnerId": "894297950639",
    "GroupId": "sg-007855ec05ee715d6",
    "IpPermissionsEgress": [
        {
            "IpProtocol": "-1",
            "IpRanges": [
                {
                    "CidrIp": "0.0.0.0/0"
                }
            ],
            "Ipv6Ranges": [],
            "PrefixListIds": [],
            "UserIdGroupPairs": []
        }
    ],
    "Tags": [
        {
            "Key": "Name",
            "Value": "UtilDev_SG_Splunk"
        }
    ],
    "VpcId": "vpc-0b360fae51f00c201"
},
{
    "Description": "Allow http to client host",
    "GroupName": "ProcDev-Cfn-SecurityGroupPre-W8YW8CIE7VCX",
    "IpPermissions": [
        {
            "FromPort": 80,
            "IpProtocol": "tcp",
            "IpRanges": [
                {
                    "CidrIp": "0.0.0.0/0"
                }
            ],
            "Ipv6Ranges": [],
            "PrefixListIds": [],
            "ToPort": 80,
            "UserIdGroupPairs": []
        },
        {
            "FromPort": 3389,
            "IpProtocol": "tcp",
            "IpRanges": [
                {
                    "CidrIp": "10.26.2.0/24"
                }
            ],
            "Ipv6Ranges": [],
            "PrefixListIds": [],
            "ToPort": 3389,
            "UserIdGroupPairs": []
        },
        {
            "FromPort": 443,
            "IpProtocol": "tcp",
            "IpRanges": [
                {
                    "CidrIp": "0.0.0.0/0"
                }
            ],
            "Ipv6Ranges": [],
            "PrefixListIds": [],
            "ToPort": 443,
            "UserIdGroupPairs": []
        },
        {
            "FromPort": -1,
            "IpProtocol": "icmp",
            "IpRanges": [
                {
                    "CidrIp": "10.26.2.0/24"
                }
            ],
            "Ipv6Ranges": [],
            "PrefixListIds": [],
            "ToPort": -1,
            "UserIdGroupPairs": []
        },
        {
            "FromPort": 6000,
            "IpProtocol": "tcp",
            "IpRanges": [
                {
                    "CidrIp": "0.0.0.0/0"
                }
            ],
            "Ipv6Ranges": [],
            "PrefixListIds": [],
            "ToPort": 6000,
            "UserIdGroupPairs": []
        }
    ],
    "OwnerId": "894297950639",
    "GroupId": "sg-0089036a319a54f46",
    "IpPermissionsEgress": [
        {
            "FromPort": 1433,
            "IpProtocol": "tcp",
            "IpRanges": [
                {
                    "CidrIp": "10.26.17.51/32"
                }
            ],
            "Ipv6Ranges": [],
            "PrefixListIds": [],
            "ToPort": 1433,
            "UserIdGroupPairs": []
        },
        {
            "FromPort": 80,
            "IpProtocol": "tcp",
            "IpRanges": [
                {
                    "CidrIp": "0.0.0.0/0"
                }
            ],
            "Ipv6Ranges": [],
            "PrefixListIds": [],
            "ToPort": 80,
            "UserIdGroupPairs": []
        },
        {
            "IpProtocol": "-1",
            "IpRanges": [
                {
                    "CidrIp": "10.26.1.71/32"
                },
                {
                    "CidrIp": "10.26.5.71/32"
                }
            ],
            "Ipv6Ranges": [],
            "PrefixListIds": [],
            "UserIdGroupPairs": []
        },
        {
            "FromPort": 443,
            "IpProtocol": "tcp",
            "IpRanges": [
                {
                    "CidrIp": "0.0.0.0/0"
                }
            ],
            "Ipv6Ranges": [],
            "PrefixListIds": [],
            "ToPort": 443,
            "UserIdGroupPairs": []
        },
        {
            "FromPort": -1,
            "IpProtocol": "icmp",
            "IpRanges": [
                {
                    "CidrIp": "0.0.0.0/0"
                }
            ],
            "Ipv6Ranges": [],
            "PrefixListIds": [],
            "ToPort": -1,
            "UserIdGroupPairs": []
        }
    ],
    "Tags": [
        {
            "Key": "aws:cloudformation:stack-id",
            "Value": "arn:aws:cloudformation:us-east-1:894297950639:stack/ProcDev-Cfn/40b6e8a0-151b-11e9-a6de-121b5b00f9e8"
        },
        {
            "Key": "Name",
            "Value": "ProcDev_SG_Pre01-A"
        },
        {
            "Key": "aws:cloudformation:logical-id",
            "Value": "SecurityGroupPre"
        },
        {
            "Key": "aws:cloudformation:stack-name",
            "Value": "ProcDev-Cfn"
        }
    ],
    "VpcId": "vpc-05523e12896635be8"
}

И вот результат:

Failed to retrieve information { MultipleValidationErrors: There were 8 
validation errors:
* UnexpectedParameter: Unexpected key 'Description' found in params
* UnexpectedParameter: Unexpected key 'GroupName' found in params
* UnexpectedParameter: Unexpected key 'IpPermissions' found in params
* UnexpectedParameter: Unexpected key 'OwnerId' found in params
* UnexpectedParameter: Unexpected key 'GroupId' found in params
* UnexpectedParameter: Unexpected key 'IpPermissionsEgress' found in params
* UnexpectedParameter: Unexpected key 'Tags' found in params
* UnexpectedParameter: Unexpected key 'VpcId' found in params

Я хочу экспортировать каждый объект JSON, который имеет свой собственный GroupId в свой собственный JSON-файл, например, такой:

"GroupId": "sg-007855ec05ee715d6"

Если я не могу добавить JSON-код для разделения объектов на отдельные JSON-файлы и если возникает ошибкас помощью цикла for при подключении к AWS, как я могу экспортировать каждый объект JSON в отдельные файлы?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...