Chilkat Online Tools

DescribeInstances delphiAx Example

AWS OpsWorks

var
rest: TChilkatRest;
success: Integer;
authAws: TChilkatAuthAws;
json: TChilkatJsonObject;
sbRequestBody: TChilkatStringBuilder;
sbResponseBody: TChilkatStringBuilder;
respStatusCode: Integer;
jResp: TChilkatJsonObject;
AgentVersion: WideString;
AmiId: WideString;
Architecture: WideString;
Arn: WideString;
AutoScalingType: WideString;
AvailabilityZone: WideString;
CreatedAt: WideString;
EbsOptimized: Integer;
Ec2InstanceId: WideString;
EcsClusterArn: WideString;
EcsContainerInstanceArn: WideString;
ElasticIp: WideString;
Hostname: WideString;
InfrastructureClass: WideString;
InstallUpdatesOnBoot: Integer;
InstanceId: WideString;
InstanceProfileArn: WideString;
InstanceType: WideString;
LastServiceErrorId: WideString;
Os: WideString;
Platform: WideString;
PrivateDns: WideString;
PrivateIp: WideString;
PublicDns: WideString;
PublicIp: WideString;
RegisteredBy: WideString;
ReportedAgentVersion: WideString;
Family: WideString;
Name: WideString;
Version: WideString;
RootDeviceType: WideString;
RootDeviceVolumeId: WideString;
SshHostDsaKeyFingerprint: WideString;
SshHostRsaKeyFingerprint: WideString;
SshKeyName: WideString;
StackId: WideString;
Status: WideString;
SubnetId: WideString;
Tenancy: WideString;
VirtualizationType: WideString;
j: Integer;
count_j: Integer;
DeviceName: WideString;
DeleteOnTermination: Integer;
Iops: Integer;
SnapshotId: WideString;
VolumeSize: Integer;
VolumeType: WideString;
NoDevice: WideString;
VirtualName: WideString;
strVal: WideString;
i: Integer;
count_i: Integer;

begin
// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.

rest := TChilkatRest.Create(Self);

authAws := TChilkatAuthAws.Create(Self);
authAws.AccessKey := 'AWS_ACCESS_KEY';
authAws.SecretKey := 'AWS_SECRET_KEY';

// Don't forget to change the region to your particular region. (Also make the same change in the call to Connect below.)
authAws.Region := 'us-west-2';
authAws.ServiceName := 'opsworks';
// SetAuthAws causes Chilkat to automatically add the following headers: Authorization, X-Amz-Date
rest.SetAuthAws(authAws.ControlInterface);

// URL: https://opsworks.us-west-2.amazonaws.com/
// Use the same region as specified above.
success := rest.Connect('opsworks.us-west-2.amazonaws.com',443,1,1);
if (success <> 1) then
  begin
    Memo1.Lines.Add('ConnectFailReason: ' + IntToStr(rest.ConnectFailReason));
    Memo1.Lines.Add(rest.LastErrorText);
    Exit;
  end;

// The following code creates the JSON request body.
// The JSON created by this code is shown below.

// Use this online tool to generate code from sample JSON:
// Generate Code to Create JSON

json := TChilkatJsonObject.Create(Self);
json.UpdateString('InstanceIds[0]','string');
json.UpdateString('LayerId','string');
json.UpdateString('StackId','string');

// The JSON request body created by the above code:

// {
//   "InstanceIds": [
//     "string"
//   ],
//   "LayerId": "string",
//   "StackId": "string"
// }

rest.AddHeader('Content-Type','application/x-amz-json-1.1');
rest.AddHeader('X-Amz-Target','OpsWorks_20130218.DescribeInstances');

sbRequestBody := TChilkatStringBuilder.Create(Self);
json.EmitSb(sbRequestBody.ControlInterface);
sbResponseBody := TChilkatStringBuilder.Create(Self);
success := rest.FullRequestSb('POST','/',sbRequestBody.ControlInterface,sbResponseBody.ControlInterface);
if (success <> 1) then
  begin
    Memo1.Lines.Add(rest.LastErrorText);
    Exit;
  end;
respStatusCode := rest.ResponseStatusCode;
Memo1.Lines.Add('response status code = ' + IntToStr(respStatusCode));
if (respStatusCode <> 200) then
  begin
    Memo1.Lines.Add('Response Header:');
    Memo1.Lines.Add(rest.ResponseHeader);
    Memo1.Lines.Add('Response Body:');
    Memo1.Lines.Add(sbResponseBody.GetAsString());
    Exit;
  end;

jResp := TChilkatJsonObject.Create(Self);
jResp.LoadSb(sbResponseBody.ControlInterface);

// The following code parses the JSON response.
// A sample JSON response is shown below the sample code.

// Use this online tool to generate parsing code from sample JSON:
// Generate Parsing Code from JSON

i := 0;
count_i := jResp.SizeOfArray('Instances');
while i < count_i do
  begin
    jResp.I := i;
    AgentVersion := jResp.StringOf('Instances[i].AgentVersion');
    AmiId := jResp.StringOf('Instances[i].AmiId');
    Architecture := jResp.StringOf('Instances[i].Architecture');
    Arn := jResp.StringOf('Instances[i].Arn');
    AutoScalingType := jResp.StringOf('Instances[i].AutoScalingType');
    AvailabilityZone := jResp.StringOf('Instances[i].AvailabilityZone');
    CreatedAt := jResp.StringOf('Instances[i].CreatedAt');
    EbsOptimized := jResp.IntOf('Instances[i].EbsOptimized');
    Ec2InstanceId := jResp.StringOf('Instances[i].Ec2InstanceId');
    EcsClusterArn := jResp.StringOf('Instances[i].EcsClusterArn');
    EcsContainerInstanceArn := jResp.StringOf('Instances[i].EcsContainerInstanceArn');
    ElasticIp := jResp.StringOf('Instances[i].ElasticIp');
    Hostname := jResp.StringOf('Instances[i].Hostname');
    InfrastructureClass := jResp.StringOf('Instances[i].InfrastructureClass');
    InstallUpdatesOnBoot := jResp.IntOf('Instances[i].InstallUpdatesOnBoot');
    InstanceId := jResp.StringOf('Instances[i].InstanceId');
    InstanceProfileArn := jResp.StringOf('Instances[i].InstanceProfileArn');
    InstanceType := jResp.StringOf('Instances[i].InstanceType');
    LastServiceErrorId := jResp.StringOf('Instances[i].LastServiceErrorId');
    Os := jResp.StringOf('Instances[i].Os');
    Platform := jResp.StringOf('Instances[i].Platform');
    PrivateDns := jResp.StringOf('Instances[i].PrivateDns');
    PrivateIp := jResp.StringOf('Instances[i].PrivateIp');
    PublicDns := jResp.StringOf('Instances[i].PublicDns');
    PublicIp := jResp.StringOf('Instances[i].PublicIp');
    RegisteredBy := jResp.StringOf('Instances[i].RegisteredBy');
    ReportedAgentVersion := jResp.StringOf('Instances[i].ReportedAgentVersion');
    Family := jResp.StringOf('Instances[i].ReportedOs.Family');
    Name := jResp.StringOf('Instances[i].ReportedOs.Name');
    Version := jResp.StringOf('Instances[i].ReportedOs.Version');
    RootDeviceType := jResp.StringOf('Instances[i].RootDeviceType');
    RootDeviceVolumeId := jResp.StringOf('Instances[i].RootDeviceVolumeId');
    SshHostDsaKeyFingerprint := jResp.StringOf('Instances[i].SshHostDsaKeyFingerprint');
    SshHostRsaKeyFingerprint := jResp.StringOf('Instances[i].SshHostRsaKeyFingerprint');
    SshKeyName := jResp.StringOf('Instances[i].SshKeyName');
    StackId := jResp.StringOf('Instances[i].StackId');
    Status := jResp.StringOf('Instances[i].Status');
    SubnetId := jResp.StringOf('Instances[i].SubnetId');
    Tenancy := jResp.StringOf('Instances[i].Tenancy');
    VirtualizationType := jResp.StringOf('Instances[i].VirtualizationType');
    j := 0;
    count_j := jResp.SizeOfArray('Instances[i].BlockDeviceMappings');
    while j < count_j do
      begin
        jResp.J := j;
        DeviceName := jResp.StringOf('Instances[i].BlockDeviceMappings[j].DeviceName');
        DeleteOnTermination := jResp.IntOf('Instances[i].BlockDeviceMappings[j].Ebs.DeleteOnTermination');
        Iops := jResp.IntOf('Instances[i].BlockDeviceMappings[j].Ebs.Iops');
        SnapshotId := jResp.StringOf('Instances[i].BlockDeviceMappings[j].Ebs.SnapshotId');
        VolumeSize := jResp.IntOf('Instances[i].BlockDeviceMappings[j].Ebs.VolumeSize');
        VolumeType := jResp.StringOf('Instances[i].BlockDeviceMappings[j].Ebs.VolumeType');
        NoDevice := jResp.StringOf('Instances[i].BlockDeviceMappings[j].NoDevice');
        VirtualName := jResp.StringOf('Instances[i].BlockDeviceMappings[j].VirtualName');
        j := j + 1;
      end;

    j := 0;
    count_j := jResp.SizeOfArray('Instances[i].LayerIds');
    while j < count_j do
      begin
        jResp.J := j;
        strVal := jResp.StringOf('Instances[i].LayerIds[j]');
        j := j + 1;
      end;

    j := 0;
    count_j := jResp.SizeOfArray('Instances[i].SecurityGroupIds');
    while j < count_j do
      begin
        jResp.J := j;
        strVal := jResp.StringOf('Instances[i].SecurityGroupIds[j]');
        j := j + 1;
      end;

    i := i + 1;
  end;

// A sample JSON response body parsed by the above code:

// {
//   "Instances": [
//     {
//       "AgentVersion": "string",
//       "AmiId": "string",
//       "Architecture": "string",
//       "Arn": "string",
//       "AutoScalingType": "string",
//       "AvailabilityZone": "string",
//       "BlockDeviceMappings": [
//         {
//           "DeviceName": "string",
//           "Ebs": {
//             "DeleteOnTermination": boolean,
//             "Iops": number,
//             "SnapshotId": "string",
//             "VolumeSize": number,
//             "VolumeType": "string"
//           },
//           "NoDevice": "string",
//           "VirtualName": "string"
//         }
//       ],
//       "CreatedAt": "string",
//       "EbsOptimized": boolean,
//       "Ec2InstanceId": "string",
//       "EcsClusterArn": "string",
//       "EcsContainerInstanceArn": "string",
//       "ElasticIp": "string",
//       "Hostname": "string",
//       "InfrastructureClass": "string",
//       "InstallUpdatesOnBoot": boolean,
//       "InstanceId": "string",
//       "InstanceProfileArn": "string",
//       "InstanceType": "string",
//       "LastServiceErrorId": "string",
//       "LayerIds": [
//         "string"
//       ],
//       "Os": "string",
//       "Platform": "string",
//       "PrivateDns": "string",
//       "PrivateIp": "string",
//       "PublicDns": "string",
//       "PublicIp": "string",
//       "RegisteredBy": "string",
//       "ReportedAgentVersion": "string",
//       "ReportedOs": {
//         "Family": "string",
//         "Name": "string",
//         "Version": "string"
//       },
//       "RootDeviceType": "string",
//       "RootDeviceVolumeId": "string",
//       "SecurityGroupIds": [
//         "string"
//       ],
//       "SshHostDsaKeyFingerprint": "string",
//       "SshHostRsaKeyFingerprint": "string",
//       "SshKeyName": "string",
//       "StackId": "string",
//       "Status": "string",
//       "SubnetId": "string",
//       "Tenancy": "string",
//       "VirtualizationType": "string"
//     }
//   ]
// }