Я пытался разделить код 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 в отдельные файлы?