Skip to content

Commit

Permalink
CSHARP-4127: Language specific examples for AWS Lambda.
Browse files Browse the repository at this point in the history
  • Loading branch information
DmitryLukyanov committed Apr 25, 2022
1 parent dbea92c commit d793050
Show file tree
Hide file tree
Showing 2 changed files with 87 additions and 0 deletions.
85 changes: 85 additions & 0 deletions tests/MongoDB.Driver.Examples/AwsLambda/AwsLambdaExamples.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
/* Copyright 2010-present MongoDB Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

#if NETCOREAPP3_1_OR_GREATER
using Amazon.Lambda.Core;
using MongoDB.Driver;
using System;

// Assembly attribute to enable the Lambda function's JSON input to be converted into a .NET class.
[assembly: LambdaSerializer(typeof(Amazon.Lambda.Serialization.SystemTextJson.DefaultLambdaJsonSerializer))]

namespace LambdaTest
{
public class ShareMongoClientLambdaHandler
{
// Start AWS Lambda Example 1
private static MongoClient MongoClient { get; set; }
private static MongoClient CreateMongoClient()
{
var mongoClientSettings = MongoClientSettings.FromConnectionString($"<MONGODB_URI>");
return new MongoClient(mongoClientSettings);
}

public ShareMongoClientLambdaHandler()
{
MongoClient = CreateMongoClient();
}

public string HandleRequest(ILambdaContext context)
{
var databases = MongoClient.ListDatabaseNames();
return string.Join(",", databases);
}
// End AWS Lambda Example 1
}

public class ConnectUsingAwsIamAuthenticatorLambdaHandler
{
private static MongoClient MongoClient { get; set; }
private static MongoClient CreateMongoClient()
{
// Start AWS Lambda Example 2
string username = Environment.GetEnvironmentVariable("AWS_ACCESS_KEY_ID");
string password = Environment.GetEnvironmentVariable("AWS_SECRET_ACCESS_KEY");
string awsSessionToken = Environment.GetEnvironmentVariable("AWS_SESSION_TOKEN");

var awsCredentials =
new MongoCredential("MONGODB-AWS", new MongoExternalIdentity(username), new PasswordEvidence(password))
.WithMechanismProperty("AWS_SESSION_TOKEN", awsSessionToken);

var mongoUrl = MongoUrl.Create($"<MONGODB_URI>");

var mongoClientSettings = MongoClientSettings.FromUrl(mongoUrl);
mongoClientSettings.Credential = awsCredentials;
mongoClientSettings.ServerApi = new ServerApi(ServerApiVersion.V1, strict: true);

return new MongoClient(mongoClientSettings);
// End AWS Lambda Example 2
}

public ConnectUsingAwsIamAuthenticatorLambdaHandler()
{
MongoClient = CreateMongoClient();
}

public string HandleRequest(ILambdaContext context)
{
var databases = MongoClient.ListDatabaseNames();
return string.Join(",", databases);
}
}
}
#endif
2 changes: 2 additions & 0 deletions tests/MongoDB.Driver.Examples/MongoDB.Driver.Examples.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,8 @@
<PackageReference Include="xunit" Version="2.4.0" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.0" />
<PackageReference Include="JunitXml.TestLogger" Version="2.1.81" />
<PackageReference Include="Amazon.Lambda.Core" Version="2.1.0" />
<PackageReference Include="Amazon.Lambda.Serialization.SystemTextJson" Version="2.2.0" />
</ItemGroup>

<ItemGroup>
Expand Down

0 comments on commit d793050

Please sign in to comment.