Skip to content

Latest commit

 

History

History
44 lines (37 loc) · 1.29 KB

lambda.md

File metadata and controls

44 lines (37 loc) · 1.29 KB

lambda

Invoke lambda directly

public async Task<InvokeResponse> InvokeCreateConsignmentLambda(string orderId, 
    OrderDelivery orderDelivery)
{
    var assumeRoleResponse = await GetAssumedRole();
    var lambdaClient = new AmazonLambdaClient(assumeRoleResponse.Credentials);
    var invokeRequest = new InvokeRequest
    {
        InvocationType = InvocationType.RequestResponse,
        FunctionName = "create-consignment",
        Payload = JsonSerializer.Serialize(new CreateConsignmentRequest
        {
            OrderId = orderId,
            Deliveries = new []{ orderDelivery }
        })
    };

    return await lambdaClient.InvokeAsync(invokeRequest);
}

private async Task<AssumeRoleResponse> GetAssumedRole()
{
    var stsClient = new AmazonSecurityTokenServiceClient(RegionEndpoint.EUWest1);
    var assumeRoleResponse = await stsClient.AssumeRoleAsync(new AssumeRoleRequest
    {
        RoleArn = OpsPipelineTestRoleArn, 
        RoleSessionName = "awssdk"
    });

    var stsClient2 = new AmazonSecurityTokenServiceClient(assumeRoleResponse.Credentials);
    var assumeRoleResponse2 = await stsClient2.AssumeRoleAsync(new AssumeRoleRequest
    {
        RoleArn = ConsignmentPipelineTestRoleArn, 
        RoleSessionName = "awssdk2"
    });

    return assumeRoleResponse;
}