PlayFab에서 대기열을 통해 Azure Function 실행

개시하다


PlayFab에서는 Cloud Script를 사용하여 서버 측에서 임의의 코드를 실행할 수 있습니다.원래 플레이 페이브 쪽에서는 클라우드 스크립트 전용 자체 제작 코드만 실행할 수 있었지만, 2020년 2월에는 애저펀션이 만든 함수를 클라우드 스크립트의 스크립트로 실행할 수 있었다.아직 미리보기지만
통신 인상은 이렇다.①~④ 순으로 동시 통신하다.
Cloud Script 通信イメージ
그러나 애저펀션 측 처리에 시간이 걸리거나 호출 횟수가 매우 많은 경우 플레이 팹과 애저펀션 사이에 애저 스토어 쿼(큐)가 끼어 있다고 가정하면 전체적인 처리 효율이 좋아질 수 있다.PlayFab은 Cloud Script의 실행 시간이 제한되어 있기 때문에 피하는 데도 사용할 수 있습니다.
Queueを使用した通信イメージ
이 글에는 Azure Function을 큐로 실행하는 방법이 기술되어 있습니다.

전제 지식


다음 구조의 기본 내용을 알면 문제없다고 생각합니다.
  • PlayFab
  • Azure Functions
  • Azure Storage
  • 절차.


    준비


    PlayFab에서 미리 제목을 만듭니다.
    タイトルの様子

    1. 대기열 저장 제작


    [1] Azure에서 스토리지 계정을 만들 수 없으면 새 스토리지 계정을 생성합니다.참조: 스토리지 계정 만들기:경로 숨기기
    【2】 메모리 계정의 연결 문자열을 보존한다.Azure Portal에서 확인할 때는 옆쪽 메뉴의 [액세스 키]를 선택하고 [버튼 표시] 버튼을 클릭하여 확인합니다.이 연결 문자열은 잠시 후에 사용됩니다.
    ストレージアカウントの接続文字列
    【3】새로운 클럽을 만든다.Azure Portal에서 제작할 때 옆 메뉴의 '대기열' 을 선택하고 '+ 대기열' 단추를 누르면 대기열의 새 화면을 볼 수 있습니다.여기에 예를 들어 대기열의 이름을'request-test'라고 부른다.이름을 입력한 후 OK 버튼을 클릭합니다.
    キューの作成

    2. 함수 생성


    [1] Azure Function 환경 변수에 방금 제어한 스토리지 계정의 연결 문자열을 추가합니다.Azure Portal의 경우 옆쪽 메뉴에서 구조를 선택하고 + 신규 애플리케이션 설정 버튼을 클릭하면 새로운 환경 변수의 추가 화면이 나타납니다.(C# 실행 시 + 새 연결 문자열 버튼)그러나 아래 캡처한 바와 같이 초기 상태에서'AzureWebJobsStorage'라는 변수가 존재할 때 연결 문자열은 이미 이 변수에 저장되어 있을 수 있으며 값을 확인한 후 같으면 더 이상 추가할 필요가 없다.
    Azure Functions 環境変数
    [2] Azure Function을 사용하여 새 함수를 생성합니다.이때 트리거는 HTTP 트리거가 아니라 Queue 트리거입니다.참조: Azure Function을 트리거하는 Azure Que store
    제작 방법에 관해서는 개발 환경에 따라 여러 가지가 있기 때문에 사랑을 끊는다.예를 들어 파이톤을 실행 시간으로 제작한 경우function.json 파일의 내용은 다음과 같다.
    function.json
    {
        "scriptFile": "__init__.py",
        "bindings": [
            {
                "name": "msg",
                "type": "queueTrigger",
                "direction": "in",
                "queueName": "request-test",
    	    "connection": "ストレージアカウント接続文字列を格納した環境変数名"
            }
        ]
    }
    
    queueName에는 방금 만든 대열의 이름을 먼저 적는다.connection에 메모리 계정 연결 문자열의 환경 변수 이름을 미리 입력하십시오.그러나 환경 변수의 이름이 "AzureWebJobsStorage"인 경우 키connection를 생략할 수 있습니다.
    【3】 함수의 내용을 인코딩한다.예를 들어, Python의 코드는 다음과 같습니다.
    __init__.py
    import json
    import azure.functions as func
    
    
    def main(msg: func.QueueMessage):
        """ メイン処理
        """
    
        message = msg.get_body().decode('utf-8')
        logging.info('[Message]' + message)
    
        data = json.loads(message) # ここで、dataの中には、PlayFabのメタデータや、Cloud Script呼び出し時のパラメータが格納されている
    
    【4】 함수를 추출한다.

    3. Cloud Script 로그인


    【1】PlayFab 제목 페이지에서 측면 메뉴의 자동화를 선택하고 Function(미리보기)을 선택합니다.그런 다음 오른쪽 위에 있는 등록 함수 버튼을 클릭합니다.
    関数一覧
    [2] 트리거 유형으로 "Queue"를 선택합니다.함수 이름의 임의의 이름을 입력합니다.대기열 이름 새로 만든 대기열의 이름을 입력합니다.연결 문자열에 미리 설정된 연결 문자열을 붙여넣습니다.입력이 완료되면 "등록 함수"단추를 누르십시오.
    関数登録

    4. 완성


    이상은 숙제 완성입니다.실제로 Cloud Script를 호출하면 수백 밀리초 동안 응답할 수 있습니다.그러나 회신을 할 때도 Azure Function 처리가 완료된다는 보증 없이 순서대로 대기열에서 요청을 꺼내 처리했다.

    보태다


    큐를 사용하지 않으면 Cloud Script가 동기화되므로 Azure Function의 응답을 직접 받을 수 있습니다.그러나 큐를 사용할 때 Cloud Script의 응답에는 Azure Function의 응답이 포함되어 있지 않으므로 처리 결과를 받아들이려면 구조를 따로 고려해야 합니다.

    좋은 웹페이지 즐겨찾기