From d7e360c1893d8f34b7b29c9c27c8faccc3b25139 Mon Sep 17 00:00:00 2001 From: Mateusz Cholewka Date: Mon, 14 Mar 2022 19:25:54 +0100 Subject: [PATCH 01/18] prepare new application structure --- examples/aws/{sampleApp1 => S3BucketClientApp}/SampleApp1.php | 0 examples/aws/S3BucketClientApp/composer.json | 0 examples/aws/S3BucketClientApp/src/main.php | 3 +++ 3 files changed, 3 insertions(+) rename examples/aws/{sampleApp1 => S3BucketClientApp}/SampleApp1.php (100%) create mode 100644 examples/aws/S3BucketClientApp/composer.json create mode 100644 examples/aws/S3BucketClientApp/src/main.php diff --git a/examples/aws/sampleApp1/SampleApp1.php b/examples/aws/S3BucketClientApp/SampleApp1.php similarity index 100% rename from examples/aws/sampleApp1/SampleApp1.php rename to examples/aws/S3BucketClientApp/SampleApp1.php diff --git a/examples/aws/S3BucketClientApp/composer.json b/examples/aws/S3BucketClientApp/composer.json new file mode 100644 index 00000000..e69de29b diff --git a/examples/aws/S3BucketClientApp/src/main.php b/examples/aws/S3BucketClientApp/src/main.php new file mode 100644 index 00000000..174d7fd7 --- /dev/null +++ b/examples/aws/S3BucketClientApp/src/main.php @@ -0,0 +1,3 @@ + Date: Mon, 14 Mar 2022 19:26:30 +0100 Subject: [PATCH 02/18] add copyrights comment --- examples/aws/S3BucketClientApp/src/main.php | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/examples/aws/S3BucketClientApp/src/main.php b/examples/aws/S3BucketClientApp/src/main.php index 174d7fd7..4eee39df 100644 --- a/examples/aws/S3BucketClientApp/src/main.php +++ b/examples/aws/S3BucketClientApp/src/main.php @@ -1,3 +1,18 @@ Date: Mon, 14 Mar 2022 19:29:18 +0100 Subject: [PATCH 03/18] initalize composer --- examples/aws/S3BucketClientApp/composer.json | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/examples/aws/S3BucketClientApp/composer.json b/examples/aws/S3BucketClientApp/composer.json index e69de29b..b91b89d3 100644 --- a/examples/aws/S3BucketClientApp/composer.json +++ b/examples/aws/S3BucketClientApp/composer.json @@ -0,0 +1,11 @@ +{ + "name": "open-telemetry/s3bucket-client-app", + "type": "application", + "license": "Apache-2.0", + "autoload": { + "psr-4": { + "OpenTelemetry\\S3bucketClientApp\\": "src/" + } + }, + "require": {} +} From c507ed63de6f957fb9216ca6f5f5defb88b17b40 Mon Sep 17 00:00:00 2001 From: Mateusz Cholewka Date: Mon, 14 Mar 2022 19:33:34 +0100 Subject: [PATCH 04/18] add aws sdk dependency --- examples/aws/S3BucketClientApp/composer.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/examples/aws/S3BucketClientApp/composer.json b/examples/aws/S3BucketClientApp/composer.json index b91b89d3..397d9ca3 100644 --- a/examples/aws/S3BucketClientApp/composer.json +++ b/examples/aws/S3BucketClientApp/composer.json @@ -7,5 +7,7 @@ "OpenTelemetry\\S3bucketClientApp\\": "src/" } }, - "require": {} + "require": { + "aws/aws-sdk-php": "^3.213" + } } From 0a58639e7d3a563defc46d51f59f7b3effb40604 Mon Sep 17 00:00:00 2001 From: Mateusz Cholewka Date: Mon, 14 Mar 2022 19:41:13 +0100 Subject: [PATCH 05/18] install otel guzzle and guzzle adapter --- examples/aws/S3BucketClientApp/composer.json | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/examples/aws/S3BucketClientApp/composer.json b/examples/aws/S3BucketClientApp/composer.json index 397d9ca3..c25aeea6 100644 --- a/examples/aws/S3BucketClientApp/composer.json +++ b/examples/aws/S3BucketClientApp/composer.json @@ -2,12 +2,22 @@ "name": "open-telemetry/s3bucket-client-app", "type": "application", "license": "Apache-2.0", + "minimum-stability": "dev", "autoload": { "psr-4": { "OpenTelemetry\\S3bucketClientApp\\": "src/" } }, "require": { - "aws/aws-sdk-php": "^3.213" - } + "aws/aws-sdk-php": "^3.213", + "php-http/guzzle7-adapter": "^1.0", + "open-telemetry/opentelemetry-php-contrib": "dev-main", + "guzzlehttp/guzzle": "^7.4" + }, + "repositories": [ + { + "type": "path", + "url": "../../../" + } + ] } From 1be7cc2612d49423a6b27fe12f5d82c449608cb7 Mon Sep 17 00:00:00 2001 From: Mateusz Cholewka Date: Mon, 14 Mar 2022 22:45:24 +0100 Subject: [PATCH 06/18] add guzzle and require grpc extension in composer --- examples/aws/S3BucketClientApp/composer.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/examples/aws/S3BucketClientApp/composer.json b/examples/aws/S3BucketClientApp/composer.json index c25aeea6..9a5f8454 100644 --- a/examples/aws/S3BucketClientApp/composer.json +++ b/examples/aws/S3BucketClientApp/composer.json @@ -12,7 +12,8 @@ "aws/aws-sdk-php": "^3.213", "php-http/guzzle7-adapter": "^1.0", "open-telemetry/opentelemetry-php-contrib": "dev-main", - "guzzlehttp/guzzle": "^7.4" + "guzzlehttp/guzzle": "^7.4", + "ext-grpc": "*" }, "repositories": [ { From 62cee1ff8ba87502af02420f8ed9529dfc59cb6f Mon Sep 17 00:00:00 2001 From: Mateusz Cholewka Date: Mon, 14 Mar 2022 22:46:07 +0100 Subject: [PATCH 07/18] add app entrypoint --- examples/aws/S3BucketClientApp/bin/app | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 examples/aws/S3BucketClientApp/bin/app diff --git a/examples/aws/S3BucketClientApp/bin/app b/examples/aws/S3BucketClientApp/bin/app new file mode 100644 index 00000000..35879c40 --- /dev/null +++ b/examples/aws/S3BucketClientApp/bin/app @@ -0,0 +1,4 @@ +#!/usr/bin/env php + Date: Mon, 14 Mar 2022 22:46:30 +0100 Subject: [PATCH 08/18] add collector configuration --- examples/aws/collector/config.yaml | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 examples/aws/collector/config.yaml diff --git a/examples/aws/collector/config.yaml b/examples/aws/collector/config.yaml new file mode 100644 index 00000000..6c25efc4 --- /dev/null +++ b/examples/aws/collector/config.yaml @@ -0,0 +1,30 @@ +receivers: + otlp: + protocols: + grpc: + endpoint: 0.0.0.0:4317 + +processors: + batch: + +exporters: + logging: + loglevel: debug + awsxray: + region: 'us-west-2' + awsemf: + region: 'us-west-2' + +service: + pipelines: + traces: + receivers: [otlp] + exporters: [awsxray] + metrics: + receivers: [otlp] + exporters: [awsemf] + + extensions: [pprof] + telemetry: + logs: + level: debug From 0e1fc23566c535f2190b247a9237505916156ba8 Mon Sep 17 00:00:00 2001 From: Mateusz Cholewka Date: Mon, 14 Mar 2022 22:49:47 +0100 Subject: [PATCH 09/18] create application interface --- examples/aws/S3BucketClientApp/src/main.php | 24 +++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/examples/aws/S3BucketClientApp/src/main.php b/examples/aws/S3BucketClientApp/src/main.php index 4eee39df..16b88c45 100644 --- a/examples/aws/S3BucketClientApp/src/main.php +++ b/examples/aws/S3BucketClientApp/src/main.php @@ -16,3 +16,27 @@ */ declare(strict_types=1); + +namespace OpenTelemetry\S3bucketClientApp; + +require __DIR__ . '/../vendor/autoload.php'; + +echo << Date: Mon, 14 Mar 2022 22:50:26 +0100 Subject: [PATCH 10/18] create simple tracer and trace root --- examples/aws/S3BucketClientApp/src/main.php | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/examples/aws/S3BucketClientApp/src/main.php b/examples/aws/S3BucketClientApp/src/main.php index 16b88c45..7726c9e9 100644 --- a/examples/aws/S3BucketClientApp/src/main.php +++ b/examples/aws/S3BucketClientApp/src/main.php @@ -19,6 +19,11 @@ namespace OpenTelemetry\S3bucketClientApp; +use OpenTelemetry\Aws\Xray\IdGenerator; +use OpenTelemetry\Contrib\OtlpGrpc\Exporter as OTLPExporter; +use OpenTelemetry\SDK\Trace\SpanProcessor\SimpleSpanProcessor; +use OpenTelemetry\SDK\Trace\TracerProvider; + require __DIR__ . '/../vendor/autoload.php'; echo <<getTracer(); + +// Create root span +$root = $tracer->spanBuilder('root')->startSpan(); +$root->activate(); + +$root->setAttribute('item_A', 'cars') + ->setAttribute('item_B', 'motorcycles') + ->setAttribute('item_C', 'planes'); +$root->end(); From 71cbb68f5c982b16c2ed2cdffb01af4ff26b31f4 Mon Sep 17 00:00:00 2001 From: Mateusz Cholewka Date: Mon, 14 Mar 2022 22:51:25 +0100 Subject: [PATCH 11/18] create first function of application --- examples/aws/S3BucketClientApp/src/main.php | 35 +++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/examples/aws/S3BucketClientApp/src/main.php b/examples/aws/S3BucketClientApp/src/main.php index 7726c9e9..0700b477 100644 --- a/examples/aws/S3BucketClientApp/src/main.php +++ b/examples/aws/S3BucketClientApp/src/main.php @@ -19,7 +19,12 @@ namespace OpenTelemetry\S3bucketClientApp; +use Aws\Exception\AwsException; +use Aws\S3\S3Client; +use GuzzleHttp\Client; +use OpenTelemetry\API\Trace\SpanKind; use OpenTelemetry\Aws\Xray\IdGenerator; +use OpenTelemetry\Aws\Xray\Propagator; use OpenTelemetry\Contrib\OtlpGrpc\Exporter as OTLPExporter; use OpenTelemetry\SDK\Trace\SpanProcessor\SimpleSpanProcessor; use OpenTelemetry\SDK\Trace\TracerProvider; @@ -50,6 +55,7 @@ $tracerProvider = new TracerProvider([$spanProcessor], null, null, null, $idGenerator); $tracer = $tracerProvider->getTracer(); +$propagator = new Propagator(); // Create root span $root = $tracer->spanBuilder('root')->startSpan(); @@ -59,4 +65,33 @@ ->setAttribute('item_B', 'motorcycles') ->setAttribute('item_C', 'planes'); +$carrier = []; + +if ($line === 'outgoing-http-call') { + $span = $tracer->spanBuilder('session.generate.http.span')->setSpanKind(SpanKind::KIND_CLIENT)->startSpan(); + + $propagator->inject($carrier); + + try { + $client = new Client(); + $client->request('GET', 'https://aws.amazon.com', ['headers' => $carrier, 'timeout' => 2000,]); + } catch (\Throwable $e) { + echo $e->getMessage() . PHP_EOL; + exit(1); + } + + printTraceId($span); + + $span->end(); +} + $root->end(); + +function printTraceId($span): void +{ + $traceId = $span->getContext()->getTraceId(); + $traceIdJson = json_encode([ + 'traceId' => '1-' . substr($traceId, 0, 8) . '-' . substr($traceId, 8), + ]); + echo "Final trace ID: $traceIdJson\n"; +} From 6b65db76dabdcd16ef1cc7350030443833ec0114 Mon Sep 17 00:00:00 2001 From: Mateusz Cholewka Date: Mon, 14 Mar 2022 22:51:51 +0100 Subject: [PATCH 12/18] create sdk call functionality with tracing --- examples/aws/S3BucketClientApp/src/main.php | 36 +++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/examples/aws/S3BucketClientApp/src/main.php b/examples/aws/S3BucketClientApp/src/main.php index 0700b477..5e2f632d 100644 --- a/examples/aws/S3BucketClientApp/src/main.php +++ b/examples/aws/S3BucketClientApp/src/main.php @@ -85,6 +85,42 @@ $span->end(); } +if ($line === 'aws-sdk-call') { + $span = $tracer->spanBuilder('session.generate.aws.sdk.span')->setSpanKind(SpanKind::KIND_CLIENT)->startSpan(); + + $propagator->inject($carrier); + + $s3Client = new S3Client([ + 'profile' => 'default', + 'region' => 'us-west-2', + 'version' => '2006-03-01', + ]); + + try { + $result = $s3Client->createBucket([ + 'Bucket' => 'test-bucket-with-random-name', + ]); + + echo <<getAwsErrorMessage()}"; + } + + $buckets = $s3Client->listBuckets(); + + foreach ($buckets['Buckets'] as $bucket) { + echo $bucket['Name'] . PHP_EOL; + } + + printTraceId($span); + + $span->end(); +} + $root->end(); function printTraceId($span): void From 16d7201f8b9fc79d5a064384cba5b5056abd553e Mon Sep 17 00:00:00 2001 From: Mateusz Cholewka Date: Mon, 14 Mar 2022 22:55:43 +0100 Subject: [PATCH 13/18] create unique bucket name --- examples/aws/S3BucketClientApp/src/main.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/aws/S3BucketClientApp/src/main.php b/examples/aws/S3BucketClientApp/src/main.php index 5e2f632d..c38ec365 100644 --- a/examples/aws/S3BucketClientApp/src/main.php +++ b/examples/aws/S3BucketClientApp/src/main.php @@ -98,7 +98,7 @@ try { $result = $s3Client->createBucket([ - 'Bucket' => 'test-bucket-with-random-name', + 'Bucket' => uniqid('test-bucket-'), ]); echo << Date: Mon, 14 Mar 2022 22:59:21 +0100 Subject: [PATCH 14/18] remove old application file --- examples/aws/S3BucketClientApp/SampleApp1.php | 165 ------------------ 1 file changed, 165 deletions(-) delete mode 100644 examples/aws/S3BucketClientApp/SampleApp1.php diff --git a/examples/aws/S3BucketClientApp/SampleApp1.php b/examples/aws/S3BucketClientApp/SampleApp1.php deleted file mode 100644 index b5dc5f12..00000000 --- a/examples/aws/S3BucketClientApp/SampleApp1.php +++ /dev/null @@ -1,165 +0,0 @@ -addSpanProcessor(new SimpleSpanProcessor($Exporter)) - ->getTracer('io.opentelemetry.contrib.php'); - -// Create a span with the tracer -$span = $tracer->startAndActivateSpan('session.generate.span.' . microtime(true)); - -// Add some dummy attributes to the parent span (also the root span) -$span->setAttribute('item_A', 'cars') -->setAttribute('item_B', 'motorcycles') -->setAttribute('item_C', 'planes'); - -// Create a carrier and map to inject the context of the child span into the carrier -$carrier = []; -$map = new PropagationMap(); - -if ($line === 'outgoing-http-call') { - // Create a child span for http call - // Make an HTTP request to take some time up - // Carrier is injected into the header to simulate a microservice needing the carrier - $childSpan = $tracer->startAndActivateSpan('session.generate.http.span.' . microtime(true), API\SpanKind::KIND_CLIENT); - Propagator::inject($childSpan->getContext(), $carrier, $map); - - try { - $res = $client->request('GET', 'https://aws.amazon.com', ['headers' => $carrier, 'timeout' => 2000,]); - } catch (\Throwable $e) { - echo $e->getMessage() . PHP_EOL; - - return null; - } - - // Format and output the trace Id of the childspan - getTraceId($childSpan); - - $childSpan->end(); -} else { - echo 'The desired function is currently unavailable'; - // // Create a child span for sdk call - // $childSpan = $tracer->startAndActivateSpan('session.generate.aws.sdk.span.' . microtime(true), API\SpanKind::KIND_CLIENT); - // Propagator::inject($childSpan->getContext(), $carrier, $map); - - // // Make a call to aws s3 buckets - // $s3Client = new S3Client([ - // 'profile' => 'default', - // 'region' => 'us-west-2', - // 'version' => '2006-03-01' - // ]); - - // // To create a new bucket uncomment this line - // // createBucket($s3Client, 'testBucket'); - - // $buckets = $s3Client->listBuckets(); - - // foreach ($buckets['Buckets'] as $bucket) { - // echo $bucket['Name'] . "\n"; - // } - - // // Format and output the trace Id of the childspan - // getTraceId($childSpan); - - // $childSpan->end(); -} - -// End both the root span to be able to export the trace -$span->end(); - -echo PHP_EOL . 'Sample App complete!'; -echo PHP_EOL; - -// Get a traceId from a span and prints it -function getTraceId($span) -{ - $traceId = $span->getContext()->getTraceId(); - $xrayTraceId = '1-' . substr($traceId, 0, 8) . '-' . substr($traceId, 8); - echo 'Final trace ID: ' . json_encode(['traceId' => $xrayTraceId]); -} - -// // Function for creating s3 buckets -// function createBucket($s3Client, $bucketName) -// { -// try { -// $result = $s3Client->createBucket([ -// 'Bucket' => $bucketName, -// ]); -// return 'The bucket\'s location is: ' . -// $result['Location'] . '. ' . -// 'The bucket\'s effective URI is: ' . -// $result['@metadata']['effectiveUri']; -// } catch (AwsException $e) { -// return 'Error: ' . $e->getAwsErrorMessage(); -// } -// } From 0c00d9a80cc495c7c0c1b9c5a3dc07a4c5b4ca2f Mon Sep 17 00:00:00 2001 From: Mateusz Cholewka Date: Mon, 14 Mar 2022 23:06:13 +0100 Subject: [PATCH 15/18] add final message --- examples/aws/{S3BucketClientApp => AwsClientApp}/bin/app | 0 .../aws/{S3BucketClientApp => AwsClientApp}/composer.json | 0 examples/aws/{S3BucketClientApp => AwsClientApp}/src/main.php | 4 +++- 3 files changed, 3 insertions(+), 1 deletion(-) rename examples/aws/{S3BucketClientApp => AwsClientApp}/bin/app (100%) rename examples/aws/{S3BucketClientApp => AwsClientApp}/composer.json (100%) rename examples/aws/{S3BucketClientApp => AwsClientApp}/src/main.php (98%) diff --git a/examples/aws/S3BucketClientApp/bin/app b/examples/aws/AwsClientApp/bin/app similarity index 100% rename from examples/aws/S3BucketClientApp/bin/app rename to examples/aws/AwsClientApp/bin/app diff --git a/examples/aws/S3BucketClientApp/composer.json b/examples/aws/AwsClientApp/composer.json similarity index 100% rename from examples/aws/S3BucketClientApp/composer.json rename to examples/aws/AwsClientApp/composer.json diff --git a/examples/aws/S3BucketClientApp/src/main.php b/examples/aws/AwsClientApp/src/main.php similarity index 98% rename from examples/aws/S3BucketClientApp/src/main.php rename to examples/aws/AwsClientApp/src/main.php index c38ec365..7652fdc1 100644 --- a/examples/aws/S3BucketClientApp/src/main.php +++ b/examples/aws/AwsClientApp/src/main.php @@ -32,7 +32,7 @@ require __DIR__ . '/../vendor/autoload.php'; echo <<end(); +echo 'Aws Client App complete!'; + function printTraceId($span): void { $traceId = $span->getContext()->getTraceId(); From c3645668875b94f67af0cffb348a95713384332b Mon Sep 17 00:00:00 2001 From: Mateusz Cholewka Date: Mon, 14 Mar 2022 23:06:46 +0100 Subject: [PATCH 16/18] add EOL for final message --- examples/aws/AwsClientApp/src/main.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/aws/AwsClientApp/src/main.php b/examples/aws/AwsClientApp/src/main.php index 7652fdc1..8ba467b4 100644 --- a/examples/aws/AwsClientApp/src/main.php +++ b/examples/aws/AwsClientApp/src/main.php @@ -123,7 +123,7 @@ $root->end(); -echo 'Aws Client App complete!'; +echo "Aws Client App complete!\n"; function printTraceId($span): void { From ae1b284d819dcf0a9affa5572fe6c7f52eb6ed69 Mon Sep 17 00:00:00 2001 From: Mateusz Cholewka Date: Mon, 14 Mar 2022 23:11:45 +0100 Subject: [PATCH 17/18] fix collector config --- examples/aws/collector/config.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/examples/aws/collector/config.yaml b/examples/aws/collector/config.yaml index 6c25efc4..6c5b5c13 100644 --- a/examples/aws/collector/config.yaml +++ b/examples/aws/collector/config.yaml @@ -24,7 +24,6 @@ service: receivers: [otlp] exporters: [awsemf] - extensions: [pprof] telemetry: logs: level: debug From a2d81b6d16ae5d8582767e689fd678ad7ce1edb7 Mon Sep 17 00:00:00 2001 From: Mateusz Cholewka Date: Mon, 14 Mar 2022 23:12:37 +0100 Subject: [PATCH 18/18] update examples readme for first app --- examples/aws/README.md | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/examples/aws/README.md b/examples/aws/README.md index 6602badf..b1884d54 100644 --- a/examples/aws/README.md +++ b/examples/aws/README.md @@ -11,7 +11,7 @@ This is a getting started guide for the example applications found in the AWS co Currently, the ability to instrument an application automatically does not exist, so manually instrumenting the apps was necessary. In both of the applications, creation of a tracer, generation of spans, propagation of contexts, and closing spans was implemented manually. Both of these applications are console applications that export trace data to the OTEL Collector which is then exported to AWS X-Ray. -### Sample App 1 +### Aws Client App The first sample app in its implementation is creation of a span, then a child span, which is then populated in an HTTP header that makes a request to either aws.amazon.com (http://aws.amazon.com/) or the AWS SDK. The application will prompt you for input on which action you would like to take, and subsequently prints out the trace ID. @@ -90,8 +90,6 @@ At this point all necessary items have been installed in your system and you are ### Run Collector -Open a new terminal window and navigate into the aws-otel-collector folder. - Run the following command. Make sure to replace `YOUR_ACCESS_KEY_HERE` and `YOUR_SECRET_ACCESS_KEY_HERE` with your own specific keys. ```console @@ -99,30 +97,35 @@ docker run --rm -p 4317:4317 -p 55681:55681 -p 8889:8888 \ -e AWS_REGION=us-west-2 \ -e AWS_ACCESS_KEY_ID=YOUR_ACCESS_KEY_HERE \ -e AWS_SECRET_ACCESS_KEY=YOUR_SECRET_ACCESS_KEY_HERE \ - -v "${PWD}/examples/docker/config-test.yaml":/otel-local-config.yaml \ + -v "${PWD}/examples/aws/collector/config.yaml":/otel-local-config.yaml \ --name awscollector public.ecr.aws/aws-observability/aws-otel-collector:latest \ --config otel-local-config.yaml ``` In another terminal window, navigate to the opentelemetry-php-contrib folder. -Run the following command for Sample App 1: +To run `AwsClientApp`, navigate to `examples/aws/AwsClientApp`, then install required dependencies: + +``` +composer install +``` + +And run the following command: -`php examples/aws/SampleApp1/SampleApp1.php` +`php bin/app` The output for this app should look similar to the following: ```console -Starting Sample App -Which call would you like to make? +Starting Aws Client App + +Which call would you like to make? Type outgoing-http-call or aws-sdk-call outgoing-http-call -Final trace ID: {"traceId":"1-6115648a-d40b50a270b3c1249bcf60c2"} -Sample App complete! +Final trace ID: {"traceId":"1-622fb9fb-1b2031fcde9ac72610b6a0b9"} +Aws Client App complete! ``` -Currently the `aws-sdk-call` option is commented out. This is due to dependency conflicts between AWS and the PHP Library. If you would like to enable it, follow the instructions in the comments of the SampleApp1.php file. - Run the following command for Sample App 2: `php examples/aws/SampleApp2/SampleApp2.php`