2016-12-21 2 views
0

그래서이 람다 함수를 만들었고 그 함수에서 나는 dynamoDB의 사용자 테이블에 사용자를 생성하는 if 문을 만들었습니다. 어떻게하면 안드로이드에서 내 람다 함수의 if 문이라고 부를 수 있을까요? 내가 AWS 및 새로운 오전안드로이드에서 람다 함수를 호출하는 방법은 무엇입니까?

public interface MyInterface { 

     /** 
     * Invoke lambda function "echo". The function name is the method name 
     */ 
     @LambdaFunction 
     String user(String userEmail); 

     /** 
     * Invoke lambda function "echo". The functionName in the annotation 
     * overrides the default which is the method name 
     */ 
     @LambdaFunction(functionName = "myUserAPiFxnName") 
     void noUser(NameInfo nameInfo); 
    } 

을 : 여기

내 람다 함수

exports.handler = function(event, context) 
{ 
    console.log('stageA'); 
    console.log(JSON.stringify(event, null, ' ')); 
    var responseCode = 200; 
    var userTableName = "usersTable"; 
    var requestBody = event.body; 
    var pathParams = event.path; 
    var httpMethod = event.httpMethod; // HTTP Method (e.g., POST, GET, HEAD) 
    //User parameters 
    var displayName; 
    var email; 
    var fbUserID; 
    var firstName; 
    var folders; 
    var lastName; 
    var origin; 
    var profileImageRef; 
    var level; 
    var username; 
    var birthdate; 
    var experience; 
    var folder; 


    if (pathParams == "/user/createByEmail" && httpMethod == "POST") 
    { 
     console.log('create by email action'); 
     requestBody = JSON.parse(requestBody); 
     //Set variables 
     firstName = requestBody.firstName; 
     lastName = requestBody.lastName; 
     email = requestBody.email; 
     username = requestBody.username; 
     experience = "0"; 
     birthdate = requestBody.birthdate; 

     dynamodb.putItem(
      { 
       "TableName": userTableName, 
       "Item" : 
       { 
        "displayName":{"S": username}, 
        "email":{"S": email}, 
        "firstName" : {"S" : firstName}, 
        "folderNames" : {"M" : { 
         "My Cards": {"N": "0" } 
            } }, 
        //"folders" : {"M" : {"My Cards": {}}}, 
        "lastName" : {"S" : lastName}, 
        "experience" : {"N" : experience}, 
        "username": {"S": username}, 
        "birthdate": {"S": birthdate} 
       } 
      }, 
      function(err, data) 
      { if (err) { 
        console.log(err); 
        context.done(err); 
       } else { 
        var response = 
        { 
         statusCode: responseCode, 
         headers: 
         { 
          "x-custom-header" : "custom header value" 
         }, 
         body: JSON.stringify(username) 
        }; 
        console.log('great success: %j',data); 
        context.succeed(response); 
       } 
      }); 
    } 

그리고 안드로이드에, 난 함수를 내 람다 호출하는 AsyncTask를 호출 할 것이다 인터페이스를 만든 것입니다 람다, 그리고 정말로 당신의 가이드에 대한 희망. 나는이 편지를 쓰고 있는지 잘 모르겠다. 누군가가 단계별로 명확한 방법을 가지고 있기를 희망한다.

건배!

+0

저에게 javascript처럼 보입니다. 아니 람다 함수 –

+0

람다에서 당신은 자바, 자바 스크립트, 파이썬을 사용할 수 있습니다 – TheQ

+0

함수를 작성하는 자바 스크립트를 사용하고 지금 생각해. NET을, 또는 다른 건 당신이 50mb 페이로드에 맞출 수 있고 그 중 하나에서 실행 (루비, 가서 , etc는 zip에 포함되어 실행될 수 있습니다.) –

답변

0

마치 Cognito를 사용하여 사용자 ID를 IAM 역할에 매핑하여 임시 액세스 권한을 제공하여 함수를 직접 호출하는 것처럼 보입니다. 프로덕션에서는 Cognito를 사용하지 않고 Android는 개발하지 않지만 내 Cognito는 두 가지 작업을 수행합니다. 하나는 여러 페더레이션 ID 서비스 (Facebook, Google, SAML, OATH2 등)로 인증 및 권한 부여를 제공하고 두 가지는 사용자 액세스 모델을 제공하므로 직접 프로그래밍하지 않아도됩니다. ID 서비스에서 displayName, email, birthdate를 가져올 수 있으며 로그인을 처리 할 필요가 없습니다. 프로그램을 만드는 곳으로 곧장 갈 수 있습니다.

ID 풀을 Cognito에 구성하고 일부 ID 제공자를 연결하고 ID 공급자의 api를 호출 한 다음 AWS를 호출합니다. 마지막으로, 응용 프로그램은 작성한 람다 함수를 호출 할 수 있습니다.

안드로이드에 대한 정보를 모르는 경우, 이미 액세스 할 수있는 사용자 ID가있을 것입니다. 아마 Google ID입니다.

+0

예, 이미 사용자가 작동하고 사용자를 생성하는 Cognito가 있지만 dynamoDB에 사용자 테이블을 추가하거나 수정하거나 데이터를 가져오고 싶습니다. 응용 프로그램 -> lambda -> dynamoDB에서 데이터를 가져오고 그 반대의 경우 데이터를 가져옵니다. – TheQ

+0

은 람다 API를 호출하여 람다를 실행합니다. 인지 풀은 람다에 대한 액세스 권한을 가져야하며 사용자에 대한 충분한 정보는 컨텍스트 매개 변수를 통해 람다에 노출되어 누구인지 파악해야합니다. –

+0

사용자를위한 것이 아닙니다. 안드로이드에서 "car"객체를 만든 다음이를 저장하고 dynamoDB에서 가져 오려면 어떻게 수행 할 것인가? 기본적으로, 나는 푸시 방법 (위와 같이)에서 람다 함수에서 로직을 보내고 싶습니다. android에서 람다 함수 푸시 메소드를 호출하십시오. – TheQ

관련 문제