diff --git a/apigateway-sns-integration-mapping-template/README.md b/apigateway-sns-integration-mapping-template/README.md new file mode 100644 index 0000000..29b7d82 --- /dev/null +++ b/apigateway-sns-integration-mapping-template/README.md @@ -0,0 +1,26 @@ +## Amazon API Gateway Access Logging Setup + +This snippet assumes that Amazon API Gateway logs requests to Amazon CloudWatch Logs using JSON and the following log format: + +```json +{ +"requestId":"$context.requestId", +"ip": "$context.identity.sourceIp", +"apiKey": "$context.identity.apiKey", +"requestTime":"$context.requestTime", +"httpMethod":"$context.httpMethod", +"routeKey":"$context.routeKey", +"path":"$context.path", +"status": $context.status, +"protocol":"$context.protocol", +"integrationStatus": $context.integrationStatus, +"integrationLatency": $context.integrationLatency, +"responseLatency":$context.responseLatency, +"responseLength": $context.responseLength +} +``` + +You can modify log format to fit your needs (make sure to update code snippet if field names change). + + +See documentation for more details on how to set up API Gateway logging in HTTP (https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-logging.html) and REST (https://docs.aws.amazon.com/apigateway/latest/developerguide/set-up-logging.html) APIs. \ No newline at end of file diff --git a/apigateway-sns-integration-mapping-template/snippet-data.json b/apigateway-sns-integration-mapping-template/snippet-data.json new file mode 100644 index 0000000..d3e569d --- /dev/null +++ b/apigateway-sns-integration-mapping-template/snippet-data.json @@ -0,0 +1,40 @@ +{ + "title": "Mapping template for API Gateway with SNS integration", + "description": "Provides a mapping template for API Gateway and SNS integration", + "type": "Integration", + "services": ["apigw", "sns"], + "tags": [], + "languages": ["vtl"], + "introBox": { + "headline": "How it works", + "text": [ + "This snippet can be used to publish messages to an existing SNS topic.", + "When creating the integration, ensure to have the below configuration to use the mapping template:" + "1. For Path override the value must be given as '/' ", + "2. The header 'Content-Type' should have the value 'application/x-www-form-urlencoded' (include the single quotes in the value)", + "3. IAM role with appropriate sns:publish IAM permission" + ] + }, + "gitHub": { + "template": { + "repoURL": "https://github.com/aws-samples/serverless-snippets/tree/main/apigateway-sns-integration-mapping-template" + } + }, + "snippets": [ + { + "title": "Use the following mapping template", + "snippetPath": "snippet.txt", + "language": "vtl" + } + ], + "authors": [ + { + "headline": "Presented by Pallavi Bhat", + "name": "Pallavi Bhat", + "image": "https://drive.google.com/file/d/1xYr8HfVnLZOMmhAc9hSsyj_O85yyznF7/view?usp=sharing", + "bio": "Pallavi is a Cloud Support Enginner focusing on serverless at Amazon Web Services.", + "linkedin": "https://www.linkedin.com/in/pallavi-bhat11/", + "twitter": "" + } + ] +} \ No newline at end of file diff --git a/apigateway-sns-integration-mapping-template/snippet.txt b/apigateway-sns-integration-mapping-template/snippet.txt new file mode 100644 index 0000000..6463896 --- /dev/null +++ b/apigateway-sns-integration-mapping-template/snippet.txt @@ -0,0 +1,2 @@ +#set($topic="arn:aws:sns:::") +Action=Publish&TopicArn=$util.urlEncode($topic)&Message=$input.json('$') \ No newline at end of file