admin管理员组

文章数量:1289490

Reference : /

Check this answer said : only async lambda execution only work for destination.

Lambda code :

const AWSManager = require('./AWSManager.js');
const request = require('request-promise'); 

exports.handler = async (event, context) => {
  var input = JSON.stringify(event, null, 2);
  console.log(event.region);
  //console.log("EVENT: \n" + JSON.stringify(event, null, 2))
  // TODO implement
  var secret_name, region_name;
  if(event.secretName){
    secret_name= event.secretName;
    region_name = event.region;
    
  }else{
    secret_name= "test/"
    region_name = "us-east-1"
  }
  console.log(secret_name)
  var secret = await AWSManager.getSecret(secret_name)
  //console.log('mysecret: ' + secret )
  var secret_values = JSON.parse(secret);
  //var request = require('request');
  var okta_org_url = secret_values['okta_org_url']
  var okta_token = secret_values['okta_token']
  var api_endpoint = okta_org_url + "api/v1/users?limit=25"
  var options = {
    'method': 'GET',
    'url': api_endpoint,
    'headers': {
       // header information
    }
  };
  var api_response = await request(options).then(res => res).catch(err => err)
 
 
  return {
    "statusCode": 200
  }
};

Code execute properly only SNS destination doesn't work. SNS destination has email protocol subscription for sending email whenever fails.

Reference : https://aws.amazon./blogs/pute/introducing-aws-lambda-destinations/

Check this answer said : only async lambda execution only work for destination.

Lambda code :

const AWSManager = require('./AWSManager.js');
const request = require('request-promise'); 

exports.handler = async (event, context) => {
  var input = JSON.stringify(event, null, 2);
  console.log(event.region);
  //console.log("EVENT: \n" + JSON.stringify(event, null, 2))
  // TODO implement
  var secret_name, region_name;
  if(event.secretName){
    secret_name= event.secretName;
    region_name = event.region;
    
  }else{
    secret_name= "test/"
    region_name = "us-east-1"
  }
  console.log(secret_name)
  var secret = await AWSManager.getSecret(secret_name)
  //console.log('mysecret: ' + secret )
  var secret_values = JSON.parse(secret);
  //var request = require('request');
  var okta_org_url = secret_values['okta_org_url']
  var okta_token = secret_values['okta_token']
  var api_endpoint = okta_org_url + "api/v1/users?limit=25"
  var options = {
    'method': 'GET',
    'url': api_endpoint,
    'headers': {
       // header information
    }
  };
  var api_response = await request(options).then(res => res).catch(err => err)
 
 
  return {
    "statusCode": 200
  }
};

Code execute properly only SNS destination doesn't work. SNS destination has email protocol subscription for sending email whenever fails.

Share Improve this question asked Aug 14, 2020 at 19:28 Avinash DalviAvinash Dalvi 9,3119 gold badges33 silver badges58 bronze badges
Add a ment  | 

1 Answer 1

Reset to default 9

Found answer it was mistake only.

As per explaination given in AWS Lambda w/ SQS trigger, SQS Lambda Destinations, never adds to destination queue is correct only for calling lambda async you have to run different mand. And test input from UI doesn't work like async. It works as sync call.

aws lambda invoke \     
--function-name lambdaname \     
--invocation-type Event \     
--payload '{ "name": "Bob" }' \     
response.json 

Reference : https://docs.aws.amazon./cli/latest/reference/lambda/invoke.html#examples

Here is list call support lambda asynchronously and synchronously:

https://aws.amazon./blogs/architecture/understanding-the-different-ways-to-invoke-lambda-functions/

本文标签: javascriptAWS Lambda SNS Destinations not working on failure or successStack Overflow