AWS Lambda function created in PHP that once triggered, moves a message from SQS into DynamoDB.
serverless.yml
for other versions)Clone this repo from GitHub, and navigate into the newly created directory to proceed.
This example requires the use of Composer to install dependencies and set up the autoloader.
Assuming a Composer global installation. https://getcomposer.org/doc/00-intro.md#globally
composer install
You will need to create AWS credentials as indicated by Serverless
.
Also, create a new SQS queue using the default settings. Make note of the ARN for later use.
Lastly, create a new DynamoDB table using the default settings. Make note of the table name and ARN for later use.
Note: Ensure the primary key field name you set for the DynamoDB table matches the message ID in your SQS queue items. For this example we used
messageId
.
Rename the provided config.yml.dist
file to config.yml
and update the values as needed from AWS
and DynamoDB
, then save.
AWS_REGION: us-east-1
AWS_VERSION: latest
AWS_DYNAMODB_TABLE_NAME:
AWS_SQS_ARN:
AWS_DYNAMODB_TABLE_ARN:
With all the above updated successfully, you can now use Serverless
to deploy the app to AWS Lambda.
serverless deploy
If there are already messages in SQS, you can test the migration of these from SQS
to DynamoDB
by invoking the function by using Serverless
locally:
serverless invoke -f sqstodynamo
Note: Above shows the use of function name
sqstodynamo
as specified in the defaultserverless.yml
in this example.
For testing, you can add messages to SQS
through the AWS Console
website, or you can look at this repo for an example of how to add SQS
messages through a typical HTTP POST
request containing JSON
.
To automate the usage of this function, you can add the newly created Lambda
as a Lambda Trigger for your SQS
instance.
By adding the trigger, it ensures that any new SQS
messages call the Lambda
function to automatically move the message to DynamoDB
, therefore, removing the message from SQS
.
We love questions, comments, issues - and especially pull requests. Either open an issue to talk to us, or reach us on twitter: https://twitter.com/VonageDev.